Jump to content

Archived

This topic is now archived and is closed to further replies.

admin

Retorno Automático PagSeguro

Recommended Posts

Dica enviada por Dennis Ferreira, Gerente do PagSeguro.

 

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!

Share this post


Link to post
Share on other sites

Boa Tarde

 

Legal saber essas informações primeiramente, elas não constam no próprio site do PagSeguro

Em segundo, se possível,

gostaria de saber as codificações

 

em coldFusion no PagSeguro, está tudo totalmente errado

o código é bem diferente e bem mais simples do que eles fizeram

entretanto há um grande problema.... qual é o CHARSET??

 

Se você recebe os dados, meu servidor trata tudo como UFT-8

Mas no PagSeguro, não sei como retornar isso

 

Não há nenhum FAQ,

nem area de teste

você nem sabe como receber, nem como retornar.

 

Torna-se dificil

 

Primeiro Tentei Encoders

 

na variavel tipopagamento passei da seguinte maneira

 

1 - Cartão de Crédito

2 - Cart%40a de Cre%29dito

 

Nenhuma das alternativas....

Em PHP, como não programo, apenas copiei o código

 

mesmo assim, o bando de dados (table) gerada por eles

é bem diferente da que eles usaram no código para inserir.

 

 

Queria algumas respostas, já que no site, nem os atendentes conseguem passar...

Share this post


Link to post
Share on other sites

Estou comercializando um código feito em C#.NET e PHP do retorno automatico do PagSeguro.

Caso haja interesse.

http://www.reginaldonoronha.net/produtos.aspx

 

Abraço

 

Boa Tarde

 

Legal saber essas informações primeiramente, elas não constam no próprio site do PagSeguro

Em segundo, se possível,

gostaria de saber as codificações

 

em coldFusion no PagSeguro, está tudo totalmente errado

o código é bem diferente e bem mais simples do que eles fizeram

entretanto há um grande problema.... qual é o CHARSET??

 

Se você recebe os dados, meu servidor trata tudo como UFT-8

Mas no PagSeguro, não sei como retornar isso

 

Não há nenhum FAQ,

nem area de teste

você nem sabe como receber, nem como retornar.

 

Torna-se dificil

 

Primeiro Tentei Encoders

 

na variavel tipopagamento passei da seguinte maneira

 

1 - Cartão de Crédito

2 - Cart%40a de Cre%29dito

 

Nenhuma das alternativas....

Em PHP, como não programo, apenas copiei o código

 

mesmo assim, o bando de dados (table) gerada por eles

é bem diferente da que eles usaram no código para inserir.

 

 

Queria algumas respostas, já que no site, nem os atendentes conseguem passar...

Share this post


Link to post
Share on other sites

Segui todas as indicações, mas não deu certo, não dá nenhum erro, nada. simplesmente não acontece nada. Segue abaixo o código da pagina de retorno. Se puder me ajudar,

 

// ENVIA DE VOLTA PARA O PAGSEGURO OS DADOS PARA VALIDAÇÃO
$PagSeguro = 'Comando=validar';
$PagSeguro .= "&Token=65937252FE57C81FC5E62A49581577BB";

foreach ($_POST as $key => $value)
{
 $value = urlencode(stripslashes($value));
 $PagSeguro .= "&$key=$value";
}



$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL,'https://pagseguro.uol.com.br/Security/NPI/Default.aspx');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);

 $resp = curl_exec($ch);

echo curl_errno($ch);
 
 curl_close($ch);
 
 $confirma = (strcmp ($resp, "VERIFICADO") == 0);




