paypal - IPN 发送失败 :500 Internal Server Error (sandbox)

标签 paypal sandbox paypal-ipn

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

$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. 使用 curl 库。 PayPal 不再推荐此代码。
  2. 如果可能,请在后台作业队列中执行此操作,以便在失败时重试。 PayPal 有时会遇到糟糕的日子,它偶尔会对完全有效的请求做出 ISE 500 的响应。为我们解决这个问题的唯一方法是在后台处理 IPN 回调。
  3. 此外,有时 PayPal 会回复 200 OK 和一些垃圾信息。这就是为什么您的代码应该准备好处理三种情况:响应为“已验证”-> 继续,响应为“无效”-> 记录并删除,其他所有内容-> 记录并放回队列稍后重试。<

关于paypal - IPN 发送失败 :500 Internal Server Error (sandbox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532258/

相关文章:

asp.net-mvc - ASP.NET MVC : Triggering an action before posting to Paypal payment gateway

haskell - 哪些软件包被硬连线到 GHC 中?

windows - 如何使用应用程序的虚拟化注册表创建 'sandbox'?

iphone - iBooks 能够读取其他应用程序沙盒中的文件

c# - 如何处理paypal电子支票

php - PayPal Rest API PHP 服务端点错误

php - PayPal不显示订单摘要-Omnipay

paypal - 为什么使用 Paypal 付款后,我的商店页面显示为空白?

paypal - 在 IPN 争议通知中识别用户或其订单