Retorno Automático de Dados do PagSeguro em PHP/MySQL (com produtos) – Versão 2.0

Enfim, como prometido a nova versão do Retorno de dados do Pagseguro. As maiores novidades ficaram por conta da utilização a nova URL do PagSeguro para validação e a captura completa dos produtos.

Agora ficou mais fácil a instalação do mesmo, basta baixar o script abaixo, descompactar e editar  o PagSeguroRetornoConfig.php inserindo os dados solicitados. Depois basta configurar o banco de dados Mysql e utilizar o arquivo SQL disponível para criar as tabelas.

Download do script de Retorno de Dados Automatico do Pagseguro 2.0

 

Você deve configurar a sua conta no PagSeguro para ativar o Retorno Automático de dados, para isso, entre no seu PagSeguro, nas opcao Preferencias > Retorno Automatico de Dados. Basta ativar a URL de retorno e colocar o endereço completo da URL do arquivo. Neste mesmo local é onde você vai gerar o seu Token, solicitada no arquivo de configurações.

Feito isso, o seu Retorno já esta funcional.

Para testar seu script não é preciso fazer um pagamento, basta abrir o arquivo TestarCompra.php colocar o seu e-mail e enviar para o seu FTP. Feito isso, é so acessar o arquivo, gerar uma compra aleatoria e escolher BOLETO BANCARIO para pagamento. Depois de confirmar a compra por boleto e aguardar o tempo solicitado, as suas tabelas já terão os dados da compra, bem como os produtos gerados.

Ps: Se você não é programador, não faça perguntas, peça um orçamento atraves do contato.

É isso ae! La pergunta?