if($confirma){

$TransacaoID = $_POST['TransacaoID'];
$Referencia = $_POST['Referencia'];
$StatusTransacao = $_POST['StatusTransacao'];
$CliNome = $_POST['CliNome'];
$NumItens = $_POST['NumItens'];
$ProdValor = $_POST['ProdValor_1'];

 $SQL = "INSERT INTO TransacoesPagSeguro (" .
		"TransacaoID, " .
		"Referencia, " .
		"StatusTransacao, " .
		"CliNome, " .
		"NumItens" .
		") VALUES (" .
		"" .
		"'" . $TransacaoID . "', " .
		"'" . $Referencia . "', " .
		"'" . $StatusTransacao . "', " .
		"'" . $CliNome . "', " .
		"'" . $NumItens . "'" .
		")";
 //$Executa = mysql_query($SQL) or print(mysql_error());
$id_pedido=$Referencia; 
 $sql_pedido="update pedido set pagamento='$TipoPagamento', status='$StatusTransacao' where id_pedido='$Referencia'";
 $exe = mysql_query($sql_pedido);
 $id_pedido=$Referencia;
 

 
 $sql_data="select data_pedido from pedido where id_pedido='$id_pedido'";
 $res_data=mysql_query($sql_data) or die (mysql_error());
 $l_data=mysql_fetch_row($res_data);
 $data_pedido=$l_data[0];


}
else
{
 
  
 
}

 

Grato

 

GUilherme

Share this post


Link to post
Share on other sites

Pessoal,

 

Disponibilizei em meu website um código COMPLETO desenvolvido em .NET com muitos comentários, excelente para aprendizado e inserção direta no seu website.

 

Os códigos estão disponíveis em C#.net (http://www.oticasnet.com.br/Downloads/NPIPagSeguroCS.zip) e em VB.net (http://www.oticasnet.com.br/Downloads/NPIPagSeguroVB.zip)

 

Os próprios projetos são auto-explicativos, ou seja, não há documentação para os mesmos.

 

Mesmo sendo desenvolvido em .NET, pode ser facilmente traduzido para outra linguagem, visto que o código está muito detalhado.

 

Qualquer dúvida, postar aqui.

 

[]'s

Share this post


Link to post
Share on other sites

Então cara, estou com um problema parecido com o seu, apesar de meu código ser em FLASH. No retorno do Carrinho do PAGSEGURO, não aparece o botão de CONTINUAR COMPRANDO. Mas o incrível é que ele só não aparece no INTERNET EXPLORER, pois no MOZILA acontece tudo como deveria, como você disse, o bendito botão que não aparece no EXPLORER aparece no MOZILA! Pelo que entendi, não somos apenas nós que tropeçamos neste problema do PAGSEGURo que aliás, já fiz infinitos contatos através do site deles e o atendente responde algo sem nexo, ainda dizendo que desconhece o problema, mesmo eu enviando o endereço do meu site para ele testar "in loco". O safado diz que testou e deu TUDO CERTO! É mole??? Bom, em vista de nosso problema em comum, gostaria de saber se você conseguiu resolvê-lo e se pode me ajudar. Um abraço!

 

Pessoal,

 

Disponibilizei em meu website um código COMPLETO desenvolvido em .NET com muitos comentários, excelente para aprendizado e inserção direta no seu website.

 

Os códigos estão disponíveis em C#.net (http://www.oticasnet.com.br/Downloads/NPIPagSeguroCS.zip) e em VB.net (http://www.oticasnet.com.br/Downloads/NPIPagSeguroVB.zip)

 

Os próprios projetos são auto-explicativos, ou seja, não há documentação para os mesmos.

 

Mesmo sendo desenvolvido em .NET, pode ser facilmente traduzido para outra linguagem, visto que o código está muito detalhado.

 

Qualquer dúvida, postar aqui.

 

[]'s

Share this post


Link to post
Share on other sites

Você também pode usar a solução (grátis e livre) da biblioteca de auxilio disponibilizada pelo próprio PagSeguro.

 

Escrevi dois tópicos que explicam bem como usar tanto o retorno automático como a biblioteca de auxilio à criação de inputs para o PagSeguro.

 

Retorno automático do PagSeguro + implementação em PHP, Explicação de como funciona o retorno automático do PagSeguro

 

Implementando PagSeguro com PHP, Tutorial de como implementar a biblioteca PHP de PagSeguro

Share this post


Link to post
Share on other sites

Senhores,

Me esclareçam uma dúvida.

 

Estou usando o Joomla 1.5 com virtuemart.

Primeiramente instalei o código do pagseguro forncido pela Visie, ao realizar a compra sou direcionado para o site do pagseguro para cadastro e emissão do boleto.

Até aí normal.

 

Qual seria a função do código de retorno utilizando o Virtuemart?

