tadarank afiliados

11 setembro, 2013

Solução: Sandbox do Paypal não funciona no código IPN Listener

Ae,

Coisa rápida que me ajudou e talvez ajude outros que estão na briga da integração com o sistema de pagamentos do Paypal.

Ao identificar um pagamento, o paypal chama o notify_url que você configurou em seu form.
Daí, neste notify_url você faz o código de tratamento e talz .

Porém, muitas vezes, este código de tratamento só funciona no paypal real e não funfa no sandbox do paypal (o local para testes).

O que fazer?

O código que a maioria tem (em php) para o IPN tem uma parte assim:

// post back to PayPal system to validate //
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

//For the below line i have tried "www.sandbox.paypal" as well as "www.paypal"
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

A solução é adicionar um parâmetro HOST no header, ficando assim:

// post back to PayPal system to validate //
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

Claro que você fará as devidas adaptações...

Tal falha da documentação do paypal me fez perder 1 hora de sono na madrugada e metade da manhã.
Só achei a solução graças a este post no stackoverflow: http://stackoverflow.com/questions/17718722/paypal-ipn-sandbox-ipn-listener-no-verified-or-invalid/17721965#17721965

Quer trocar idéia sobre integração no paypal (não sou especialista, só um iniciante)? Comenta ae. Gostou da dica acima? Então clica nos botões de compartilhamento abaixo e me ajude a dica a subir no Google.

Nenhum comentário:

Postar um comentário

Resultado! Concursos