224 comments

  1. Parabéns, entra em contato com o PagSeguro o seu script é MUITO melhor que o deles. Valeu.

  2. Fala ai Diogo! Tu é o cara :P

    Ve se consegue me ajudar:
    Ao testar o pagamento por boleto bancário, retorno para ou PagSeguroRetorno.php e em seguida sou redirecionado através do Header(), comentei ele e adicionei em cima um echo count($_POST); só para verificar se há algum $_POST sendo passado já que não está adicionando nada no banco de dadas e eis a supresa, está retornado 0, ou seja, não está sendo passado nenhum $_POST, sabe me dizer o porque?

    Valeu e melhoras para ti!

  3. Boa Diogo!

    Só tive um probleminha no bluehost (serv de hosp).

    Qdo fui testar deram os seguintes erros:

    ————————————————————————————————————
    Warning: Cannot modify header information – headers already sent by (output started at /beta/PagSeguroRetorno.php:1) in /beta/PagSeguroRetorno.php on line 14
    ?
    Warning: Cannot modify header information – headers already sent by (output started at /beta/PagSeguroRetorno.php:1) in /beta/PagSeguroRetorno.php on line 115

    ————————————————————————————————————
    Mas coloquei o charset com tag html simples mesmo () fora do php.

    E troquei o
    header(“Location: $retorno_site”)
    por
    echo “window.location=\”$retorno_site\””;

    Aí funcionou numa boa.

    Mas vlw cara!!
    Te amo! (lol)

  4. Olá Dourado, parabéns pela iniciativa, estou tentando testar em localhost, mas não está guardando no banco de dados, estou usando o PagSeguro Server (http://code.google.com/p/pagsegurodotnet/) para simular o robo do PagSeguro em localhost, os dados estão sendo enviado para o PagSeguro Server perfeitamente, porém no banco não está guardando nada e o mais curioso é que não há nenhuma mensagem de erro de conexão com o banco de dados. Alguma ideia sobre o que pode estar acontecendo?

  5. Valew Dourado, o melhor tutorial de retorno automático da net, o pagseguro deveria referência-lo. Abs

  6. Gustavo, voce ta fazendo uma confusao, uma vez ele retorna com post, mas no neste caso seu, é apenas o redirecionamento mesmo, sem o post. Para testar o funcionamento é simples, basta realizar um pagamento teste por boleto bancario, não é necessário pagar, apenas gerar o boleto, ok?

  7. Daniel, este erro, com certeza é porque voce editou o arquivo e deixou algo imprimindo antes do Header, ae da erro mesmo. ;)
    E este eu te amo ae? Impolgou? ui ui!!

  8. Marcelo, quer uma dica? Desiste do PagSeguro teste. A melhor maneira de testar é na pratica. Para isso, gere um pagamento e selecione a opção de pagar por boleto bancário. Apos gerar o boleto e aguardar alguns segundos, o retorno irá gravar os dados da compra. No proprio arquivo de download eu coloquei um teste facil lá, da uma olhada.

  9. Caros amigos, tentei de tudo, nao alterei em nada, e mesmo assim, nao fui capaz de gravar os dados no meu banco de dados! Alguma ajuda?

  10. Apenas um detalhe.
    No arquivo PagSeguroRetorno.php no INSERT into PagSeguroTransacoes. Tem um campo que não existe no SQL DataTransacao, apenas troquei ele para data, e o DATA para DATAHORA.

    Funcionou perfeitamente!

  11. Por favor, ignore o último comment, na verdade deve ter ocorrido algum problema no meu mysql ao gerar a tabela. O Arquivo para download está correto.
    =)

  12. Muito bom o script, porem aconteceu o mesmo problema, ele retorna mostra a página de concluido o pagamento porem não grava no banco, tentei dar um echo em alguma variavel que iria gravar no banco e realmente ele não esta passando esse dado, estou executando em meu computador porem com meu ip e não como localhost.

    Será que é alguma permissão que tenho que dar ao pag seguro?

    Muito obrigado pelo código, de longe foi o melhor e o mais limpo que eu ja peguei, melhor até doque eu tinha feito que por sinal não funcionou.

    Abraço;

  13. Esqueci de informar que quando dou um “echo” ele retorna este erro.:
    ( ! ) Notice: Undefined variable: TipoPagamento in D:\site\loja\retornopg\PagSeguroRetorno.php on line 111

  14. Tenho a solução para quem quer testar o retorno do pagSeguro emservidores caseiros, oque acontece é que o pagseguro nao se comunica com localhost, pq ele utiliza um ip próprio que deve ser setado no servidor de hospedagem para realizar o comando POST. logo, nós não temos essa opção disponivel e tambem temos, Modem, Roteador, Firewall, etc….
    O retorno dos dados é em BRANCO justamente pelo fato do PagSeguro não conseguir se comunicar com o nosso servidor caseiro.

    Então oque fazer?

    Simples, depois de muito pesquisar achei um site MAGNIFICO! La eles fornecem um programa chamado PagSeguro TestServer para rodar “fingir” ser o servidor do pagseguro recebendo os dados e enviando devolta com POST. Muito facil de usar e configurar, no próprio site tem explicando como utilizar, o site é: http://code.google.com/p/pagsegurodotnet/
    No próprio programa na tela principal exibe os dados da transação que vc enviou ao finalizar a compra de produtos em sua loja, ou seja em vez de mandar os dados para o pagseguro real, vc altera o seu OsComerce para enviar o pedido final para algo como: http://localhost:9090/checkout/checkout.jhtml que é o servidor de “mentirinha” que você baixou la no site. Então por fim o programa retorna os dados dda transação realizada, e no meu caso como utilizo pra incluir no BD essas informações, ele incluiu corretamente.

    Lembrando que o programa é free, mas logo acima do site tem um botão de DOAÇÃO, acredito que de tanto sofrer, pelejar e arrancar os cabelos, para testar esse maldito retorno do pag seguro, não seria dificil realizar uma doação. Afinal, a ferramenta que eles desenvolveram é simplesmente SENSACIONAL e totalmente FREE. Quero deixar claro que não faço parte da equipe deste site, só estou divulgando a ferramenta para ajudar, e como eu fiz, pedindo a Doação, afinal ja que vamos pagar comissão para o PagSeguro para utlizar os serviços deles, que por sinal são péssimos com realação ao código de retorno totalmente mal feito e que não te dão suporte para este fim, não custaria nada fazer uma doação para aqueles que realmente resolveram nossos problemas.

    Desculpe pelo texto muito comprido.

    Abraços

  15. Configurei tudo corretamente, porem seu scrip não consegue gravar nada no banco.
    E o acesso ao banco está perfeito, fis teste.

    Seu scrip é que não funciona, não salva na tabela.

  16. Tem um problema aqui,
    Qual pagina devo informar no site do PagSeguro como sendo a pagina de retorno?

  17. Olá diogo, primeiro de tudo, parabéns pelo script.

    Estou tendo um probleminha, o pagseguro retorna e o script grava as informações no BD sem problema, o que significa que ele entrou na condição que confirma a verificação dos dados “if ($result == “VERIFICADO”) {” Mas mesmo assim ele entra no else la em baixo, como se o valor da variável result não fosse verificado. O que fazer para resolver este problema ?

  18. sobre alterar o status do pedido. o pagseguro retorna blz tb?

    quando altera status ele manda outro post para mesmo canto né isso?

    entao tenho que verificar se o TransacaoID já existe registrado e apenas altera o status?

    é isso!?

  19. Marko, o melhor jeito de testar o script é gerando um boleto bancario. Não é necessário pagar, pois quando gera o boleto ele ativa o retorno do pagseguro.

  20. Erivando, Grava na tabela sim, ja fiz vários testes e todo mundo consegue.

    O pessoal deve ter o minimo de senso de programação para colocar o retorno para funcionar e adaptar ao seu sistema. Não basta colocar o script no ar, tem que gerar o TOKEN e informar a URL onde o script esta hospedado.

  21. Leonardo, é porque o PagSeguro envia via POST e o usuário não. Como os dois usam a mesma URL tem essa condição para diferenciar qual o tipo de acesso. Mas você pode modificar ao seu critério.

  22. Rogerio, para a didatica ficar melhor, eu optei por não fazer UPDATE na tabela. Assim você terá acesso a todos os POSTs do Retorno do PagSeguro. É so filtrar depois pelo campo do Status. Mas você pode modificar o script ao seu modo se desejar.

  23. Cmg funcionou perfeitamente… Inclusive com o servidor de Testes feito em NET…

    Parabéns!

  24. quer dizer, modifiquei a parte do banco pra se adequar ao meu sist.

    ;)

  25. Boa, Diogo!

    Teu script ficou ótimo, pouco diferente do que eu uso. Só duas dúvidas: Quais são os status (o nome certinho, pra criar os if’s de um sistema aqui? Só sei o “Aguardando Pagto”.

    Pq tem um campo “Status” na tabela? Foi erro na criação?

    Abraços.

  26. Willian,
    O Status eu uso sempre como uma flag, nada demais. Os registros possiveis em StatusTransacao são:
    Completo
    Aguardando Pagto
    Aprovado
    Em Análise
    Cancelado

  27. Diogo, estou tendo um problema com o código.
    Armazeno dados numa session, para na página de finalização eu saber qual é o pedido.
    Mas toda vez em que é feita a primeira compra, a sessão se perde… Nas outras compras isso não acontece. Saberia como eu poderia recuperar o pedido?

  28. Diogo, já tem um tempinho que trabalho com o retorno do PagSeguro, porém todas as vezes que eu utilizava não havi necessidade do uso do carrinho. Até ai blz, meu carrinho funciona 100%, envia os dados para o carrinho do pagseguro 100% faz os cálculos blz, só que por exemplo: No meu carrinho coloco 2 produtoX e 1 produtoY, ambos de 1 centavo, faço o pagamento online via Banco do Brasil e o status de aprovado é instântaneo, porém quando o retorno entra em ação ele grava 2 vezes o produtoX e 1 vez o produtoY, sendo que o produtoX era pra ser gravado apenas uma vez com a quantidade 2. Não estou identificando o motivo disto. Help me please.

  29. Dourado, coloquei no server da locaweb, com PHP 5.2 e apareceu o seguinte erro

    Warning: Cannot modify header information – headers already sent by (output started at E:\vhosts\xxxxxx.com.br\httpdocs\pagseguro\retorno.php:1) in E:\vhosts\xxxxxx.com.br\httpdocs\pagseguro\retorno.php on line 3

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in E:\vhosts\xxxxxx.com.br\httpdocs\pagseguro\PagSeguroRetornoFuncoes.php on line 15

    tem ideia do que pode ser? abração

  30. Seu script está realmente muito bom, porém estou com problemas, não estou recebendo em meu SQL os dados. Já entrei em contato com o pagseguro e eles informacao que está sendo enviado o post porém não está recebendo o String de validação do meu site.
    Estou utilizando este script ai que por sinal está bom, e pelo comentários está funcionando, porém o meu não sei oque está acontecendo. Ele não mostra nenhum erro de sql nada, apenas não está indo para a database.
    Obrigado se alguem puder me ajudar.

  31. Diogo, parabéns pelo seu site! Já ganhou uma fã!
    Bom configurei tudo direitinho banco de dados e páginas, mas quando vou testar a compra e clico no botão “Gerar”, a página é redirecionada para o pagseguro onde é exibida a seguinte mensagem: “Erro 100 – O E-MAIL não está no formato correto.” Faltou alguma instrução?

  32. Bom acabei descobrindo que o campo onde eu devo inserir o email fica no arquivo TestarCompra.php, apesar dos testes de conexão o meu bd exibe que está conectado, mas nao está recebendo nenhuma informação. O q poderia ser?

  33. Diogo nem sei como te agradecer!!! A loira aqui tinha esquecido de ativar a url de retorno…. pois bem eu ativei a url de retorno e está tudo redondinho!!!!!!!
    Obrigado mesmo pela ajuda!!!

  34. Pessoal… acho q descobri o problema de muitos aqui que não conseguem o retorno.
    Não mecham em nada no scrip apenas as informações necessárias de conexão do banco e da loja…

    No pagseguro:

    Em Integração>Página de redirecionamento.
    Ative a página fixa de redirecionamento e coloque a URL da sua loja
    http://www.sua loja.com.br/compra_concluida.php – essa pagina só tem uma msg “Compra Concluida”

    Após isso vá em Integração>Retorno Automático de Dados
    Ative o retorno e coloque a URL com o arquivo q tem no download:
    http://www.sualoja.com.br/PagSeguroRetorno.php

    Pronto!

  35. Dourado, parabéns pelo script, funcionou de primeira, bem diferente qualquer outro código ou tutorial que encontrei pela internet.

    Já estava desistindo do pag-seguro, achei o suporte deles pífio, tutoriais fajutos e módulos que simplesmente não funcionam…

    Novamente parabéns pela iniciativa, o código é tão bom que as adaptações que fiz para minha loja virtual também funcionaram.

    Obrigado!

  36. Rodrigo, isso deve ser feito por você mesmo. Se eu colocar session, fica complicado para quem nao vai utilizar. Recomendo voce colocar a URL de retorno na mesma pasta do site, pode ser isso.

  37. Thiago, mas você esta utilizando o meu script ou o seu? Verifique que no meu script ele confere se ja gravou os dados do produto antes, isso porque ele envia a cada atualização os produtos.

  38. Milani, erro no cabeçalho do arquivo. Você com certeza colocou algum espaço vazio ou caractere antes da sessão, e na configuração voce “comeu” alguma aspa.

  39. Alex, leia o post atentamente. Você deve configurar 2 URL, a de retorno e a de redirecionamento. Alem do token e fazer corretamente a sua conexao mysql.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.