-
-
Save guiliredu/d54c91bc0f4ea975172bae4a00f5bca5 to your computer and use it in GitHub Desktop.
<?php | |
$url = 'https://ws.pagseguro.uol.com.br/v2/pre-approvals/request'; | |
$data['email'] = '[email protected]'; | |
$data['token'] = 'TOKEN'; | |
$data['currency'] = 'BRL'; | |
$data['reference'] = $id_cliente; | |
$data['senderName'] = $cliente['nome']; | |
$data['senderEmail'] = $cliente['email']; | |
// $data['senderAreaCode'] = '55'; | |
// $data['senderPhone'] = $cliente['telefone']; | |
// $data['shippingAddressStreet'] = ""; | |
// $data['shippingAddressNumber'] = ""; | |
// $data['shippingAddressPostalCode'] = ""; | |
// $data['shippingAddressCity'] = ""; | |
// $data['shippingAddressState'] = ""; | |
// $data['shippingAddressCountry'] = 'BRA'; | |
$data['redirectURL'] = 'http://seusite.com.br/perfil?pagseguro-ok'; | |
$data['preApprovalCharge'] = 'auto'; | |
$data['preApprovalName'] = 'Assinatura mensal'; | |
$data['preApprovalDetails'] = 'Cobrança de valor mensal para assinatura'; | |
$data['preApprovalAmountPerPayment'] = 199.99; | |
$data['preApprovalPeriod'] = 'MONTHLY'; | |
$data['preApprovalFinalDate'] = '2020-10-17T19:20:30.45+01:00'; | |
$data['preApprovalMaxTotalAmount'] = '999.00'; | |
$data['reviewURL'] = 'http://seusite.com.br.com.br/planos'; | |
$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'){ | |
echo "Unauthorized"; | |
exit(); | |
} | |
curl_close($curl); | |
$xml= simplexml_load_string($xml); | |
if(count($xml->error) > 0){ | |
echo "XML ERRO"; | |
exit(); | |
} | |
header('Location: https://pagseguro.uol.com.br/v2/pre-approvals/request.html?code='.$xml->code); |
<?php | |
// Documentação disponível em: | |
// https://dev.pagseguro.uol.com.br/documentacao/pagamentos/pagamento-padrao | |
// URL DE SANDBOX | |
$url = 'https://ws.sandbox.pagseguro.uol.com.br/v2/checkout'; | |
$data['email'] = '[email protected]'; | |
$data['token'] = 'TOKEN'; | |
$data['currency'] = 'BRL'; | |
$data['itemId1'] = "1"; | |
$data['itemDescription1'] = "Descrição do item/produto"; | |
$data['itemAmount1'] = 199.90; | |
$data['itemQuantity1'] = 1; | |
$data['itemWeight1'] = 0; | |
$data['reference'] = $id_produto; //aqui vai o código que será usado para receber os retornos das notificações | |
$data['senderName'] = "Nome do comprador"; | |
// $data['senderAreaCode'] = ""; | |
// $data['senderPhone'] = ""; | |
$data['senderEmail'] = "[email protected]"; | |
// $data['shippingType'] = ""; | |
// $data['shippingAddressStreet'] = ""; | |
// $data['shippingAddressNumber'] = ""; | |
// $data['shippingAddressComplement'] = ""; | |
// $data['shippingAddressDistrict'] = ""; | |
// $data['shippingAddressPostalCode'] = ""; | |
// $data['shippingAddressCity'] = ""; | |
// $data['shippingAddressState'] = ""; | |
// $data['shippingAddressCountry'] = ""; | |
$data['redirectURL'] = 'http://seusite.com.br/pedido-finalizado'; | |
$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'){ | |
echo "Unauthorized"; | |
exit(); | |
} | |
curl_close($curl); | |
$xml= simplexml_load_string($xml); | |
if(count($xml->error) > 0){ | |
echo "XML ERRO"; | |
exit(); | |
} | |
// Utilize sua lógica para atualizar o pedido com o código da transação, para ser atualizado depois | |
$db->query("UPDATE pedido SET token = '{$xml->code}' WHERE id = $pedido_id"); | |
// Redireciona o comprador para a página de pagamento | |
header('Location: https://sandbox.pagseguro.uol.com.br/v2/checkout/payment.html?code='.$xml->code); |
<?php | |
$code = $_POST['notificationCode']; | |
$type = $_POST['notificationType']; | |
if($type == 'transaction'){ | |
$url = "https://ws.sandbox.pagseguro.uol.com.br/v2/transactions/notifications/".$code."[email protected]&token=TOKEN"; | |
$content = file_get_contents($url); | |
$xml = simplexml_load_string($content); | |
if($xml->status > 3){ | |
$db->query("UPDATE pedido SET status = 2 WHERE token = '{$xml->reference}'"); | |
} | |
} |
Amigo, neste caso o checkout é feito lá no PagSeguro. No código apenas criamos o pedido e geramos a URL de checkout.
Não precisa gerar sessão de pagamento? Nem sender hash?
Não precisa pois não é checkout transparente. Nesse caso a api retorna um link de pagamento que o cliente tem que ser redirecionado. Nesse link ele faz login, informa cartão, etc
Inicialmente parabéns pelo código, muito bom mesmo, já uso em alguns projeto, mas hoje me deparei com, a seguinte situação:
No caso do parâmetro $data['itemDescription1']
como fazer para evitar caracteres estranhos?
Por exemplo: "AquisiÃÃo do plano: BÃsico"
já tentei header('Content-Type: text/html; charset=utf-8');
a página está setada com <meta http-equiv="content-type" content="text/html;charset=utf-8" />
Há algum parâmetro específico para evitar algo do tipo
AquisiÃÃo do plano: BÃsico
e ser Exibido na página de checkout isso:
Aquisição do plano: Básico
Alguém pode me informar como seria para realizar o cancelamento de uma assinatura feita pelo usuário? No caso eu poderia salvar o código que vai na URL gerada, com isso eu já conseguiria realizar o cancelamento?
Desta forma falta enviar o token do cartão. Correto?