所以我会描述一点点问题 -
1)我获得了PayPal IPN脚本,如果经过验证,它会在数据库中插入数据,否则会向我发送电子邮件。
2)我用PayPal沙盒测试工具测试了脚本,我只需要插入链接,它会自动检查它是否正常工作,并插入数据,因此它正在工作。
但现在问题开始了 -
3)之后,我尝试使用PayPal沙盒测试帐户进行测试。我创建了两个测试PayPal账户 - 卖方和买方
4)为卖方配置了所有内容并创建了一个按钮(PayPal技术支持配置按钮和IPN链接一切正常)。
5)所以我在homeapge中插入了按钮,并尝试用测试帐户付款
6)登录,付款并且不返回主页,但数据库中没有插入数据,没有电子邮件发送到我的邮箱。
7)我没有卖家帐户PayPal历史记录,它显示我从IPN脚本获得了一个历史记录,成功发送了200个HTTP(这意味着一切正常!)。
8)我的买家帐户中的资金已发送到卖家帐户
似乎一切都很好,除了,paypal没有做任何IPN脚本内的任何事情,所以也许你可以帮我提出想法?我尝试联系PayPal技术支持,他们确认一切都应该没问题!
希望你能帮我解决这个问题!
最好的问候,
Valters
答案 0 :(得分:0)
这里没有简单的答案,所以我会帮助您提供有关如何专门调试此方案的一些说明。
首先,要注意不同的付款状态。 PayPal具有“待处理”状态,并且我相信一些“已验证”或“已确认”状态(现在无法记住确切的术语)。 IPN模拟器和买方测试帐户可能会生成两种不同类型的付款,从而产生两种不同的状态,因此请先检查。如果它们不相同,请在代码中找出处理非工作付款状态的错误。
失败了,......
听起来这不是一个问题,必然与PayPal及其IPN有关,而是在执行的某个时刻使用PHP脚本。换句话说,听起来您的PHP脚本在某些时候遇到了崩溃脚本或遇到某些行为错误的PHP错误。
因为IPN模拟器的一切正常,可能只是一种特定类型的测试用例导致错误; IPN模拟器如何工作以及如何设置买方帐户可能会触发代码的不同部分以执行......
查看服务器上的error_log文件是否与IPN脚本位于同一目录中。如果是这样,请打开它并向下滚动到最近的错误。这只是当脚本遇到错误时输出到屏幕的错误的日志;显然,你在这里使用IPN,所以PayPal是“看到”输出到屏幕的错误的客户端(但他们的IPN系统无论如何都不会关注它),所以你唯一的方法就是看到它输出是通过这个error_log或写一些调试代码。
如果error_log不够并且您确实需要编写一些调试代码,则应该在IPN回调脚本中添加一些代码,这些脚本会在脚本中以特定间隔将一些输出写入文本文件。这样,您就可以准确地确定脚本崩溃的位置(如果它崩溃了)。如果事实证明脚本似乎根本没有崩溃,那么编写一些代码来输出SQL查询。
实际上,最简单的方法可能就是这样做:编写一些调试代码将SQL查询输出到文件中。结果将为您提供一个大错的线索:您的脚本是否崩溃,或者您的代码是否从发生查询的地方开始分支(无文件输出),查询本身是否出错(很可能是(),或者......好吧,这两种情况中的其中一种。
祝你好运!