无法接收PayPal IPN - PayPal始终收到403错误

时间:2015-09-04 06:56:55

标签: wordpress apache .htaccess paypal paypal-ipn

我试图在wordpress应用程序中接收IPN消息(知道付款何时发生)。 Wordpress在linux / apache上运行(PHP作为FastCGI)。

付款后,我没有收到服务器上的IPN。看起来PayPal无法将它们发送到我的服务器,因为它收到403状态代码(" No Permissions")。 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

但这也没有改变。我的主持人不是很有帮助,他只是说"确保发送用户代理字符串..."。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

IPN以_an inbound post 从PayPal开始,而不是你发给他们的帖子(虽然收到PayPal后发帖,然后发帖给他们核实)。您的托管服务提供商报告他们阻止了此入站帖子。

您无法更改PayPal发布此帖子的方式;它是PayPal的代码,不是你的代码。

您自己的网络服务器配置可能不会阻止帖子;它可能是由托管服务提供商管理的上游系统(或者至少是您报告的内容 - 您是否已经与实际的托管服务提供商进行了验证,而不是&#34;听到了#34;有时会发生这种情况?)< / p>

因此,如果您的托管公司的解释阻止了PayPal的帖子,那么您唯一的选择就是:

1)与您的托管公司交谈并说服他们改变他们的政策或例外不阻止PayPal IPN帖子,或

2)在其他地方托管您的IPN脚本(托管服务提供商不会阻止PayPal的IPN)