Liên hệ quảng cáo

Liberação de Download Automático após Pagamento via Pagseguro




Liberação de Download Automático após Pagamento via Pagseguro

Rate this post
Liberação de Download Automático após Pagamento via Pagseguro
O Pagseguro possui uma série de ferramentas e recursos úteis para quem vende algo na internet e aceita esta forma de pagamento. Dentre os recursos que estão disponíveis, um bem interessante é a API. Através da Api é possível você consultar o andamento de uma compra, saber se o pagamento foi aprovado (dinheiro caiu na conta), e pegar qualquer informação tanto da compra como do comprador.
Neste artigo vou mostrar passo a passo todo o processo para fazer um sisteminha básico que reconhece quando o pagamento é liberado e libera acesso ao usuário a uma área restrita onde haverá disponível informações que ele adquiriu. Vamos lá:
1- Pra começar, você precisa configurar sua conta para SOMENTE receber pagamentos via API. Esse é um requisito obrigatório, o ruim é que pagamentos via botões gerados no pagseguro, ao que tudo indica, pararão de funcionar como esperado. Quem sabe no futuro o pessoal que cuida do Pagseguro não melhore o sistema e disponibilize as duas opções paralelas, rezemos para isso, rs. Enquanto isso não ocorre temos que fazer o seguinte, faça login em sua conta do pagseguro, na área restrita clique em Integrações e nas subopções clique em Pagamentos via API. Lá embaixo você deve marcar a opção “Quero receber somente pagamentos via API”, faça isso e confirme quando aparecer a janela de confirmação.
2- O próximo passo é gerar um token, esse token é nada mais nada menos que um código secreto de segurança que será utilizado por você para interagir com sua conta. Pense nele como sendo um substituto para sua senha, então não revele esse código token para ninguém. Para gerar um token, ainda no seu painel do pagseguro, também em Integrações, clique em “TOken de Segurança”. Em seguida vai aparecer uma tela com um botão “Gerar novo TOken”, clique sobre ele e aguarde o sistema gerar seu token. Seu token vai ser um código alfanumérico, algo do tipo: “4CDDdas5f1asd555asd5”, copie esse código e anote-o em algum lugar seguro pois precisará dele futuramente. Ah, se você não notou, você pode mudar seu código token sempre quando necessitar, porém ao gerar um novo código token, o antigo deixa de funcionar, ou seja, caso tenha algum sistema configurado com o código antigo, terá que atualizar o código token no script para que ele continue funcionando sem problemas.
3- Com o código token em mãos você pode partir para a programação, porém antes disso vejamos como será o processo de compra do usuário:
a) Usuário se cadastra em teu site, nesta hora você deve pegar todos os dados necessários como nome, email, senha, endereço para entrega, cep, cidade, estado, etc…
b) O usuário clica no botão comprar, esse deve ser um botão que você criou manualmente e que direciona o usuário para o script integrado com a api do pagseguro.
c) Seu script pega os dados do usuário que deveriam estar no banco de dados e invoca a api do Pagseguro. Veja uma idéia de script PHP que interage com a Api do Pagseguro através da Função Curl:
[php]
$url = "https://ws.pagseguro.uol.com.br/v2/checkout/";
//dados do vendedor
$token = ‘4CDDdas5f1asd555asd5’;
$email_vendedor = "seu@email.aqui";
//dados do produto
$nome_produto = "Curso Esperanto no formato PDF";
$valor_produto = "50.00";
$peso_produto = "1";
//dados do comprador
$nome_comprador = "Nome do Comprador";
$cd_fone_comprador = "11";
$fone_comprador = "56273440";
$email_comprador = "comprador@eua.gov";
//dados para entrega (frete)
$tipo_entrega = 1; //valores para frete: 1 Encomenda normal (PAC), 2 SEDEX, 3 Tipo de frete não especificado.
$endereco_entrega = "Av. Brig. Faria Lima";
$numero_entrega = "1384";
$complemento_entrega = "5o Andar";
$distrito_entrega = "Jardim Paulistano";
$cep_entrega = "01452002";
$cidade_entrega = "Sao Paulo";
$estado_entrega = "SP";
$pais_entrega = "BRA";
$post_fields = "email=$email_vendedor";
$post_fields.= "&token=$token";
$post_fields.= "&currency=BRL";
$post_fields.= "&itemId1=0001";
$post_fields.= "&itemDescription1=$nome_produto";
$post_fields.= "&itemAmount1=$valor_produto";
$post_fields.= "&itemQuantity1=1";
$post_fields.= "&itemWeight1=$peso_produto";
$post_fields.= "&reference=REF1234";
$post_fields.= "&senderName=$nome_comprador";
$post_fields.= "&senderAreaCode=$cd_fone_comprador";
$post_fields.= "&senderPhone=$fone_comprador";
$post_fields.= "&senderEmail=$email_comprador";
$post_fields.= "&shippingType=$tipo_entrega";
$post_fields.= "&shippingAddressStreet=$endereco_entrega";
$post_fields.= "&shippingAddressNumber=$numero_entrega";
$post_fields.= "&shippingAddressComplement=$complemento_entrega";
$post_fields.= "&shippingAddressDistrict=$distrito_entrega";
$post_fields.= "&shippingAddressPostalCode=$cep_entrega";
$post_fields.= "&shippingAddressCity=$cidade_entrega";
$post_fields.= "&shippingAddressState=$estado_entrega";
$post_fields.= "&shippingAddressCountry=$pais_entrega";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1"));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$r = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($r);
if(isset($xml->code)){
//Aqui você deve salvar o código da transação no banco de dados
header("Location: https://pagseguro.uol.com.br/v2/checkout/payment.html?code=". $xml->code);
}else{
echo "Ocorreu um erro";
echo "". $xml->error->message ."
";
}
[/php]
Note que no final do script eu verifico se o objeto possui uma propriedade codigo, caso positivo, significa que ocorreu tudo conforme o esperado, agora você precisa salvar esse código no banco de dados e anexá-lo a compra que o usuário fez, para que você saiba que este código refere-se a um determinado produto ou serviço. Após isso você deve seguir com o processo de pagamento, para isso redirecionei o usuário com a função do php header, note que nesta etapa o usuário irá escolher a forma de pagamento e de fato finalizar a compra.
4- Até aqui nós percorremos uma grande etapa que foi interagir com a api do Pagseguro e obter o código da transação, código este que você salvou no banco de dados e anexou-o com a compra que o usuário fez, mas como fazer a liberação automática de acesso a uma área restrita ou mesmo enviar um email para o usuário após o pagamento. Bem, tem que entender bem uma coisa, o usuário pode simplesmente fazer a compra e nunca vir a pagar ela, ou pode ocorrer também de o usuário selecionar boleto bancário ou outra forma de pagamento que não caia na hora, assim sendo você não deveria liberar o acesso restrito ao usuário, mas esperar até que ele pague, não é mesmo? Muito bem, para resolver isso, o Pagseguro disponibiliza o que chamamos de “Retorno Automático de Dados” que faz exatamente o seguinte: “Ao final do processo de pagamento ou toda vez que uma transação mudar de status, o PagSeguro manda uma notificação para você.”
Para ativar o “Retorno Automático de Dados”, ainda em seu painel do pagseguro, e ainda na seção Integrações, clique na opção “Retorno automático de dados”. Na página do recurso, marque a opção “Ativado”, nessa hora vai aparecer o campo “Definir URL para receber as notificações:” aí você deve colocar o url da página que irá fazer a atualização do estatus da compra no banco de dados e fazer o envio do email de aviso ao comprador quando a compra for aprovada (cair o dinheiro). Como exemplo vamos colocar http://fazer-site.net/retorno.php.
O código do arquivo retorno.php o próprio pagseguro gera pra você, veja:
[php]
header(‘Content-Type: text/html; charset=ISO-8859-1’);
define(‘TOKEN’, ‘cole aqui o token do vendedor’);
class PagSeguroNpi {
private $timeout = 20; // Timeout em segundos
public function notificationPost() {
$postdata = ‘Comando=validar&Token=’.TOKEN;
foreach ($_POST as $key => $value) {
$valued = $this->clearStr($value);
$postdata .= "&$key=$valued";
}
return $this->verify($postdata);
}
private function clearStr($str) {
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}
private function verify($data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = trim(curl_exec($curl));
curl_close($curl);
return $result;
}
}
if (count($_POST) > 0) {
// POST recebido, indica que é a requisição do NPI.
//Pega o status da transação e email do cliente
$status_transacao = isset($_POST[‘StatusTransacao’])?$_POST[‘StatusTransacao’]:”;
$email = $_POST["CliEmail"];
//Libera acesso do usuário e envia email caso a transação foi aprovada;
if(‘Aprovado’ == $status_transacao){
//Aqui você pode atualizar o status do pedido no banco e enviar email para o comprador
}
$npi = new PagSeguroNpi();
$result = $npi->notificationPost();
$transacaoID = isset($_POST[‘TransacaoID’]) ? $_POST[‘TransacaoID’] : ”;
if ($result == "VERIFICADO") {
//O post foi validado pelo PagSeguro.
} else if ($result == "FALSO") {
//O post não foi validado pelo PagSeguro.
} else {
//Erro na integração com o PagSeguro.
}
} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
?>

