Paypal からの IPN 応答を確認したいのですが、何らかの理由で応答を読み取ることができません。
これは私が使用しようとしているコードです:
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
if(!$fp)die();
fputs($fp, $header . $postback);
$res=stream_get_contents($fp); #this triggers 500 error
接続を開きますfputs
が、最後の行でハングアップし、かなりの量の待機後に戻ります500 error
。
何が問題なのですか?
注:行にコメントを付けてもfputs
、まったく同じことが起こります。
ヘッダー:
$postback='cmd=_notify-validate&'.http_build_query($_POST);
// build the header string to post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($postback) . "\r\n\r\n";
編集
curl を使用しようとしましたが、常に空の応答が返されます。
$ch = curl_init( 'https://www.sandbox.paypal.com/cgi-bin/webscr' );
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postback);
$strCurlResult = curl_exec($ch);
curl_close( $ch );
echo $strCurlResult;
上記のコードは何も出力しません。