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
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
Heber Holanda, vai no mysql_query acima do mysql_num_rows e coloca no final antes do ; assim “or die (mysql_error())” ( sem parenteses )
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());
Junior, obrigado pela ajuda.
O erro irá ficar salvo no arquivo de log do apache correto ?
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!
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!
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.
Alex, valeu!! :)
Marcelo, o redirecionamento voce tem que fazer na configuracao do PagSeguro
Marcelo, é so colocar codificação que você usa, então deve ser UTF8
Marcelo, que bom que conseguiu então! Boa sorte no projeto. Precisando de ajuda, estou a disposição. :)
Leo, este erro é porque você nao consegue verificar a URL do PagSeguro, pode remover a proteção se quiser, não recomendo. ;)
Leo, esse é o problema da GRANDE maioria. O pessoal so pega o script e não le o artigo. ;) #ficaadica
Willain, É erro na configuração do script apenas.
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.
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
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!
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!
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
Consegui resolver o problema, Script funciona Perfeitamente!
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 ;)
Gabriel, valeu demais! :)
Isaque, Leia atentamente a postagem. Voce nao deve ter ativado o retorno do PagSeguro.
Isso ae pessoal. Antes de postarem as duvidas, leiam atentamente o POST. Não tem erro, ta funcionando 100%.
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?
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. :)
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.
Diogo
Como devo fazer para retornar o valor status que deve ser um inteiro?
Qual é a variável que recebe este valor?
Funcionou direitinho aqui! Muito obrigado!
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'");
}
Parabéns! Muito bem escrito e funcionou de prima.. bom que existem pessoas assim interessadas em ajudar.
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 ?
Fatcho, Deve ser algo com sua hospedagem, creio que na conexão com o banco de dados. Ai é so testando mesmo.
Marcelo, valeu!
Kelcio, valeu, qualquer duvida, so dizer! :)
Marcos, valeu pelas dicas! :)
Marocs, Inteiro? Status é CHAR.. consulte documentação! :)
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á.
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!
Cara que script difícil de configurar, levei quase 2 segundos kkkkk,
na boa bela iniciativa parabéns pelo seu script 100% recomendado!
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
Perfeito, excelente …..
Acabei de configurar e funciona perfeitamente….
Parabéns Diogo, por se dedicar e compartilhar seus conhecimentos..
Abraços
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?
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 ?
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.
Gabriel, tem um arquivo que se chama Testaralgumacoisa… usa ele e gera um boleto, ok?
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?
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.
Pedro, so usar a “referencia” da compra e fazer o UPDATE. Nao tem misterio.
Andresa, que bom que funcionou tudo certinho. Qualquer coisa, estou a disposição! :)