Obrigado por efetuar a compra.


}
[/php]
Note que na segunda linha, você deve informar seu código token novamente e note que essa página de retorno é chamada sempre quando uma transação for concluída e novamente sempre quando o status de uma transação sofrer alteração. Isso é tudo que precisamos, pois como vimos no código acima, com esse comando if(‘Aprovado’ == $status_transacao) é possível saber exatamente quando o pagamento foi aprovado e somente então liberar o acesso para o usuário comprador ou enviar um email para ele. Outro detalhe é que a cada interação com o pagseguro, a página de retorno é chamada duas vezes, a primeira é para conferência do código token e a segunda chamada é o redirecionamento final. Você não pode redirecionar o usuário na primeira chamada, se assim o fizer, a compra não irá ser concretizadas pois a conferencia de token falhou, portanto tenha cuidado ao editar o código do arquivo de retorno. Outro dado interessante a se saber é que na primeira chamada, o pagseguro te envia um Post – igual um post de formulário web mesmo – e nesse post há várias informações sobre o comprador e sobre o produto, tanto que é deste post que vocÊ pega o status da transação, caso não tenha percebido.
Você se lembra que eu falei para salvar o código da transação no banco de dados e anexar com a compra? Pois bem, isso é útil pois você pode utilizar o código da transação para verificar dados da transação através da api do Pagseguro sempre quando desejar, veja no meu blog como fazer isso: Obtendo Informações de uma transação via API Pagseguro
Fico por aqui, até a próxima.
http://fazer-site.net/liberacao-de-download-automatico-apos-pagamento-via-pagseguro/

Postar um comentário

Postagem Anterior Próxima Postagem