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

Paypal IPN传递失败:500内部服务器错误(沙盒),paypal,sandbox,paypal-ipn,Paypal,Sandbox,Paypal Ipn,几天来,我们一直在开发一个使用PAYPAL IPN的网站功能。当我们在developer.paypal IPN模拟器中测试IPN侦听器时,会收到一条错误消息“IPN交付失败:500内部服务器错误”。同样在sandbox.paypal帐户的IPN历史记录中,我们得到了500的HTTP响应代码。然而,如果我们将这些代码行从sandbox更改为paypal,我们将得到200(已发送)的HTTP响应代码 两个月前,我开发了一个类似的IPN侦听器,当我在沙盒中测试时,它运行良好。昨天我试着测试IPN侦听器

几天来,我们一直在开发一个使用PAYPAL IPN的网站功能。当我们在developer.paypal IPN模拟器中测试IPN侦听器时,会收到一条错误消息“IPN交付失败:500内部服务器错误”。同样在sandbox.paypal帐户的IPN历史记录中,我们得到了500的HTTP响应代码。然而,如果我们将这些代码行从sandbox更改为paypal,我们将得到200(已发送)的HTTP响应代码

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

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