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?

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

  1. [...] ATENÇÃO: Já esta disponivel a versão 2.0 deste script, mais segurança e agora coletando informações dos produtos, clique aqui. [...]

  2. Muito bom Diogo, parabéns!
    Extremamente bem montado e de fácil manuseio.
    gde abç

  3. Valeu Fábio, agora ficou completinho! So não usa o retorno quem não quer. :)

  4. Bruno Nunes Says:

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

  5. 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!

  6. 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)

  7. 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?

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

  9. Bruno, entrar em contato com eles? hehehe.. eu fiz para ajudar mesmo, mas é uma possibilidade sim, quem sabe! :)

  10. 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?

  11. 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!!

  12. 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.

  13. Fabio, ja disseram isso ae em cima. Valeu mesmo! vai la e da uma buzinada neles. :)

  14. Felipe Almeida Says:

    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?

  15. Ótimo codigo, facilitando o trabalho de muita gente. Bom saber que ainda existem pessoas dispostas a ajudar. Parabéns!

  16. Muito bom esse código. Parabéns.

  17. 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!

  18. 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.
    =)

  19. Felipe, deve ser erro de conexao com o BD, confira as senhas e permissoes.

  20. 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;

  21. 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

  22. Marko Djuragin neto Says:

    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

  23. 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.

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

  25. 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 ?

  26. 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!?

  27. 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.

  28. 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.

  29. Erivando, este é o verdadeiro motivo de não gravar dados na sua tabela. Voce deve informar a URL onde voce hospedou o script.

  30. 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.

  31. 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.

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

    Parabéns!

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

    ;)

  34. Willian Cima Says:

    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.

  35. 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

  36. Rodrigo Bacelli Says:

    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?

  37. Thiago Mágero Says:

    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.

  38. 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

  39. 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.

  40. 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?

  41. 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?

  42. 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!!!

  43. 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!

  44. 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!

  45. 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.

  46. 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.

  47. 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.

  48. 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.

  49. Exatamente Felipe!! Isso ae, so configurar o mysql corretamente, a URL de redirecionamento e URL de Retorno. Nada mais! :)

  50. Tatiani, so configurar o e-mail corretamente! ;) isso é erro no seu carrinho.

  51. Assim como a Tatiani, a maioria esquece da URL de redirecionamento de de retorno, vamos ler pessoal!!!! ;)

  52. Que bom Gabriel, estou a disposição! :)

  53. Olá Diogo!
    Muito bom seu script! Parabéns pela iniciativa.
    Me surgiu uma dúvida: Ao iniciar uma compra e finalizar o pedido junto ao pagseguro, o script grava perfeitamente no banco, mas quando o pagamento é efetivado, o pagseguro envia informações atualizada (status de pagamento) ao script de retorno e o mesmo grana novamente no banco?

    Não sei se fui claro, mas se não entendeu tentarei ser mais claro.

    Continue nessa labuta com os códigos opensource….

  54. Funciona para receber notificações na alteração de transações para poder alterar o status de pagamento?

  55. Havia ativado “Redirecionamento com o código da transação” no pagseguro, estava inconformado em não funcionar comigo rsrs.

    Abs

  56. Não sou programador, nao entendi quase nada do seu script, mas parabéns, pq fui no site do pagseguro e lá nao entendi nada mesmo!
    Sou pobre, tive que fazer um download do clone de compras coletivas e agora estou tentando colocar a integracao com esse retorno. Já ativei tudo, gerei o token, mas ainda nao deu certo. Peguei teu script agora, vou tentar estudá-lo.
    MAs…
    Quanto vc cobraria para colocar o codigo adaptado no meu site? Já tem algumas paginas (order/pagseguro/return.php, notify.php, pay.php, …). Como o clone é de março, deve ter mudado algumas coisas.
    Obs e obrigado

  57. DacianoBenini Says:

    Diogo, belo script e raro de se encontrar neh?! axo que isso que te motivou a faze-lo e publica-lo hahaha.

    Agora nao sei se e culpa da area de testes do .net ou o Script eh mesmo assim,
    Mas o Script esta dando INSERT em todas as informacoes… ele seria para dar UPDATE confome a TransacaoID?

    Abracos ai e parabens denovo.

  58. Seyr, o script grava a cada atualização do Status. Valeu pela força! :)

  59. Marcel, exatamente.

  60. JVogell, faz bem. Este script é para PROGRAMADORES. Um leigo pode até usar, mas certamente não estará seguro da implementação e do funcionamento. Não recomendo. Já realizo muitas consultorias na implantação do mesmo. Te enviarei um e-mail com maiores informações.

  61. DacianoBenini, você pode alterar para um INSERT/UPDATE se quiser, mas eu coloquei intencionalmente o INSERT por questões de registro, para saber passo a passo todas as interações e horarios da transação.

  62. Já fiz de tudo e o mesmo não grava no banco.
    Coloquei certo a url de retorno, redirecionamento, a conexão com o banco, token.
    Poderia ser algum problema na conta do PS ?

  63. Muito bom cara.
    Em uma hora resolvi o problema que o PagSeguro não conseguiu responder em um dia todo.
    Parabéns

  64. Meu caro, pode me dar uma simples ajuda?
    Nao estou conseguindo retornar o valor “VERIFICADO” pelo POST.
    Aí eu copiei a lista do postfields para uma tabela , montei a url completa (com os parametros) e enviei por GET mesmo, e retornou “verificado” certinho. Infelizmente o $result retorna nulo! Isso ta me deixando perplexo… Tentei imprimir os fields com o curl_getinfo mas parece que nao existe essa possibilidade.
    Tem alguma ideia em que estou vacilando?
    Abc
    Carlos

  65. DacianoBenini Says:

    Diogo, estava tentando fazer esta alteração com o update e nunca funcionava. Sempre adicionava uma nova compra na tabela. A solucao foi remover os “-” do ID da transação com esta função.

    $TID = ereg_replace(‘-’, ”, $TransacaoID);

    E salvar na database como TransacaoID,$TID…

  66. Coimbra Matos Says:

    Ótimo código, funciona certinho. Única coisa que adicionei foi este switch, pra controlar as tabelas do meu sistema sem alterar as tabelas do seu código.

    switch($StatusTransacao){
    case ‘Completo’:
    {
    break;
    }

    case ‘Aguardando Pagto’:
    {
    break;
    }

    case ‘Aprovado’:
    {
    break;
    }

    case ‘Em Análise’:
    {
    break;
    }

    case ‘Cancelado’:
    {
    break;
    }
    }

  67. Bom, pode ser N coisas. Mas tente os passos novamente, principalmente a URL de retorno, que em 99% dos casos é o motivo.

  68. Rafael, que bom! Qualquer coisa, estou a disposição.

  69. Ele retorna NULL apenas no redirecionamento. Ele não da POST junto com o usuário, e sim em background, ok? Na hora que ele te envia (redirecionando) ele apenas segue o link informado nas configurações.

  70. Coimbra, beleza! É uma boa ideia para o filtro sim. Mas não coloquei para deixar em aberto para cada programador realizar as ações da forma que desejar. Mas ta ae… #fikadica

  71. Weberth P. Lima Says:

    excelente artigo cara, mas é o seguinte, quando gera o boleto a tabela recebe todas as informações direitinho, mas quando o status do pagSeguro é alterado a tabela não recebe nenhuma informação..

    o que será?.

  72. Bruno Maciel Says:

    Dourado,
    foi erro meu ou não tem o campo valor do produto no banco de dados? (só taxa e frete)

  73. Bruno Maciel Says:

    Ah certo, está na outra tabela!!!

  74. Olá, sou programador júnior em php, nossa Diogo me salvou ! No trabalho estava me matando pra conseguir retornar o POST e encontrei seu tutorial. VLW mesmo e que continue assim.

    Agora uma coisa.

    Eu estou precisando em dar o UPDATE na tabela quando o STATUS alterar.

    Eu usei isso:

    if ($StatusTransacao == “Aguardando Pagto”){
    // Gravando Dados
    mysql_query(“INSERT into PagSeguroTransacoes SET
    VendedorEmail=’$VendedorEmail’,
    TransacaoID=’$TransacaoID’,
    Referencia=’$Referencia’,
    Extras=’$Extras’,
    TipoFrete=’$TipoFrete’,
    ValorFrete=’$ValorFrete’,
    DataTransacao=’$DataTransacao’,
    Anotacao=’$Anotacao’,
    TipoPagamento=’$TipoPagamento’,
    StatusTransacao=’$StatusTransacao’,
    CliNome=’$CliNome’,
    CliEmail=’$CliEmail’,
    CliEndereco=’$CliEndereco’,
    CliNumero=’$CliNumero’,
    CliComplemento=’$CliComplemento’,
    CliBairro=’$CliBairro’,
    CliCidade=’$CliCidade’,
    CliEstado=’$CliEstado’,
    CliCEP=’$CliCEP’,
    CliTelefone=’$CliTelefone’,
    NumItens=’$NumItens’,
    Data=now();”);

    // Recebendo e gravando produtos
    $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',
    ProdID='$ProdID',
    ProdDescricao='$ProdDescricao',
    ProdValor='$ProdValor',
    ProdQuantidade='$ProdQuantidade',
    ProdFrete='$ProdFrete'");
    }//for
    }//if

    }else {
    mysql_query("UPDATE `PagSeguroTransacoes` SET
    StatusTransacao = '$StatusTransacao' where `TransacaoID`= '$TransacaoID';");
    }//else

    Verifiquei se o Status é diferente de Aguardando Pgto., pois o primeiro post é sempre Aguardando Pgto. então conclui que o POST diferente de Aguardando Pgto deve ser alterado de acordo com a TransacaoID.

    Se estiver errado, por favor alguém me avisa. Meu email é : webicefire@hotmail.com < MSN tbm

    Agradeço e abraços para todos.

  75. Wesley, esta certo, mas desse jeito ele não ira guardar todo o historico da transação, apenas o ultimo, se funcionar para você, beleza. Eu recomendo voce utilizar um INSERT com DUPLICATE KEY UPDATE, em vez de usar o IF.

  76. Preciso de ajuda para instalar o seu retorno automatico no meu site.
    quanto vc cobraria, entre em contato.
    grato.

  77. Testei aqui, ta funcionando mais quando os status do pagamento atualiza la no pagseguro, no DATABASE nao atualiza , fica somente no Aguardar Pgt.

  78. Ola o banco de dados tem que ser separado ou junto com o da loja,
    faço o upload para a raiz da loja com o nome que esta pagseguro_retorno2.0
    ou tem que editar e depois precisa configurá-lo na admin.
    Desculpe tantas perguntas.
    Grato.

  79. Pablo Karzin Says:

    Ótimo tutorial, me ajudou muito, mas percebi uma coisa que pode ser importante!!

    O campo TransacaoID das 2 tabelas (pagseguroprodutos e pagsegurotransacoes) está como varchar 32.
    Só que o ID da Transacao suporta até 36 caracteres ! Por isso ninguém estava conseguindo fazer update caso a transacao já existisse. Eu alterei o campo para varChar 38 e consegui dar Update.

    Isso é muito importante pq se alguém tivesse querendo comparar os IDs da transacao do PagSeguro com os IDs da transacao que foram inseridos no banco, não iriam conseguir.

    Tentem aí galera. Valew

  80. Então, eu consegui mesmo com os IF. Depois eu busquei cada status do POST que vinha do pagseguro e ia tratando e inserindo na base e alterando de acordo com os POSTs.

    Quem quiser o pagseguro com alteração e tudo pode contar comigo.

    e Diogo .. meu vc é o cara …

  81. olá, esta inserindo normalmente os dados nas tabelas. agora gostaria de saber se quando o boleto for pago se vai haver alguma alteração (insert ou update ) na tabela. para eu saber se foi pago o nao aguele produto. parabens pelo script.

  82. Valeu Diogo, quebrou um galhão.

    Abraços

  83. gabriel pinheiro Says:

    Cara, parabéns pelo script. Funcionou de cara.

    Notei que o script apenas dá INSERT no banco de dados, e entendi que a cada mudança de status, eu terei um registro de data/hora que ocorreu. Muito bom!!

    Porém, o script está duplicando os produtos na tabela pagseguroprodutos. Se o status muda, ele insere na tabela de transacoes o novo registro com a atualização de data, hora e status, e também insere novamente os produtos. o que será que pode estar acontecendo?

  84. wandenberg, me envia um email para mais detalhes, ok?

  85. Claudio, se voce vai fazer uma integração, é bom ser junto com o da loja, ok? O upload fica a seu criterio, na raiz, pasta, etc. É bom editar antes de enviar para o ar, como escrito no post.

  86. Pablo Karzin, acho que você esta equivocado, de acordo com o próprio manual do PagSeguro o campo tem 32 caracteres, veja em: https://pagseguro.uol.com.br/desenvolvedor/retorno_automatico_de_dados.jhtml

    Você tem alguma transacao com o ID de 36 caracteres? pode me enviar?

  87. Obrigado, estou a disposição! :)

  88. Hugo, este script é apenas de LOG, ou seja, é apenas INSERT. A cada alteração no STATUS ele vai dar um novo INSERT no banco de dados, ok?

  89. Gabriel, valeu! Que bom que funcionou perfeitamente.

    No caso dos produtos, eu acho que você se confundiu. Os produtos se repetem, mas são de transações diferentes. Confira! ;)

  90. Pablo Karzin Says:

    Em relação a quantidade de caracteres, isso que vc falou é verdade. Na própria documentação deles, eles dizem que esse campo é de 32 caracteres e fazendo um teste com o servidor deles de verdade, realmente é isso que acontece. Ou seja, não deu problemas.

    Porém, eu tava utilizando o servidor de teste do Teoni Valois, que criou um em .Net para Windows. No servidor dele, na hora de gerar uma key para a TransacaoID, eu acho q ele tava gerando também os hífens, que tavam contando como caracteres também. Por isso tava sempre ultrapassando o limite.

  91. Muito bom o script ajudou muito
    Parabéns

  92. Olá, Belo tutorial, foi o mais perto que cheguei, mas há um problema: depois de tudo feito, o boleto gerado ele retorna ao arquivo e redireciona para a página de de teste que você colocou. Até aí tudo bem, mas não grava nada na tabela, a conexão e as permissões estão ok. Se puder me dar um luz agradeceria.

    Parabéns pelo belo trabalho.

  93. Fala Diogo, beleza?
    Vê se consegue me ajudar. O script roda tudo certinho, retorna pra URL e tudo mais…Não dá nenhum erro…

    Porém não popula o banco…Sabe oque pode ser?

    Vlw.

  94. Rafael, gere um log no script para ver se ta tudo certo realmente. Você configurou o retorno e o token na pagina do PagSeguro? :)

  95. Felipe, geralmente é erro no usuario e senha do mysql ou você nao configurou o token no painel do pagseguro

  96. Heber Holanda Says:

    Diego, primeiramente quero agradecer o script.

    Estou com um problema que preciso de uma ajuda.

    Adicionei apenas uma query para liberar PagSeguroRetorno.php // Liberar
    http://pastebin.com/rcQqrzx5

    O problema é o seguinte, oque eu adicionei ele executa, porem a parte onde ele deveria salvar a Transação e adicionar os Produtos não é executado.

    Isso talvez tenha ocorrido pois antigamente utilizava o xampp (Windows) e agora estou utilizando Apache2+PHP5+Mysql ?

    Já tentei fazer varios testes sem resultado.

    Obrigado

  97. Heber Holanda Says:

    [Sun Jan 08 23:58:55 2012]PHP Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/pag/PagSeguroRetorno.php on line 87

  98. Alex Gonzaga Says:

    Diogo, parabéns!!! Perfeito.

  99. Dourado, primeiramente parabéns pelo script.

    Fiz os testes e os dados salvam no banco de dados, entretanto ele não está redirecionando para a página CompraConcluida.html.

    Assim que conclui o pagamento, a página mostrada continua sendo a do PagSeguro informando que a compra foi concluida e não redireciona a página personalizada do meu site.

    Poderia me ajudar?o script está instalado no endereço
    site: http://www.redewebshop.com.br/pagseguro_retorno/

  100. Dourado, depois de ler os posts da galera percebi que são DUAS COISAS A SEREM FEITAS:
    URL de Retorno Automático de Dados e URL da Página de Redirecionamento.

    Tinha configurado somente a URL DE RETORNO AUTOMÁTICO e não estava voltando para meu site, após concluir a compra.

    Soltei fogos aqui até perceber mais um problema:

    Na hora de pupular no bd, ele tá inserindo caracteres com acentos e cedilhas vindos do TestarCompra.php em caracteres especiais. Por exemplo: O endereço do cliente no formulário é Rua José Antônio. No bd insere Josï Ant£ino.

    No cabeçalho do arquivo de retorno tá codificado assim:

    header(‘Content-Type: text/html; charset=ISO-8859-1′);

    Quebra esta pra mim amigo! Obrigado

  101. 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

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

  103. 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());

  104. Heber Holanda Says:

    Junior, obrigado pela ajuda.

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

  105. 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!

  106. 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!

  107. 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.

  108. Alex, valeu!! :)

  109. Marcelo, o redirecionamento voce tem que fazer na configuracao do PagSeguro

  110. Marcelo, é so colocar codificação que você usa, então deve ser UTF8

  111. Marcelo, que bom que conseguiu então! Boa sorte no projeto. Precisando de ajuda, estou a disposição. :)

  112. Leo, este erro é porque você nao consegue verificar a URL do PagSeguro, pode remover a proteção se quiser, não recomendo. ;)

  113. Leo, esse é o problema da GRANDE maioria. O pessoal so pega o script e não le o artigo. ;) #ficaadica

  114. Willain, É erro na configuração do script apenas.

  115. 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.

  116. Isaque Gomes Says:

    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

  117. 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!

  118. 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!

  119. 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

  120. Consegui resolver o problema, Script funciona Perfeitamente!

  121. 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 ;)

  122. Gabriel, valeu demais! :)

  123. Isaque, Leia atentamente a postagem. Voce nao deve ter ativado o retorno do PagSeguro.

  124. Isso ae pessoal. Antes de postarem as duvidas, leiam atentamente o POST. Não tem erro, ta funcionando 100%.

  125. 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?

  126. Alaor, para implementar o script vc tem que ter o minimo de noção de programação. Isso é erro de conexão com o banco. :)

Leave a Reply