我一直在尝试让 django-paypal 应用程序在我的 Django 项目中工作。我正在使用dcramer fork和 Django 1.4。我还在使用带有企业和个人帐户的 Paypal 开发人员帐户,通过 Paypal 沙盒网站处理交易。
如果我没有连接到payment_was_successful
信号的接收器功能,事情似乎按预期工作。事务发生后,paypal_ipn
在数据库表中创建一个新行,该行的值为“VERIFIED” response
。Paypal IPN 日志报告此交易没有重试。
当我确实将接收器功能连接到payment_was_successful
信号时,该paypal_ipn
表包括两个新行,created_at
时间戳相隔 10-15 秒。它们在响应列中的值都为“VERIFIED”,但两者中的后者被标记为flag_info
如下所示:
'重复 txn_id。(5M907276M1007902B)'
Paypal 商业账户报告 IPN 被重试 1 次。
我找到了可能的解决方案,其中提到了将dispatch_uid
接收器功能连接到我尚未尝试的信号时的使用。我的问题是我查看了相关的 django-paypal 源代码,但我不明白为什么 Paypal 会在验证第一个回发后重试 IPN。
有没有其他人遇到过这个问题并找到了他们理解的解决方案?
更新:
我发现我的接收器函数代码中有一个错误,这会引发异常。现在我已经解决了这个问题,Paypal 不再重试 IPN。我很高兴问题已经消失,但我仍然无法弄清楚它为什么会发生。
以下是数据库中最近重复记录的摘录。请注意,第一行是在下一行之前至少 10 秒创建和更新的。
created_at updated_at response flag
2013-02-03 07:53:56.628013+00 2013-02-03 07:53:56.628057+00 VERIFIED FALSE
2013-02-03 07:54:07.393795+00 2013-02-03 07:54:07.403008+00 VERIFIED TRUE