标签:paypal-ipn php paypal
几天前突然停止接收来自paypal的IPN消息.
我写了下面的代码
$url_parsed=parse_url('https://www.sandbox.paypal.com/cgi-bin/webscr');
$post_string = '';
foreach ($_POST as $field=>$value) {
$post_string .= $field.'='.urlencode(stripslashes($value)).'&';
}
$post_string.="cmd=_notify-validate";
$fp = fsockopen($url_parsed['host'],"80",$err_num,$err_str,30);
$myFile = "testpaypal.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $post_string;
fwrite($fh, $stringData);
fwrite($fh, "------------");
if(!$fp){
return false;
} else {
fputs($fp, "POST $url_parsed[path] HTTP/1.0\r\n");
fputs($fp, "Host: $url_parsed[host]\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($post_string)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $post_string . "\r\n\r\n");
while(!feof($fp))
{
$ipn_response .= fgets($fp, 1024);
}
fclose($fp);
if (eregi("VERIFIED",$ipn_response)) {
fwrite($fh, "VERIFIED");
return true;
} else {
fwrite($fh, "UNVERIFIED");
return false;
}
}
fclose($fh);
此代码将err_num返回到“0”以及在“fclose($fp);”之后打印$ipn_response时行打印“HTTP / 1.0 302找到位置:https://www.sandbox.paypal.com服务器:BigIP连接:关闭内容长度:0”
但无法在$ipn_respnse中获得“验证”.
我已经尝试了所有可能的方法,例如使用“ssl://sandbox.paypal.com”更改解析网址
以及网上建议的所有其他解决方案.
自从过去三天以来,我一直陷入这个问题.所以,请帮帮我.
提前致谢.
解决方法:
我曾经一度努力解决这个问题.它完全让我疯了!问题是Hetzner(托管位置)因某种原因阻止了PayPal IP.在这种情况下,当您查看PayPal帐户中的IPN网络时,您会看到IPN已从某个日期停止发送通知.
标签:paypal-ipn,php,paypal 来源: https://codeday.me/bug/20190901/1781795.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。