Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, sei que tem vários tópicos aqui sobre o mesmo assunto. Já li um monte e já tentei um monte de coisas, mas não consigo o retorno dos dados.
- Estou usando a página de redirecionamento dinâmico;
- Já gerei o TOKEN de segurança;
- Já ativei os pagamentos via API;
Requisição de pagamento
<?php
$post_item_id = $_POST['item_id'];
$post_item_descr = $_POST['item_descr'];
$post_item_quant = $_POST['item_quant'];
$post_item_valor = $_POST['item_valor'];
$post_cliente_nome = $_POST['cliente_nome'];
$post_cliente_email = $_POST['cliente_email'];
$post_ref = $_POST['ref'];
$post_id_oferta = $_POST['id_oferta'];
$post_id_cliente = $_POST['id_cliente'];
$post_nome_cupom = $_POST['nome_cupom'];
$post_dtcupom_minima = $_POST['dtcupom_minima'];
$post_dtcupom_maxima = $_POST['dtcupom_maxima'];
$post_valor_real = $_POST['valor_real'];
$post_desconto = $_POST['desconto'];
$post_redurl = 'http://www.dominio.com.br/conta/cupons';
$url = "https://ws.pagseguro.uol.com.br/v2/checkout";
$data['email'] = 'atendimento@.....';
$data['token'] = '2DE7B7B......';
$data['currency'] = 'BRL';
$data['itemId1'] = $post_item_id;
$data['itemDescription1'] = $post_item_descr;
$data['itemAmount1'] = $post_item_valor;
$data['itemQuantity1'] = $post_item_quant;
$data['shippingCost'] = '0.00';
$data['itemWeight1'] = '0';
$data['reference'] = $post_ref;
$data['senderName'] = $post_cliente_nome;
$data['senderEmail'] = $post_cliente_email;
$data['redirectURL'] = $post_redurl;
$data = http_build_query($data);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$xml= curl_exec($curl);
if($xml == 'Unauthorized'){
//Insira seu código de prevenção a erros
mail("suporte@.....","Unauthorized Requisição de pagamento PagSeguro","Deu erro na hora da requisição de pagamento PagSeguro, Unauthorized!");
header('Location: /');
exit;//Mantenha essa linha
}
curl_close($curl);
$xml= simplexml_load_string($xml);
if(count($xml -> error) > 0){
//Insira seu código de tratamento de erro, talvez seja útil enviar os códigos de erros.
mail("suporte@....","Erro Requisição de pagamento PagSeguro","Deu erro na hora da requisição de pagamento do PagSeguro: $xml->error");
header('Location: /');
exit;
}
include('conexao.php');
dbcon();
$cod_transacao = $xml -> code;
mysql_query("INSERT INTO `" . TB_CUPOM . "` VALUE (NULL, '$post_id_oferta', '$post_id_cliente', '1', '$post_item_valor', '$post_valor_real', '$post_desconto', '$post_dtcupom_minima', '$post_dtcupom_maxima', '$cod_transacao', '1', NOW())");
$idcupom_insert = mysql_insert_id();
mysql_query("INSERT INTO `" . TB_CUPOM_IMPRESSO . "` VALUES (NULL, '$idcupom_insert', '$post_id_oferta', '$post_ref', '$post_nome_cupom', 'F')");
header('Location: https://pagseguro.uol.com.br/v2/checkout/payment.html?code=' . $xml -> code);
?>
Retorno
<?php
if(isset($_POST['notificationType']) && $_POST['notificationType'] == 'transaction'){
$email = "atendimento@.......";
$token = "2DE7B7B.......";
$url = "https://ws.pagseguro.uol.com.br/v2/transactions/notifications/" . $_POST['notificationCode'] . "?email=" . $email . "&token=" . $token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$transaction= curl_exec($curl);
curl_close($curl);
if($transaction == 'Unauthorized'){
//Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção
mail("suporte@.....","Unauthorized Retorno PagSeguro","Deu erro na hora do retorno do PagSeguro, Unauthorized!");
exit;//Mantenha essa linha
}
$transaction = simplexml_load_string($transaction);
$transaction = $xml->transaction;
$data = $transaction->date;
$code = $transaction->code;
$status = $transaction->status;
$metodo_pagto = $transaction->paymentMethod->type;
$modo_pagto = $transaction->paymentMethod->code;
$idCompra = $transaction->reference;
$valor = $transaction->grossAmount;
$desconto = $transaction->discountAmount;
$taxasPagSeguro = $transaction->feeAmount;
$valor_liquido = $transaction->netAmount;
$nomeCliente = $transaction->sender->name;
$emailCliente = $transaction->sender->email;
$total = $valor-$desconto;
$array = array(
'idcompra'=>$idCompra,
'valor'=>$valor,
'desconto'=>$desconto,
'taxasPagSeguro'=>$taxasPagSeguro,
'valor_liquido'=>$valor_liquido,
'nomeCliente'=>$nomeCliente,
'emailCliente'=>$emailCliente,
'metodo_pagto'=>$metodo_pagto,
'modo_pagto'=>$modo_pagto,
'status'=>$status,
'data'=>$data,
'code'=>$code,
'transacaoID'=>$notificationType
);
print_r($array);
?>
A requisição de pagamento funciona corretamente. Consigo ver as compras no Pagseguro. Queria o retorno para que a mudança do status ocorra de forma automática, sem que eu precise fazer isso manualmente.
Carregando comentários...