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. Dourado, eu dnovo!!

    Só passando pra informar que também consegui resolver o problema dos acentos no BD. O arquivo TestarCompra.php estava com a codificação UTF-8, então eu alterei o cabeçalho para:

    e está salvando corretamente agora, com os devidos acentos e cedilhas.

    AGORA SIM!!

    Magnífico!!

    Salve Salve Dourado! Vc é o kra!

    Obrigado

  2. Heber Holanda, vai no mysql_query acima do mysql_num_rows e coloca no final antes do ; assim “or die (mysql_error())” ( sem parenteses )

  3. Deixa eu ser mais coreto Heber Holanda, nesta parte

    $Processo = mysql_query(“SELECT VendedorEmail FROM PagSeguroProdutos WHERE VendedorEmail=’$VendedorEmail’ AND TransacaoID=’$TransacaoID'”);

    Você vai deixar assim

    $Processo = mysql_query(“SELECT VendedorEmail FROM PagSeguroProdutos WHERE VendedorEmail=’$VendedorEmail’ AND TransacaoID=’$TransacaoID'”) or die (mysql_error());

  4. Junior, obrigado pela ajuda.

    O erro irá ficar salvo no arquivo de log do apache correto ?

  5. Olá amigo, parabéns pelo script! Perfeito!
    Eu fiz os testes localmente com o server de testes do Windows e deu tudo certo, depois coloquei na Web e deu um probleminha, fiz uma série de depurações e percebi que o NPI $Result está igual a “FALSO”.
    Já tentei de tudo mas não consigo validar para $result == “VERIFICADO”, tem alguma ideia?
    Muito obrigado!

  6. Opa,

    Vim aqui somente para mostrar a solução do problema acima, em minha conta pagseguro eu tinha apenas colocado a URL de retono no link “Notificações de Transações” e não tinha mudado a URL no outro link “Retorno Automático de dados”.

    Obrigado e boa sorte a todos!

  7. Alquem pode me ajugar ? configurei tudo certinho enviei a hospedagem criei o BD

    na hora de testar

    (Na pagina do pagseguro)

    Checkout

    Mensagem:
    Transação inválida. Sempre inicie transações a partir de sites confiáveis.

  8. Diogo,
    Queria te dizer uma coisa. Você é o cara.

    Muito bem escrito esse seu script, fácil, rápido e prático.
    Tive umas dores de cabeça apenas para adequar no meu sistema. Porem tive melhorias no meu banco de dados, pois estou buscando todas as informações para montar o carrinho, do banco de dados.

    Ficou muito Show.
    Parabéns pela iniciativa. E meu muitíssimo OBRIGADO.

  9. Diego, estou com o erro que o POST do Pag seguro sempre vem vazio, nao consegui achar onde pode ser o erro. será que vc nao teria uma solução para isso?

    Att,
    Vlwzz
    rsrs

  10. Bom dia Diogo, ótimo trabalho, me ajudou bastante, porém tenho uma pequena dúvida se você não se importar…

    Eu preciso enviar uma “anotação” para o pagseguro e guardar no banco, já tá tudo pronto, porém o campo sempre fica em branco.

    estou enviando dessa forma a informação…

    isso tá certo ou o “name” do campo não está correto?

    Obrigado!

  11. Bom dia Diogo, ótimo trabalho, me ajudou bastante, porém tenho uma pequena dúvida se você não se importar…

    Eu preciso enviar uma “anotação” para o pagseguro e guardar no banco, já tá tudo pronto, porém o campo sempre fica em branco.

    estou enviando dessa forma a informação dentro de um hidden…

    name=”item_anotacao_1″ value=”teste”

    isso tá certo ou o “name” do campo não está correto?

    Obrigado!

  12. Tudo bem Diogo Dourado?
    Bom estava pesquisando sobre o retorno automático do pagseguro e encontrei seu site, baixei seus arquivos e implementei conforme minha necessidade no meu projeto, porém não tive sucesso na gravação no banco dados. Não sei se teria que atualiza a biblioteca ou algo do tipo, se você pudesse me me ajuda ficaria muito grato fera ;)

    Flw abrass

  13. Consegui resolver o problema, realmente funcionou perfeitamente, só tenho a agradecer pela força que você me deu, pois os exemplos que tem no PagSeguro são meio complicados de entender.

    Muito Obrigado fera ;)

  14. Estou tentando implementar este sistema..
    Coloquei todos os arquivos no servidor e entrei neles via web e o ÚNICO que está dando erro é o PagSeguroRetornoFuncoes.php

    Warning: mysql_connect() [function.mysql-connect]: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) in /home/meusite/public_html/PagSeguroRetornoFuncoes.php on line 64
    Nao foi possível conectar ao MySql: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

    Alguem pode me ajudar?

  15. Parabéns pela iniciativa do script.
    Com algumas adaptações é possível realizar um bom trabalho. Fiz a alteração sugerida pelo Pablo Karzin no campo TransacaoID, aumentando o mesmo, de 32 para 38
    assim que vi seu post, afinal não custava nada para mim; dessa forma, quando alterei os códigos para que ao invés de fazer um INSERT, como sugerido pelo Diogo, ele realize um UPDATE,
    não tive problemas com a verificação do campo TransacaoID, portanto funcionou.

    No entanto, gostaria de salientar que a dica do Pablo Karzin com relação ao número de caracteres tem fundamento, pois apesar de na documentação dizer que este campo é realmente 32 caracteres,
    (TransacaoID Alfa-Numérico 32 Identificação da Transação) em https://pagseguro.uol.com.br/desenvolvedor/retorno_automatico_de_dados.jhtml;
    se você observar o TransacaoID gerado possui 39 caracteres (basta contar) para além disso, encontrei uma página do próprio PagSeguro que menciona isso.
    ( notificationCode = tipo: texto / formato : Uma sequência de 39 caracteres. ) como pode ser visto em:https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-notificacoes.html.

    Não sei se para vocês fará alguma diferença alterar o valor deste campo, para mim não faz, aliás acabo de alterar novamente, agora para 39, pois acredito que desta forma deixo de correr o risco
    de cometer algum erro tanto de inserção como de comparação.

  16. Diogo
    Como devo fazer para retornar o valor status que deve ser um inteiro?
    Qual é a variável que recebe este valor?

  17. Amigos, tenho resgatar o cod do user por session para inserir o mesmo no retorno para identificar de quem foi a compra, mas o arquivo de retorno parece q não aceita sei lah
    exemplo:

    $resg_cod = $_SESSION[‘cod’];
    $Processo = mysql_query(“SELECT VendedorEmail FROM PagSeguroProdutos WHERE VendedorEmail=’$VendedorEmail’ AND TransacaoID=’$TransacaoID'”);
    if (mysql_num_rows($Processo)==0) {
    for($i=1;$i<=$NumItens;$i++) {

    $ProdID = $_POST["ProdID_{$i}"];
    $ProdDescricao = $_POST["ProdDescricao_{$i}"];
    $ProdValor = MoedaBR($_POST["ProdValor_{$i}"]);
    $ProdQuantidade = $_POST["ProdQuantidade_{$i}"];
    $ProdFrete = MoedaBR($_POST["ProdFrete_{$i}"]);

    mysql_query("INSERT into PagSeguroProdutos SET
    VendedorEmail='$VendedorEmail',
    TransacaoID='$TransacaoID',
    Ordem='$i',
    CodCli='$resg_cod',
    ProdID='$ProdID',
    ProdDescricao='$ProdDescricao',
    ProdValor='$ProdValor',
    ProdQuantidade='$ProdQuantidade',
    ProdFrete='$ProdFrete'");
    }

  18. Parabéns! Muito bem escrito e funcionou de prima.. bom que existem pessoas assim interessadas em ajudar.

  19. Ola Diogo ja tentei de tudo com ele na Locaweb, testei ele em outro servidor e funcionou certinho, jogo no servidor da locaweb e ele nao insere no banco as informações, esta tudo certo com a conexao ao BD (ja fiz testes) e no pagseguro, retorno, notificação de transação, token, por que funciona em outro servidor com os mesmos dados, o que pode ser ? tem ideia ?

  20. Olá Diogo, parabéns pelo script, nota 10.

    Aqui funcionou tudo direitinho, porém eu tenho uma dúvida…

    Eu tenho uma tabela chamada login, nela possui diversas colunas como id, nome, level e dias. Essas são as principais…

    Eu gostaria de saber, como eu faço para quando o pagseguro aprovar o pagamento, ele alterar o level para 10 e os dias para 30 aonde o id for igual ao usuário que comprou.

    Obrigado desde já.

  21. Olá Diogo, muito obrigada pelo código! Adaptei ele para o sistema da minha loja em 20 minutos (uso uma versão da Interspire que eu mesma desenvolvo módulos, adiciono funcionalidades e crio templates há aproximadamente 1 ano). Coloquei para atualizar o status da compra, enviando a ID do pedido do cliente na variável Referencia e atualizando o status quando o Pagseguro retorna que o pagamento foi verificado.

    Você me poupou um tempo que eu não tinha para ler a documentação e implementar, obrigada novamente e bom trabalho!

  22. Cara que script difícil de configurar, levei quase 2 segundos kkkkk,
    na boa bela iniciativa parabéns pelo seu script 100% recomendado!

  23. Como resolvo o problema desta mensagem:
    Transação inválida. Sempre inicie transações a partir de sites confiáveis.?

    Ela surge toda vez que tento executar o TestarCompra.php

  24. Perfeito, excelente …..

    Acabei de configurar e funciona perfeitamente….

    Parabéns Diogo, por se dedicar e compartilhar seus conhecimentos..

    Abraços

  25. Boa tarde, cara só uma dúvida geral sobre o sistema e seu funcionamento.

    Assim que eu gerar o boleto e ir para o link de retorno, ele apenas irá me redirecionar para meu site. Quando aprovado o pagamento do boleto ele irá registrar o pedido no meu site?

    Outra coisa, eu estou passando a referencia com o setReference, também vai funcionar?

  26. opa, seria possivel acrescentar outros campos para serem gravados no banco de dados da tabela PagSeguroTransacoes, mesmo que esses campos não sejam aproveitados no form do pagseguro, eu queria que fosse gravado apenas no banco, tentei porem sem sucesso, criei os campos, mas mesmo preenchendo ele não aguarda os dados! existe alguma maneira ?

  27. Inseri o script na página corretamente, fiz todas as alterações no pagseguro, alterei as configurações do banco, inseri token e talz, mas ele não está enviando o post pra página.

  28. Rafael, nao aconselho. O PagSeguro so vai enviar o retorno pra voce das variaveis que estao no manual. Nao adianta criar nenhum outro campo que não vai retornar, ok?

  29. Michel, beleza, que bom que funcionou. Instalado pelo menos 1 por semana, sem problemas. Tem uns 2 ou 3 errinhos, mas coisa facil de resolver, vou lancar uma nova versão na proxima semana.

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.