【发布时间】:2013-01-17 15:47:50
【问题描述】:
我一直在尝试让 django-paypal 应用程序在我的 Django 项目中运行。我正在使用带有 Django 1.4 的 dcramer fork。我还在使用带有企业和个人帐户的 Paypal 开发者帐户,通过 Paypal 沙盒网站处理交易。
如果我没有连接到payment_was_successful 信号的接收器功能,事情似乎按预期工作。事务发生后,会在数据库的paypal_ipn 表中创建一个新行,该行在response 列中的值为“VERIFIED”。 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
【问题讨论】:
标签: django paypal-ipn django-paypal