IPN响应包含200个HTTP代码,但数据库中没有任何内容

时间:2019-04-07 10:42:21

标签: php paypal paypal-ipn

我真的需要帮助,因为我目前不知道该怎么办。我开发了一个网站,新用户需要在该网站上付款以进行注册,我设置了正确的贝宝表单按钮,并且关于一切正常的资金,问题是我无法更新数据库。我正在使用这些文件(它们在gitHub上提供,并且在Paypal官方指南中也提供了指向它们的链接):“ PaypalIPN.php”和“ example_usage.php”。我还将cert / cacert.pem添加到了我的Ubuntu云服务器(我的网站在哪里),我不知道是否必须这样做,但是似乎第一个文件是必需的。

我尝试运行IPN模拟器,但是它不起作用,我寻找了相同的问题,但发现模拟器可能存在问题,因此我进行了一些实际交易(我看过现场制作的内容测试已使用该代码正确运行)。 因此:

  • 交易金额还可以;
  • 在即时付款通知历史记录中,我进行了所有测试,并且在消息ID中,我可以读取IPN消息中传递的正确数据,IPN类型为“交易已执行”,响应代码为200。我注意到“ example_usage.php” 200响应代码不在if($ verified)中,因此,对于我的最后一次测试,我将其放在if和yes中,响应再次是该内容;
  • 我尝试用我的代码使用伪造的数据更新mongodb数据库,并且显然可以正常工作。

怎么可能?请帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

您是否确认IPN历史记录详细信息中显示了正确的URL?有时人们使用一个使用notify_url覆盖PayPal帐户设置的按钮,然后IPN可以正常工作,但是他们所到的地方与预期的不同。所以先检查一下。

如果IPN确实要转到您期望的URL,并且返回200 OK,则表示它已成功接收并完成了脚本。如果您在数据库中没有看到预期的结果,那么您的代码必须存在某种逻辑问题,需要解决。您需要构建一些跟踪器来记录文件或向自己发送电子邮件,因为它会执行脚本的每个步骤,以查看该部分代码是否真的像您认为的那样受到了攻击。

前一段时间,我整理了这篇文章how to test PayPal IPN,事实证明它对许多人都有帮助。如果按照这些步骤进行操作,您应该可以找到问题所在。