2016-10-05 5 views
0

私はこの問題をデバッグしたり、オンラインで答えを見つけたり、すべてのことを知らせたりするために、過去5時間を試してきました。私はサンドボックスでテストしていますが、同じ問題がライブサーバー上に存在します。サンドボックスではなくコードで問題があると考えられますが、そのことがわかりません。私のコードは基本的にPayPalの例hereから直接コピーされます。 PayPal IPN response empty

// Step 2: POST IPN data back to PayPal to validate 
$ch = curl_init(); 
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); 
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); 

if(!($res = curl_exec($ch))) { 
    error_log("Got " . curl_error($ch) . " when processing IPN data"); 
    mail($notifyemail,'CURL error on IPN',"Got " . curl_error($ch) . " when processing IPN data"); 
    curl_close($ch); 
    exit; 
} 
curl_close($ch); 

は(私は簡潔にするため、このコードの上にすべてのものを残しますが、この前に、すべてのコードが。私は $reqのための両方の文字列と配列を使用してテストしたテストされ、正常に動作することが確認されたので安心)

サンドボックスでテストすると、IPN was sent and the handshake was verifiedと表示されます(ポート443が開いていることを私に示唆)。しかし、$ resは常に空です。見知らぬ人でさえ、私のデバッグ中に私のコードは、のステップの前後に、私のコードが私にメールを送ってくれるステップを追加しました。その両方のケースでは、URLを除くすべてが空です。オプションが存在しないかのように要求にまったく追加されます。私はそれが正常であるかどうかを知るために十分な経験がありません。

PayPalがIPNの言う:

HTTP response code: 200 
Delivery status: Sent 
No. of retries: 0 
IPN type: Transaction made 

私はhttps://github.com/Quixotix/PHP-PayPal-IPNからライブラリに交換し、代わりにすることをを使用してみました、そしてそれは以来、私にはどんな意味がありませんcURL error: [7](接続できない)をログに記録再び握手が確認された。私は$listener->getTextReport()の内容を私に電子メールで送ったが、エラー情報はまったく含まれていない。 use_ssluse_curlの様々な組み合わせを試し

は、私のエラーログは次のようになります。

[05-Oct-2016 16:40:13 America/Toronto] cURL error: [7] 
[05-Oct-2016 16:47:22 America/Toronto] PHP Warning: fsockopen(): unable to connect to ssl://www.sandbox.paypal.com:443 (Operation not permitted) in /home/[stuff]/public_html/[stuff]/ipnlistener.php on line 144 
[05-Oct-2016 16:47:22 America/Toronto] fsockopen error: [1] Operation not permitted 
[05-Oct-2016 16:50:39 America/Toronto] cURL error: [7] 
[05-Oct-2016 16:51:55 America/Toronto] PHP Warning: fsockopen(): unable to connect to www.sandbox.paypal.com:80 (Operation not permitted) in /home/[stuff]/public_html/[stuff]/ipnlistener.php on line 144 
[05-Oct-2016 16:51:55 America/Toronto] fsockopen error: [1] Operation not permitted 

あり、私が間違って取得したり見下ろすだ何かでなければなりませんが、私の人生のために私は何のことを把握することはできませんになり得る。どんな助けも非常に高く評価されます。

答えて

0

ウェブホストがwww.sandbox.paypal.comをホワイトリストに登録していないことが問題だったようです。したがって、この問題に遭遇している他の誰かに教訓を与えてください:ウェブホストにチェックして、必要なことをさせるためにすべてが実際に適切になっていることを確認してください。

Sidenote:これで私は経験を積んだので、私は終わりに使い始めたIPNライブラリをお勧めします。テスト環境とライブ環境、cURLとソケットの間をすばやく切り替える機能は非常に有益で有益で、一日の終わりにはテストが大幅に高速化されました。