"未发送IPN,未验证握手。"请查看您的信息。"这是我点击底部蓝色"发送IPN"按钮后在PayPal IPN模拟器页面上得到的错误。
我使用的监听器是从:https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php我保存了这张贴的代码到一个PHP文件,并命名为listener. PHP;然后我把它上传到我们的网站。
我的PHP版本:5.5.37
实际上有相当多关于这个非常错误在SO,但我没有找到任何似乎有帮助的东西。我看到的答案没有一个是被接受的,或者似乎是我遇到的问题。
我读到这个:没有发送IPN,并且没有验证握手。请查看您的信息。我不知道在哪里运行与PayPal的连接脚本。但我确实把我的网站放在了shachecker.com上,我得到了一个"Nice XXXX有一个用SHA-2签名的可验证证书链。"
在PayPal IPN模拟器页面上,我一直在"IPN处理程序URL"字段中为我的监听器输入完整的URL。然后我在交易类型字段中选择了"购物车结帐"或"Web接受"。
今天我的代码不会在IPN .log中产生任何更新,在我点击"发送IPN"按钮之后;除非我在浏览器中打开listener.php页面。然后生成文件:ipn.log
在今天之前,它工作得更好。我会得到一个无效的回复。所以我看了看这个网址,并检查了张贴在那里的列表:https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNTesting/无效的
我无法验证变量的顺序,或者看到它们是相同的,因为它今天停止工作。但是我可以验证页面使用的是正确的URL,消息的前面是cmd=_notify-validate
,它是UTF-8
。
整个过程很难调试,因为没有输出,也没有我能看到的错误日志。(如果有人以前这样做过并取得了成功,请告诉我。)
我正在尝试使用IPN,因为我们目前的网站依赖于PayPal的post-back,以获得订单已完成的通知。但是我们发现PayPal并不总是返回到网站。IPN被宣传为更加可靠。但我也愿意接受其他建议。非常感谢!
这是如何解决的有趣。我听从了Asmir Zahirovic的建议,给我们网站的托管公司发了邮件。他向我保证,他们托管的许多网站都使用PayPal的IPN,包括他们自己的需求。
然后我想起有人写过,在某处,贝宝的IPN模拟器只是不适合他们,但生产。
我按照贝宝概述的步骤,确保监听器被启用并打开。(IPN模拟器仍然无法工作)
然后我把我的监听器设置为生产模式,然后就等着。几天后,我们接到了一笔订单,我的听众是从PayPal收到的;结果显示为有效
所以对于任何阅读这篇文章的人来说, GitHub的PHP侦听器代码工作得很好。直接去生产;PayPal的IPN监听器可能无法工作。