2

我正在使用 Paypal 沙箱测试我的 PHP 脚本,该脚本适用于www.paypal.com但不适用于www.sandbox.paypal.com. 我最近收到一封来自 PayPal 的电子邮件,要求使用 HTTP 1.1 协议而不是 1.0,所以我已经这样做了,并且我正在使用Connection: close指定的标头中的 ,但 IPN URL 挂起。当我尝试它时www.paypal.com没有悬挂。

PayPal 在他们的第二封电子邮件中明确说明了这一点

这是我们在 2012 年 9 月 6 日发送的公告的后续内容。我们注意到一些商家在更新其 IPN 脚本以使用 HTTP 1.1 时遇到问题,因为这些脚本会“挂起”或需要很长时间是时候得到“已验证”的回复了。我们包含有关如何通过在 HTTP 请求中添加“连接:关闭”标头来解决此问题的说明。

但显然这行不通。

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: $url\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$header .= "Connection: close\r\n";

有任何想法吗?非常感谢帮助。

4

2 回答 2

1

您在倒数第二行有 \r\n\r\n ,它需要在最后一行...

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: $url\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Host: www.paypal.com\r\n"; 
$header .= "Connection: close\r\n\r\n";

您还需要 Host 行。

于 2013-10-11T14:49:55.880 回答
0

我不知道它为什么挂起的答案,但使用curl而不是fsockopen似乎解决了我的问题。我在这里使用了解决方案;

https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623

于 2012-10-19T15:53:06.560 回答