几天来,我的 Paypal IPN 侦听器脚本一直存在问题。对于那些不熟悉 Paypal IPN 系统的人,Paypal 基本上会向您的脚本发送一条有关交易的消息,然后您将其发送回来并添加一些位。如果 Paypal 收到正确的回复,它会回复 'VERIFIED',如果没有,它会说 'INVALID'。
我最初认为我遇到的问题是使用 'fsockopen' 命令: $fp=fsockopen('ssl://sandbox.paypal.com', 443, $errno, $errstr, 30); 但是,将我的所有代码减少到几乎只有这一行,它似乎可以连接。问题来自“feof”和“fgets”命令。脚本就挂了,不知道为什么。我基本上复制了 Paypal IPN Listener 网站上建议的代码,所以我认为它会起作用!如果您能帮助我理解为什么 feof 或 fgets 导致它停止,那么您的帮助将不胜感激。
这是完整的脚本:
$postback = 'cmd=_notify-validate'; //doesn't matter what these include for now
$header='abc';
//Script has been activated, create debug
$filename = 'debug/debug1_script.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle,$postback);
fclose($filehandle);
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);//open the connection
//no connection, create debug file
if(!$fp){
$filename = 'debug/debug2_fpfail.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle, $errstr.'('.$errno.')');
fclose($filehandle);
die();
}
//post data back
fputs($fp, $header . $postback);
//create debug file
$filename = 'debug/debug3_postback.txt';
$filehandle=fopen($filename, 'w');
fwrite($filehandle, $header.$postback);
fclose($filehandle);
//script hangs with either of the two following lines included
while(!feof($fp)){
$res=fgets($fp,1024);
}
提前谢谢了!