O status da negociação mudaria automaticamente, tipo sairia de pendente para completa após o comprador efetuar o pagamento para o pagseguro, ou este tipo de controle deverá ser feito manualmente pelo administrador do virtuemart após receber o e-mail de pagamento realizado.

Share this post


Link to post
Share on other sites

Meu caro @F_Castel

 

exatamente isso. O retorno automático converte compras "pendentes" para "completa" assim você não precisa entrar no sistema PagSeguro e no seu admin para saber o que está acontecendo. Bote em tese que você tenha uma média de 500 compras por dia, você não iria achar legal ter que cadastrar na mão o que está pendente ou não.

Share this post


Link to post
Share on other sites

Meu caro @F_Castel

 

exatamente isso. O retorno automático converte compras "pendentes" para "completa" assim você não precisa entrar no sistema PagSeguro e no seu admin para saber o que está acontecendo. Bote em tese que você tenha uma média de 500 compras por dia, você não iria achar legal ter que cadastrar na mão o que está pendente ou não.

 

Michael Granados,

 

Você acha viável adaptar o sistema do Paypal para o PagSeguro,

 

Mudando as variáveis para que se adequem a este, tipo, incluir o Token, comando Validar.

Depois alterar o Notify.php do paypal para pagseguro...

 

Alterar o ps_paypal.cfg.php, ps_paypal.php e notyfy.php

 

Vou fazer uns testes o posto para teus comentários.

Share this post


Link to post
Share on other sites

Então @F_Castel,

 

O código fornecido pela Visie já está predefinido para você trabalhar já com o retorno automático, não precisa usar o do PayPall, até porque os sistemas são diferentes. Por exemplo, o pagseguro usa a mesma url de retorno para o envio de confirmação, já o PayPall não.

Share this post


Link to post
Share on other sites

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

Estou com um problema com o Retorno Automático.

Minha aplicação está em Java(JSP/Servlet) e meu retorno automático SEMPRE retorna "Falso".

Lendo na internet, vi que os possíveis problemas são:

- Token incorreto;

- Encode;

 

Bom, os dois ítens estão sendo seguidos à risca. Não encontro nenhum problema no código, entretanto não consigo fazer funcionar.

Receio que seja o velho problema de encode.

Em Java, não simplesmente faz-se encode, como nas outras linguagens.

Antigamente, usava-se "URLEncoder.encode(String);" para fazero encode, entretanto, por motivos de, digamos, "variações de um servidor para outro", que poderia ora fazer o decode de uma forma ora de outra, este método foi depreciado (tornou-se obsoleto).

Hoje, o usado é URLEncoder.encode(String, "UTF-8");

Entretanto, ainda retorna Falso para minha confirmação.

Não importa qual codificação eu utilizo (seja UTF-8, que é o padrão, seja ISO-8859-1, que é o usado no encod do envio no formulário ao pagseguro).

 

Bom, talvez o erro nem esteja neste ponto, entretanto, posso ver meu log e minha URL está montada perfeitamente, mas não é autenticado nunca.

 

Gostaria de saber se alguém tem alguma noção de como eu posso resolver este problema.

 

 

Grato,

 

 

 

McLuck

Share this post


Link to post
Share on other sites

Existe um erro no script do envio do POST do PagSeguro! (Ou pelo menos falta de aviso da parte de vocês na hora de configuração da URL de retorno).

 

O script de vocês não consegue retornar para urls que contêm QUERY_STRING. Por exemplo:

 

http://www.bijuonline.com/BijuOnline/teste.php ENVIA COM SUCESSO!

http://www.bijuonline.com/BijuOnline/?act=retorno NÂO ENVIA COM SUCESSO!

Share this post


Link to post
Share on other sites

Configurei conforme o código do Michael mas o retorno vem vazio! O logo ta vazio, vazio!

 

E agora quem poderá me ajudar?

 



// Aqui vai seu Token
define('TOKEN','9999999999999999999999');

