IPN传递失败:500内部服务器错误(沙箱)

时间:2013-10-23 03:29:01

标签: paypal sandbox paypal-ipn

我们一直致力于使用PAYPAL IPN的网站功能几天。当我们在developer.paypal IPN模拟器中测试我们的IPN监听器时,我们收到错误消息“IPN Delivery Failed:500 Internal Server Error”。同样在sandbox.paypal帐户的IPN历史记录中,我们得到500的HTTP响应代码。但是,如果我们将这些代码行从沙箱更改为paypal,我们会得到200(已发送)的HTTP响应代码。

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";

//use www.paypal for a live site
//$header .= "Host: www.paypal.com\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";
$header .= "Connection: close\r\n\r\n";
$errstr=$errno='';

$paypalurl='ssl://www.sandbox.paypal.com';
//$paypalurl='ssl://www.paypal.com';

$fp = fsockopen ($paypalurl, 443, $errno, $errstr, 30);

两个月前,我在一个类似的IPN监听器上工作,当我在沙盒中测试时,它运行良好。我试图昨天测试那个IPN监听器,它也给了我500个HTTP响应代码。我试图在错误日志中查找错误,但没有列出有关最近的HTTP请求的错误。

1 个答案:

答案 0 :(得分:1)

  1. 使用curl库。 PayPal不再推荐此代码。
  2. 如果可能,请在后台作业队列中执行此操作,以便在出现故障时重试。 PayPal有时会有糟糕的日子,它偶尔会在完全有效的请求中响应ISE 500。解决这个问题的唯一办法就是在后台处理IPN回调。
  3. 此外,有时PayPal会以200 OK和一些垃圾回复。这就是为什么你的代码应该准备好处理三种情况的原因:响应是'验证' - >继续,响应是'无效' - >记录和删除,其他一切 - >记录并将其放回队列以便稍后重试。