2013-08-04 100 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再次! –