0

我想验证来自贝宝的 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;

上面的代码什么也没输出。

4

0 回答 0