2014-10-10 2 views
0

Эта проблема появилась недавно: я не могу получить ответ от изолированной песочницы PayPal (IPN).Sanbox Paypal IPN не отправляет ответ, отлично работает с реальным сайтом Paypal

Я использую следующий код:

import requests 
params = {} #all params paypal sent via IPN, empty here for sake of brevity 
params['cmd'] = "_notify-validate" 
r = requests.post("https://www.sandbox.paypal.com/cgi-bin/webscr", params = params) 

Это возвращает сообщение об ошибке, говорящее «сброс соединения пэром»

Обратите внимание, что этот код работает отлично, прежде чем, и если я использую живой сайт Paypal URL вместо песочницы, тогда я получаю ответ вместо ошибки соединения.

Может ли кто-нибудь проверить, если это проблема на конце Paypal? Ни один из моих кодов не изменился, но со вчерашнего дня ни один из моих тестов с использованием песочницы больше не будет работать.

+0

У меня точно такая же проблема прямо сейчас ... – Booski

ответ

1

Это было на самом деле проблема с моим кодом Python. Как ни странно, я не изменил модуль запросов, но он перестал работать с тем же кодом.

Как только я изменил отправку переменных IPN через аргумент data, вместо «params», тогда я смог получить ответ, как обычно.

r = requests.post("https://www.sandbox.paypal.com/cgi-bin/webscr", data = params) 
2

В настоящее время PayPal не имеет проблемы с IPN в среде Sandbox. Я тестировал и не смог воссоздать описанную проблему. Не могли бы вы попробовать проверить код ниже, чтобы узнать, есть ли у вас такой же результат?

<?php 
 

 
// change email from [email protected] to a valid one. 
 

 
// read the post from PayPal system and add 'cmd' 
 
if($_SERVER['REQUEST_METHOD']!="POST") die("No data"); 
 
$req = 'cmd=_notify-validate'; 
 
foreach ($_POST as $key => $value) { 
 
$value = urlencode(stripslashes($value)); 
 
$req .= "&$key=$value"; 
 
} 
 

 
// post back to PayPal system to validate 
 
$url=(!isset($_POST['test_ipn'])) ? 'https://www.paypal.com/cgi-bin/webscr' : 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 
 

 
    $curl_result=$curl_err=''; 
 
    $ch = curl_init(); 
 
    curl_setopt($ch, CURLOPT_URL,$url); 
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
 
    curl_setopt($ch, CURLOPT_POST, 1); 
 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req))); 
 
    curl_setopt($ch, CURLOPT_HEADER , 0); 
 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
 
    $curl_result = @curl_exec($ch); 
 
    $curl_err = curl_error($ch); 
 
    curl_close($ch); 
 

 
//are we verified? If so, let's process the IPN 
 
if (strpos($curl_result, "VERIFIED")!==false) 
 
{ 
 
//do your IPN stuff here 
 
$mail_From = "From: [email protected]"; // enter an email address alias here example [email protected] please note this does not need to be a real email address 
 
$mail_To = "[email protected]"; //enter the email address you want to receive the email at 
 
$mail_Subject = "VERIFIED IPN"; 
 
$mail_Body = $req; 
 

 
foreach ($_POST as $key => $value){ 
 
$emailtext .= $key . " = " .$value ."\r\n\r\n"; 
 
} 
 

 
mail($mail_To, $mail_Subject, $emailtext . "\r\n\r\n" . $mail_Body, $mail_From); 
 
} 
 
else{ 
 
$mail_From = "From: [email protected]"; 
 
$mail_To = "[email protected]"; 
 
$mail_Subject = "INVALID IPN"; 
 
$mail_Body = $req; 
 

 
$emailtext = "you didn't get anything"; 
 
mail($mail_To, $mail_Subject, $emailtext . "\r\n\r\n" . $mail_Body, $mail_From); 
 
} 
 

 
?>

Или пойти в хранилище GitHub, чтобы найти дополнительные образцы IPN.

https://github.com/paypal/ipn-code-samples