Ir para conteúdo
Entre para seguir isso  
Klenioyok

Pagseguro automatizado.

Recommended Posts

Klenioyok    0
Klenioyok

Vamos falar sobre o retorno automático do PagSeguro. Funciona mais ou menos assim:

 

Quando o usuário efetua uma ação que valha a pena você saber (como por exemplo "O pagamento será feito via boleto, então, estamos

aguardando o pagamento") o PagSeguro manda uma mensagem para você para que você possa ficar sabendo o que aconteceu e possa atualizar

seu banco de dados.

 

Legal, como ele faz isso? Via carta?

 

Não, ele não faz isso via carta porque demoraria muito tempo. A intenção é que seu sistema atualize os dados de compra dos seus usuários

de maneira que você tenha mais tempo para tomar aquela limonada em frente ao mar.

 

Então o PagSeguro tentará conversar de igual para igual: robô para robô. Para isso ele envia essa mensagem via POST. Algo como escrever

o seguinte código html e apertar o botão submit.

 

<form action="robo_da_loja_virtual" method="post">

<input type="hidden" name="TransacaoID" value="CTH-341-HTPS-1245V-GDCN" />

<input type="hidden" name="Referencia" value="ID234" />

<input type="hidden" name="DataTransacao" value="25/05/2009 11:41:35" />

...

<input type="submit" value="Enviar" />

</form>

Junto com essas informações você receberá o "StatusTransacao" (que pode ser "Completo", "Aguardando Pagto", "Aprovado", "Em Análise" ou

"Cancelado") e "TipoPagamento" (que pode ser "Pagamento", "Cartão de Crédito", "Boleto" ou "Pagamento online").

 

Com isso você consegue atualizar seu banco de forma simples e fácil.

 

Hmmmm... isso vai deixar minha loja automática, vou começar agora!

 

Calma, pequeno gafanhoto... Você já pensou naquelas pessoas que devemos ter medo: os Hackers?! Sim, eu poderia criar um formulário html no meu

computador e enviar a mensagem para seu site, dizendo que minha conta está aprovada, e "automágicamente" você atualizará minha compra.

 

Para prevenir-se dessas pessoas indesejáveis, o PagSeguro trabalha com a "verificação automática". Que funciona mais ou menos assim. O seu robô

deverá enviar um POST (formulário html e clicar em submit) para o PagSeguro (endereço: https://pagseguro.uo...I/Default.aspx) com

todos os dados recebidos mais o valor de "Comando" como "validar" e o valor de "Token" contendo o numéro do seu Token secreto que você gera no

seu painel de controle do PagSeguro em "Ferramentas" > "7. Retorno automático" > "2) Token para Conferência de Segurança".

 

Quando você submete um formulário em html você tem como resposta uma página html normal. A página de "verificação automática" é na verdade a resposta

do comando "validar" que você enviou. Se o PagSeguro realmente enviou esses dados para você, a página deverá ter escrito "VERIFICADO" caso contrário

você verá uma tela contendo o erro de "inválido".

 

O PagSeguro então me previne de Hackers, me convenceu. Vou começar agora!

 

Para começar, a primeira coisa que você deve fazer é definir para qual URL o pagseguro deve enviar seu POST informando o status do pagamnto do

seu cliente. Para facilitar sua vida, é a mesma URL de retorno de seu usuário. Você define ela no seu painel de controle do PagSeguro em

"Ferramentas" > "7. Retorno automático" > "1) Ative a URL de retorno". Você deve ativá-la e indicar qual é a url de retorno do seu cliente.

 

Eita! Mas, se a mesma URL, não vai dar conflito?!

 

Não! Quando o usuário retorna para sua página, depois de efetuar a transação ele vai via GET, ou seja, ele simplesmente é mandado para a página

sem nenhuma informação extra. Você pode recuperar o seu usuário usando a sessão (mas isso é outro assunto). Já o robô do PagSeguro conversa

com o seu robô através (e unicamente) de POSTs.

 

POST, GET, URL, Retorno, Validação, isso já está me deixando com a cuca doendo

Calma, para facilitar sua vida, o PagSeguro disponibilizou uma

biblioteca muito boa em PHP que deixa seu trabalho ridicularmente simples. Vou explicar

como funciona.

 

Depois de definir sua URL de retorno e gerar seu Token você deve começar a escrever seu robô.

 

Você deve indicar o seu token através de um "define" em php.

define ('TOKEN', 'numero_do_seu_token');
Defina também a função de retorno, ela só será executada depois que o pagseguro enviou o post, você enviou o post de verificação e o

PagSeguro disse que é valido. Essa função recebe os seguintes parâmetros:

 

retorno_automatico (

$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,

$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,

$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,

$CliNumero, $CliComplemento, $CliBairro, $CliCidade,

$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens

);

Então nossa função poderia ser escrita assim:
function retorno_automatico (

$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,

$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,

$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,

$CliNumero, $CliComplemento, $CliBairro, $CliCidade,

$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens

) {

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

$banco = new BancoDeDados();

$banco->update('TabelaDeCompras', $Referencia, 'Liberado');

manda_email($CliEmail, "Seu pagamento foi efetuado! Você receberá seu produto em no máximo 7 dias úteis.");

}

}

Esta função está usando um objeto genérico que chamei de "BancoDeDados" e esse objeto tem (em tese) um método "update" que atualiza

meu banco de dados para o Status de minha linha do banco de dados para 'Liberado' caso o Status que recebi do PagSeguro for 'Completo' ou

'Aprovado' (a diferença entre os dois não sei ao certo até agora, mas os dois indicam que o pagamento foi efetuado). Você pode usar o ADODB

ou PDO ou mysql na unha mesmo para atualizar seu banco de dados, fique à vontade para programar seu robô para fazer o que você quiser.

 

Também usei uma função chamada "manda_email" que, supostamente, manda um e-mail para o e-mail passado como primeiro parâmetro com a mensagem

especificada. Você pode usar sua própria biblioteca ou mesmo a função "mail" do próprio PHP.

 

Inclua o arquivo "retorno.php" que vem junto com a biblioteca. Use include/include_once/require/require_once para inserir esse arquivo ao seu

código. Particularmente, eu prefiro o require_once porque se o arquivo tiver alguma falha (conflitar com alguma função pré-definida por exemplo)

ele para o script, evitando erros futuros e o "once" faz ele não inluir novamente caso ele já tenha sido incluído.

 

require_once("retorno.php");
Lembre-se, a url de retorno é a mesma de retorno para o robô do PagSeguro, então, após esta linha escreva um html normal (ou tratamento usando

sessions) dizendo ao seu usuário: "Olha, o pagamento será feito pelo pagseguro e assim que recebermos a confirmação de pagamento, você receberá

um e-mail".

 

Em suma, seu script ficará assim:

<?php

require_once ('banco_de_dados.php'); # Biblioteca de banco de dados (fictícia)

require_once ('email.php'); # Funções de e-mail (fictício)

define ('TOKEN', 'numero_do_seu_token');

function retorno_automatico (

$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,

$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,

$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,

$CliNumero, $CliComplemento, $CliBairro, $CliCidade,

$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens

) {

if ($StatusTransacao == 'Completo' OR $StatusTransacao == 'Aprovado') {

$banco = new BancoDeDados();

$banco->update('TabelaDeCompras', $Referencia, 'Liberado');

manda_email($CliEmail, "Seu pagamento foi efetuado! Você receberá seu produto em no máximo 7 dias úteis.");

}

}

require_once("retorno.php");

?><html>

<head>

<title>Obrigado!</title>

</head>

<body>

<h1>Obrigado, falta muito pouco para liberar seu produto...</h1>

<p>O pagamento será feito pelo pagseguro e assim que recebermos a confirmação de pagamento, você receberá um e-mail.</p>

</body>

</html>

Para melhor entedimento do script acesse o site do pagseguro ou até mesmo o forúm Imasters e que você tenha uma conta no PAGSEGURO, creio que esse sistema vai ajudar muita gente.

 

Creditos : Pagseguro e Imasters Fóruns.

Compartilhar este post


Link para o post
Addicted    1
Addicted

Acho que tem muita gente que se interessa por isso. =)

 

