【发布时间】: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
但这也没有改变。我的主机不是很有帮助,他只是说“确保发送用户代理字符串......”。
有什么想法吗?
【问题讨论】:
标签: wordpress apache .htaccess paypal paypal-ipn