Integração com PagSeguro

Modificado em Qua, 15 Mai na (o) 9:08 AM


Para utilizar o PagSeguro com sua conta iPag, é necessário gerar um ID de sessão PagSeguro e realizar a tokenização do cartão.

Neste artigo, falaremos sobre como integrar passo-a-passo com exemplos de código.


Para gerar um ID de sessão, utilizaremos o email e o token PagSeguro.

Para fins de exemplo, criamos a função pagsegurosession(), onde as configurações (ambiente, email e token) estão fixas no código.

<?php
public function pagsegurosession() {
  $ambiente = 0; //0 = sandbox, 1 = produção
  $email = 'teste@pagseguro.com.br'
  $token = '1234567890ABCDE1234567890ABCDE'
  $param = "?email=$email&token=$token";

  $url = "https://ws.sandbox.pagseguro.uol.com.br/v2/sessions$param";
  $environment = 'sandbox';
  if ($ambiente) {
    $url = "https://ws.pagseguro.uol.com.br/v2/sessions$param";
    $environment = 'production';
  }
  $opts = array('http' => array('method' => 'POST'));
  $context = stream_context_create($opts);
  $result = file_get_contents($url, false, $context, -1, 40000);
  if ($result) {
    $xml = simplexml_load_string($result, 'SimpleXMLElement', LIBXML_NOERROR);
    $json = json_decode(json_encode($xml), true);
    $id = array_shift($json);
    return $id;
  } else {
    return false;
  }
}


O ID da sessão é utilizado tanto para o cálculo do token do cartão de crédito quanto no envio para o iPag.

No exemplo abaixo, o pagsegurosession gerado anteriormente é utilizado na geração do token.

Note que as chamadas de jQuery correspondem as informações do cartão de crédito nos inputs correspondentes:

$j('#cartao_cc_cid').val();

<input type="text" title="Card Verification Number" id="cartao_cc_cid" name="payment[cc_cid]" value="" maxlength="3" autocomplete="off"/>


<script>
var $j = jQuery.noConflict();
callPagSeguro = function() {
  var session = "<?php echo $this->pagsegurosession(); ?>";
  var cid = $j('#cartao_cc_cid').val();
  var number = $j('#cartao_cc_number').val();
  var month = $j('#cartao_expiration').val();
  var year = $j('#cartao_expiration_yr').val();
  var type = getCheckedRadioId('payment[cartao_type]');
  var idToken = $j('#cartao_tokenpagseguro');
  var idHash = $j('#cartao_hashpagseguro');
  tokenPagseguro(session,number,month,year,type,cid,idToken,idHash);
}

checkLength = function (obj, size) {
  return (obj && obj.length > size);
}

validaPagSeguro = function() {
  var cid = $j('#cartao_cc_cid').val();
  var number = $j('#cartao_cc_number').val();
  var month = $j('#cartao_expiration').val();
  var year = $j('#cartao_expiration_yr').val();
  var type = getCheckedRadioId('payment[cartao_type]');
  if(checkLength(cid,2) && checkLength(number,10) && checkLength(month,0) && checkLength(year,0) && checkLength(cid,2)){
    callPagSeguro();
  }
}

$j(document).ready(function(){
  $j('#cartao_cc_cid').keyup(function(){validaPagSeguro()});
  $j('#cartao_cc_number').keyup(function(){validaPagSeguro()});
  $j('#cartao_expiration').change(function(){validaPagSeguro()});
  $j('#cartao_expiration_yr').change(function(){validaPagSeguro()});
});

function tokenPagseguro(session, number, month, year, type, cvv, idToken, idHash) {
    PagSeguroDirectPayment.setSessionId(session);

    PagSeguroDirectPayment.createCardToken({
        cardNumber: number,
        brand: type,
        cvv: cvv,
        expirationMonth: month,
        expirationYear: year,
        success: function(callback) {

        },
        error: function(callback) {

        },
        complete: function(callback) {
            idToken.val(callback.card.token);
            idHash.val(PagSeguroDirectPayment.getSenderHash());
        },
    });
}
</script>


Após o preenchimento dos inputs correspondentes (cartao_cc_cid, cartao_cc_number, cartao_expiration, cartao_expiration_yr, payment[cartao_type]), o script altera os valores dos inputs cartao_tokenpagseguro e cartao_hashpagseguro.

Esses valores devem ser enviados para o iPag nos respectivos campos: acquirerToken e fingerprint.


Para que o script anterior funcione, é necessário incluir o JS do PagSeguroDirectPayment.

Esse JS é diferente para os ambientes de sandbox e produção.

No exemplo a seguir, verificamos o ambiente e renderizamos o JS correspondente:

<?php
public function pagsegurojs()
{
  $ambiente = 0; //0 = sandbox, 1 = produção
  $before = '<script type="text/javascript" src="';
  $after = '"></script>';
  if ($ambiente) {
    return $before.'https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js'.$after;
  } else {
    return $before.'https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js'.$after;
  }
}


Configurar a URL de retorno no PagSeguro: https://api.ipag.com.br/service/pagseguroCallback?ipag_id=<login_ipag>


Dúvidas ou Sugestões? Envie um e-mail para suporte@ipag.com.br

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo