2013-08-04 36 views
0

我想要制作一个php页面来收听PayPal的IPN。我已经在沙箱里工作了,现在我想推动它。我无法找到正确的SSL请求。什么是PayPal IPN的ssl地址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

+0

这是结帐URL,而不是IPN验证。差异很小。 – Robert

回答

1

SSL://www.paypal.com是来验证地址。

确保/的cgi-bin/webscr是URI你发送的POST到,并且它包括在有效载荷中CMD = _notify-验证。

此外,将您的HTTP版本设置为HTTP/1.1。 HTTP/1.0请求将在not be supported anymore
您已经添加了一个Host标题,所以您在技术上已经发送了HTTP 1.1数据。

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

+0

thx为答案!当我使用IPN模拟器时,当我将结果转储到文件'fputs($ fp,$ header。$ req)时,我得到INVALID; file_put_contents('log2.txt',$ fp);'。这是否意味着出现问题? –

+0

这意味着你至少可以连接,所以这很好。这意味着您发送的POST数据与您收到的数据不完全匹配。您为验证而返回的数据必须与从PayPal收到的数据完全匹配,以便返回“VERIFIED”响应。 – Robert

+0

好吧我有它工作。 Thx再次! –