我试图在wordpress应用程序中接收IPN消息(知道何时付款)。Wordpress运行在linux/apache (PHP作为FastCGI)上。
但是,在付款之后,我不会接收服务器上的IPN。看起来PayPal无法将它们发送到我的服务器,因为它收到了403状态代码(“无权限”)。SSL访问日志显示了以下内容:
173.0.81.1 - - [04/Sep/2015:08:44:40 +0200] "POST /index.php?sell_media-listener=IPN HTTP/1.0" 403 9402 "-" "PayPal IPN ( https://www.paypal.com/ipn )"
173.0.81.33 - - [04/Sep/2015:08:44:59 +0200] "POST /index.php HTTP/1.1" 403 9533 "-" "-"
上面的第一行显示了PayPal在事务之后执行的原始调用。秒行来自PayPal的IPN模拟器的测试调用,这次不是处理IPN的脚本/函数,而是直接到普通的index.php,每个人都应该可以访问。两次都归还了403。
有人知道为什么PayPal会收到这403号而不是200个状态代码吗?到目前为止,我听说可能是我的主机(以及其他许多网络托管公司)在没有用户代理字符串的情况下阻止请求,而PayPal (根据他们的说法)正在这样做。
据我所知,我这边的IPN侦听器现在也在curl请求中向PayPal提交了一个用户代理字符串,但仍然看不到任何更改。
我还在wordpress文件夹根目录中的.htaccess文件开头添加了以下行:
Allow from .paypal.com
Allow from api.paypal.com
Allow from api-3t.paypal.com
Allow from api-aa.paypal.com
Allow from api-aa-3t.paypal.com
Allow from api-s.paypal.com
Allow from api-m.paypal.com
Allow from svcs.paypal.com
Allow from notify.paypal.com
Allow from reports.paypal.com
Allow from ipnpb.paypal.com
Allow from www.paypal.com
Allow from mobile.paypal.com
Allow from m.paypal.com
Allow from www.paypalobjects.com
Allow from pointofsale.paypal.com
但这也没什么改变。我的霍斯特不是很有用,他只是说“一定要发送一个用户代理字符串.”。
有什么想法吗?
发布于 2015-09-04 13:28:32
IPN以_an从PayPal到您的入站帖子开始,而不是从您到他们的帖子(尽管在收到PayPal的帖子之后,您会将其发送给他们以进行验证)。您的主机提供商报告说它们阻止了这个入站帖子。
你不能改变PayPal写这篇文章的方式;这是贝宝的代码,不是你的。
而且,您自己的web服务器配置可能不是阻止post的东西;它可能是由托管提供商管理的上游系统(或者至少是您正在报告的内容-您是否与实际的主机提供商验证了这一点,而不是“听到”了有时会发生的情况?)
因此,如果您的托管公司的解释是阻止PayPal的帖子,您唯一的选择是:
1)与您的托管公司交谈,并说服他们改变策略或破例不阻止PayPal IPN的发布,或
2)将您的IPN脚本托管到其他地方(与不会阻止PayPal的IPN的托管提供商一起)
https://stackoverflow.com/questions/32391890
复制相似问题