Aprovado.

 

Obrigado pela contribuição.

Compartilhar este post


Link para o post
kilergui    0
kilergui

vlw tava procurando por um desse :D

Compartilhar este post


Link para o post
kaznowski    0
kaznowski

Parabens, otimo tutorial e muita paciencia :)

 

Vou analisar para usar quem sabe um dia :D

Compartilhar este post


Link para o post
caldoquinor    0
caldoquinor

:w00t:

Muito Bom cara...tava procurando issu a um tempinho e agr ja ta resolvido...será que tbm vc poderia ver como seria pelo MOIP(outra empresa de pagamentos via Web)???

Compartilhar este post


Link para o post
Mickfern    32
Mickfern

Cara seu tutorial está muito bom, mas há uma maneira muito mais prática. Quando voce se submete ao serviço oferecido pelo PagSegura eles lhe mostram tudo, sobre como usar.

Compartilhar este post


Link para o post
Loopback    0
Loopback

Excelente cara, nunca tinha visto um tutorial assim ! =D parabéns.

Compartilhar este post


Link para o post
agustinho99    0
agustinho99

Boa kra, tava precisano ^^

Compartilhar este post


Link para o post
Klenioyok    0
Klenioyok
:w00t:

Muito Bom cara...tava procurando issu a um tempinho e agr ja ta resolvido...será que tbm vc poderia ver como seria pelo MOIP(outra empresa de pagamentos via Web)???

 

Não sei , porque esse sistema é diretamente do PagSeguro...

Compartilhar este post


Link para o post
bielemo2    0
bielemo2

mt bom

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×