php - 带有 200 个 HTTP 代码的 IPN 响应,但我的数据库中没有任何内容
问题描述
我真的需要帮助,因为我现在不知道该怎么做。我开发了一个新用户需要付费注册的网站,我设置了正确的贝宝表单按钮,关于钱一切正常,问题是我无法更新我的数据库。我正在使用这些文件(它们在 gitHub 上提供,并且在官方 Paypal 指南中也有指向它们的链接):“PaypalIPN.php”和“example_usage.php”。我还向我的 Ubuntu 云服务器(我的网站在哪里)添加了 cert/cacert.pem,我不知道我是否必须这样做,但在第一个文件中似乎是必需的。
我试图运行一个IPN模拟器但它不起作用,我寻找同样的问题,我发现模拟器可能有问题,所以我做了一些真实的交易(我读过live production test is run正确使用该代码)。所以:
- 交易金额没问题;
- 在即时支付通知历史记录中,我进行了所有测试,在消息 ID 中,我可以读取 IPN 消息中传递的正确数据,IPN 类型为“已执行交易”,响应代码为 200。我注意到在“example_usage. php" 200 响应代码不在 if ($verified) 中,所以,就我最后一次测试而言,我把它放在 if 中,是的,响应又是这样;
- 我尝试了用虚假数据更新 mongodb 数据库的代码,显然它可以工作。
这怎么可能?请帮助我,谢谢。
解决方案
您是否确认 IPN 历史详细信息中显示了正确的 URL?有时人们正在使用一个按钮,该按钮使用 notify_url 来覆盖 PayPal 帐户设置,然后 IPN 正在工作,但他们会去一个与预期不同的地方。所以先检查一下。
如果 IPN 确实到达了您期望的 URL,并且它返回 200 OK,这意味着它正在成功接收并完成脚本。如果您在数据库中没有看到预期的结果,那么您的代码肯定存在某种逻辑问题,需要解决。您需要构建一些跟踪器来记录文件或向自己发送电子邮件,因为它会执行脚本的每个步骤,以查看该部分代码是否真的像您想象的那样受到打击。
我把这篇文章放在一起,介绍如何测试 PayPal IPN,这已被证明对许多人有帮助。如果您按照那里的步骤进行操作,您应该能够找到问题所在。
推荐阅读
- android - 如何在 xml 布局文件中添加简单的导航栏?
- r - R嵌套foreach %dopar% - 内循环问题
- c# - 如何检索类属性的属性值?
- php - 在我的 Web 应用程序中实现 simplesamlphp 库的问题
- android - java.lang.StackOverflowError:堆栈大小 8192KB 蓝牙管理器
- angular - 拦截器内部的离子警报
- python-3.x - tkinter:滚动条在画布上不起作用
- javascript - 出现值时禁用/启用按钮问题
- javascript - ReactJs 改变状态不显示
- python - 如何将整个 python 应用程序添加到 azure databricks 中并运行它?