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
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo