0

我正在尝试制作一个 php 页面来收听 Paypal 的 IPN。我已经让它在沙箱中工作了,现在我想把它推到 prod 上。我找不到正确的 SSL 请求。

这是我的 php 脚本的一部分:

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

$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

问题的第二部分:如何在用户购买东西之前测试它是否有效?

4

1 回答 1

1

ssl://www.paypal.com 是要验证的地址。

确保 /cgi-bin/webscr 是您将 POST 发送到的 URI,并且它在有效负载中包含 cmd=_notify-validate。

此外,将您的 HTTP 版本设置为 HTTP/1.1。未来将不再支持HTTP/1.0 请求。
您已经添加了 Host 标头,因此从技术上讲,您已经在发送 HTTP 1.1 数据。

请注意,HTTP 1.1 可能会返回分块数据,因此如果您使用 fsockopen(),它需要能够处理它。
(cURL 没有这个问题,因为它是一个更复杂的 HTTP 库,而不是 fsockopen,后者纯粹是一个套接字连接。)

于 2013-08-04T12:42:44.650 回答