Tutorial: Retorno Automático

Nosso leitor Paulo Santana pediu mais informações sobre o Retorno Automático PagSeguro. Lá no Fórum do i-Masters, temos uma categoria só para ajudar os nossos clientes e parceiros.

Vamos transcrever aqui o tutorial:

A URL de retorno tem duas funções distintas. Uma é redirecionar o usuário após terminar a transação no PagSeguro para o site da loja, apenas redirecionando à página, sem nenhum dado de POST. A outra é enviar os dados da transação e alteração de status da transação via POST.

O POST é automático, enviado ao final da transação e quando ocorre alteração do status, ambos em background, abrindo uma nova sessão no seu web site. Não é possível a exibição imediata no seu web site dos dados do post (echo, print, Response.Write, etc).

Alguns desenvolvedores enfrentam situações em que não conseguem receber o POST. Seguem abaixo os principais motivos e dicas para resolução do problema:

- É necessário que o website e a URL de retorno estejam hospedados em um domínio válido.

- Não poderá ser uma aplicação local (você nunca conseguirá receber os dados em um ambiente local, como “localhost” por exemplo).

- O código de NPI (Notificação de Pagamento Instantâneo) não conseguirá ler valores de Sessions ou Cookies, porque assim que o PagSeguro envia o POST para o seu web site, é aberta uma nova sessão (conforme mencionado acima).

- Não há restrições de saída no PagSeguro, mas caso você não esteja recebendo nenhum dado do PagSeguro, verifique no seu firewall a liberação do IP de POST do NPI: 200.221.19.20 e IP de Redirecionamento simples: 200.221.19.4.

- Servidor configurado em uma porta da 80 (HTTP) ou 443 (HTTPS).

- Não é possível imprimir nenhum campo do post no momento do recebimento do mesmo (echo, print, Response.Write, etc).

- As informações deverão ser salvas em seu banco de dados, arquivo texto ou XML no momento do recebimento.

- A programação do retorno automático deve enviar de volta para o PagSeguro todos os campos recebidos no POST, mais o comando=validar e o token=”Seu Token”.

- Use o token de segurança para validação da transação.

- Retorne os dados para validação sem nenhuma conversão, exatamente da maneira como recebeu (verifique se a sua string está sendo enviada com Encode, por exemplo: “%20” ou o sinal de adição “+” substituindo o espaço, etc).

- É muito importante sempre colocar um debug em seu código, salvando o erro do debug no seu banco de dados para analisar onde e porque ocorreu o erro no momento do retorno.

- O script em nossa página é apenas ilustrativo, cada desenvolvedor altera de acordo com o próprio sistema.

- Observe todos esses itens, e se ainda você não conseguir receber o POST, entre em contato com nosso suporte técnico, clicando em Atendimento após logar em conta PagSeguro.

Bons negócios!

(e venha para o fórum, saber mais sobre o sistema do PagSeguro)

p.s. tem mais dicas no site da Visie:

Como funciona:http://visie.com.br/pagseguro/retorno-automatico.php

Capturar o retorno automático do PagSeguro, usando a biblioteca: http://visie.com.br/pagseguro/retorno-automatico-php.php

9 thoughts on “Tutorial: Retorno Automático”

  1. Boa tarde, Isaque!

    O PagSeguro garante o envio o envio de todas as notificações, o que não quer dizer que o seu sistema irá recebê-las, pois existem vários cenários onde não conseguiremos completar o contato com o seu servidor, como por exemplo, um instabilidade em sua conexão.
    Nesse caso, indicamos o uso da API de Consulta por Intervalo de Datas.
    Para mais detalhes do funcionamento dessa Consulta, acesse: https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-por-intervalo-de-datas.html

    E para obter os dados completos de uma transação, a API de Consulta por Código:
    https://pagseguro.uol.com.br/v2/guia-de-integracao/consulta-de-transacoes-por-codigo.html

    Fico à disposição para mais informações.

    Atenciosamente,

  2. Acho que o PagSeguro deveria ter um tutorial mais explicativo, vídeos talvez…

    A grande maioria dos programadores pecam na hora de receber os dados do post além de confundir muito Retorno automático de dados e Página de redirecionamento.

    Mais uma vez, acho que o PagSeguro deveria ter um tutorial mais explicativo, passo a passo, uma vez que os dados tratam-se de compras e vendas, o que inclui dinheiro e negociações.

  3. Cara, seguinte, estou com o problema do POST estar vindo vazio, já tentei todas as formas para mudar isso mas nao consegui será que alguem nao tem uma solução ai nao?

  4. Ao final da transação o cliente é redirecionado via GET para sua página de retorno e em uma outra sessão é feito um POST com os dados da transação.

    No momento em que você receber um request do tipo GET deve exibir uma mensagem de agradecimento pela compra e no momento em que receber um request do tipo POST deve ler as informações contidas nele e fazer o tratamento adequado.

    Mais informações adicione nosso contato do MSN: desenvolvedores@pagseguro.com.br

  5. O POST é enviado uma única vez. Caso está situação ocorra a informação fica disponível dentro do painel de controle de sua conta, no Extrato de Transações.

  6. O que acontece quando falha?

    Suponha, por exemplo, uma falha na conexão, ou meu servidor está fora do ar, então o meu POST para a UrlNPI do PagSeguro retorna errado, ou nem retorna. O que acontece?

    O PagSeguro repete o POST até conseguir uma resposta válida? Quantas vezes? De quanto em quanto tempo?

    O PagSeguro não repete o POST e eu perco a informação?

  7. Porque então p pagseguro fala no tutorial do painel de controle que existe somente um pedido de POST, agora vc esta falando que existem 2 tipo de de pedido, um com POST e outro sem POST. Mais o próprio pagseguro fala para configurar uma página para validar somente dados em post, nã to entendendo? Não vi nenhuma informação de configurar dados sem POST.

  8. Consegui resgatar os dados da transação, só que eu precisaria usar uma informação salva já em uma session, no caso seria o CODCLIENTE, pq com esse retorno eu gero um crédito para o cliente do meu site. Alguém tem uma luz de como eu posso fazer pra resgatar essa session? obrigado desde já.

Comments are closed.