2012-05-11 19 views
1

PayPalのサンドボックスで完全にテストし、プロセスが完璧に動作したら、私はそれを生きているし、それは動作していない。PayPal IPNリスナーレスポンス

私はPayPalからnotify_urlを介してPOSTデータを受信して​​います。私はその後、cmd = _notify-validateを使ってPayPalに送り返します。

私はPayPalに文書化されたコードを使用して、これを使用してPayPalにメッセージを送信しています。

(応答を取得するには、このコードを使用して)
$header .= "POST /cgi-bin/webscr HTTP/1.0\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.paypal.com', 443, $errno, $errstr, 30); 

$res = stream_get_contents($fp, 1024); 

私は戻ってきてるの応答:

HTTP/1.1 200 OK 
Date: Fri, 11 May 2012 20:51:28 GMT 
X-Frame-Options: SAMEORIGIN 
Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=SdeBuKBN39mjr3w791CHr_MlSkoBdDmbxpQOjT_WOicyD_Sg6BYZm8koiEv2-5XBUkCjpXQwFqIxIQgIyo3e7arO8015CVw96dpne2CNjbgc1CvpDlqXn72IBWq%7cW7uYn6Za7ljG4iLtLVcyFoPk8gZD7sr_S8WjwZrZWD8UXzE7KAH3bll9TVik3wbdCFlrZG%7csxrZZHSH5SWBGfrKsIU6Dz-K43j4h37efIkWFcVJVER0ncRxNJ0wANN1Dp3pZpV2PLxC1m%7c1336769488; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: cookie_check=yes; expires=Mon, 09-May-2022 20:51:28 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navlns=0.0; expires=Thu, 06-May-2032 20:51:28 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: Apache=10.73.8.50.1336769488653443; path=/; expires=Sun, 04-May-42 20:51:28 GMT 
Vary: Accept-Encoding 
Strict-Transport-Security: max-age=14400 
Connection: close 
Content-Type: text/html; charset=UTF-8 
Set-Cookie: TSe9a623=bb3c8ce40a7f3f6d1c018255c9

私が届かないことは無効であるまたは検証これの応答。これはPayPalの全出力です。サンドボックスでは、最後の行で検証されていましたが、Set-Cookieはありませんでした。

私はINVALIDまたはVERIFIED応答を受け取っていないのが奇妙なようです。

何か提案がありがとうございます。

答えて

1

fwrite/fputsを使用してソケットにリクエストを書き込んだのですか?また、その応答の長さで判断すると、ストリームから1024バイト以上を読み取る必要があるかもしれません。それはひどく近いです。

あなたは、ループ内で応答を読むことをお勧めします:

$resp = ''; 
while (!feof($fp)) { 
    $resp .= stream_get_contents($fp, 1024); 
} 

次に、あなたが使用して身体からヘッダを分離することができます

ブリリアント
list($headers, $response) = explode("\r\n\r\n", 2); 
+0

を!それが問題でした。 –