无法接收 PayPal IPN - PayPal 总是收到 403 错误

Posted

技术标签:

【中文标题】无法接收 PayPal IPN - PayPal 总是收到 403 错误【英文标题】:Cannot receive PayPal IPN - PayPal always gets a 403 error 【发布时间】:2015-11-30 05:57:27 【问题描述】:

我正在尝试在 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 在交易后进行的原始调用。 Seconds 行来自 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】:

IPN 以 _an PayPal 发给您的入站帖子开头,而不是您发给他们的帖子(尽管在收到 PayPal 的帖子后您再发帖给他们以进行验证)。您的托管服务提供商报告他们阻止的正是这个入站帖子。

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

而且您自己的网络服务器配置可能不是阻止帖子的原因;它可能是由托管服务提供商管理的上游系统(或者至少,这是您所报告的 - 您是否与实际的托管服务提供商进行了验证,而不是“听说”有时会发生这种情况?)

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

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

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

【讨论】:

以上是关于无法接收 PayPal IPN - PayPal 总是收到 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

我的服务器突然不再接收来自 Paypal 的 IPN 请求,工作了多年

PayPal 难以捉摸的 IPN 历史在哪里?

接收 PayPal IPN 时不获取任何参数

未使用发票 API 接收 PayPal IPN

play框架接收paypal IPN请求

Paypal IPN 未在沙盒上发送/接收