質問

私はPayPalのIPNリスナーを実装する相対PHPの初心者だと、すべては私が本当に応答コードをチェックする方法を知らない。

を除いて、正常に動作しているようです

私はcURLを持つ醜い何かを試してみたが、それは、すべての(私は理解のcURLないよ)。

で動作しません。

私は、ネット上のどこかから取得するコードのこの部分を試してみた:

$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$response_headers = get_headers($fp);
$response_code = (int)substr($response_headers[0], 9, 3);

...しかし、それは働いていない(リターンを$ RESPONSE_CODE = 0)。

だから、今、私は応答200をチェックせず、私のIPNのコードをデバッグしています。

これを確認するために、適切な/簡単な方法は何ですか?

缶誰より経験豊富なアドバイスを私に

おかげ

役に立ちましたか?

解決

これはget_headers(の $ URL の)、ないget_headers($ FP)です。私は、それは完全に間違って読んでいる(と私は見たことがない他のいくつかのモードがあります)がない限り、あなたはそれをあなたが、いないソケットハンドルから読んでいるURLを渡す必要があります。それはあなたの現在のタスクのために役に立たないだろうので、実際に、それは明らかに、独自のGETを行います。

fsockopenの(...)低いレベル(TCP / IP)機能です。これは、ソケットハンドルではなく、CURLハンドルを返します。これは、あなたがそれにcurl_getinfo(...)を使用することができない理由です。あなたはこのような何かをしたい...

$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($fp);

$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);

私が覚えているものを除き、あなたはポストフィールドに「CMD = _notify-検証」を追加する必要があります。

(...)fsockopenのは使用しないでください。うん、私は知っている、それは、ペイパルのサンプルコードが何をするかです。しかし、どこにでも実行するためのものだ、とCURLがインストールされているに頼ることはできません。あなたは、それを使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top