我正在尝试制作一个php页面来收听Paypal的IPN。我已经让它在沙盒中工作了,现在我想推动它。我找不到合适的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);
问题的第二部分:如何在用户购买之前测试它是否有效?
答案 0 :(得分:1)
ssl://www.paypal.com是要验证的地址。
确保/ cgi-bin / webscr是您要发送POST的URI,并且它在有效负载中包含cmd = _notify-validate。
此外,将HTTP版本设置为HTTP / 1.1。 HTTP / 1.0请求将来会not be supported anymore 您已经添加了主机标头,因此您在技术上已经在发送HTTP 1.1数据。
请注意,HTTP 1.1可能会返回分块数据,因此如果您使用的是fsockopen(),则需要能够处理它。
(cURL没有这个问题,因为它是一个更复杂的HTTP库,而不是fsockopen,它纯粹是一个套接字连接。)