// Função que captura os dados do retorno
function retorno_automatico ( $VendedorEmail, $TransacaoID, 
 $Referencia, $TipoFrete, $ValorFrete, $Anotacao, $DataTransacao,
 $TipoPagamento, $StatusTransacao, $CliNome, $CliEmail, 
 $CliEndereco, $CliNumero, $CliComplemento, $CliBairro, $CliCidade,
 $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens) {

 	$f=fopen ('pagseguro.log', 'w'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
 	fwrite($f, "'Dados Verificados! Agora minha função funciona normalmente.'\n"); # escrevendo a mensagem, mais uma quebra de linha
 	fwrite($f, var_export(array ($VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
   	   $ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
          $StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
          $CliNumero, $CliComplemento, $CliBairro, $_POST['CliCidade'],
          $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens), true)); # imprime os dados no arquivo de log

 	fwrite($f, "\nSQL: INSERT INTO PagSeguroTransacoes (TransacaoID, Referencia, CliNome, CliEmail, datahora, StatusTransacao, ProdDescricao, ProdValor) VALUES
  	  ('$TransacaoID','$Referencia', '$CliNome','$CliEmail','$DataTransacao','$StatusTransacao',
	  '{$produtos[0]['ProdDescricao']}','{$produtos[0]['ProdValor']}')\n");

 	fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
 	fclose($f);  

}

// Incluindo o arquivo da biblioteca
include('retorno.php');

if (isset($_POST)) 
{
 	$f=fopen ('pagseguro2.log', 'w'); # o "a" é para ele "appendar" o conteúdo, ou seja, colocar ao final
 	fwrite($f, "'Recebeu o post, verificando junto ao PagSeguro'\n"); # escrevendo a mensagem, mais uma quebra de linha
 	fwrite($f, var_export( $_POST, true)); # imprime os dados no arquivo de log
 	fwrite($f, "\n---------\n\n"); # um espaço para separar as ocorrencias
 	fclose($f);  
}



Share this post


Link to post
Share on other sites

Impressionante... será que um dia irá voltar a funcionar???

 

Dica enviada por Dennis Ferreira, Gerente do PagSeguro.

 

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!

 

Share this post


Link to post
Share on other sites

Estou tendo um problema, tenho recebido retorno de operação concluida pelo token, mas quando vou ao pagseguro, observo que a transação não foi concretizada, isso tem ocorrido constantemente, como acabar com essa mensagemm falsa?

Share this post


Link to post
Share on other sites

Hi

I am not able to download . its saying page not found .

 

JAYASON

 

 

Personal

 

Made available in my website a code developed in FULL. NET with many comments excellent for learning and direct insertion on your website.

 

The codes are available in C #. Net ([url = "http://www.oticasnet.com.br/Downloads/NPIPagSeguroCS.zip"] http://www.oticasnet.com.br/Downloads/NPIPagSeguroCS.zip [ / url]) and in VB.net ([url = "http://www.oticasnet.com.br/Downloads/NPIPagSeguroVB.zip"] http://www.oticasnet.com.br/Downloads/NPIPagSeguroVB.zip [/ url])

 

The projects themselves are self-explanatory, ie, there is no documentation for them.

 

Even being developed. NET can be easily translated into another language, since the code is very detailed.

 

Any questions, post here.

 

[] 's

[/ quote]

Share this post


Link to post
Share on other sites

Hi

Can you tell me how we can redirect to our site . How will this paypal know where to return . Can we pass some return URL while posting the data .

 

Thanks

JAYASON

 

 

I am selling a code written in C #. NET and PHP automatic return of PayPal.

In the event of interest.

[url = "http://www.reginaldonoronha.net/produtos.aspx"] http://www.reginaldonoronha.net/produtos.aspx [/ url]

 

Abraço

 

Good Afternoon

 

Nice to know this information first, they do not appear on the site of PayPal

Second, if possible,

would like to know the encodings

 

ColdFusion in the PayPal, it's totally wrong

the code is quite different and much simpler than they did

however there is a big problem .... what is the charset?

 

If you receive the data, my server treats everything as UTF-8

But in PayPal, I do not know how to return it

 

There is no FAQ,

or test area

you do not know how to get or how to return.

 

It is difficult

 

First I tried Encoders

 

the variable tipopagamento spent as follows

 

1 - Credit Cards

2 - Cart 40th Cre% 29dito%

 

None of the ....

In PHP, like do not write code, just copied the code

 

anyway, the band of data (table) generated by them

is quite different from what they used to insert the code.

 

 

He wanted some answers, since the site, nor the attendants can pass ...[/ quote]

[/ quote]

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.