Django プロジェクト内で django-paypal アプリを動作させようとしています。Django 1.4 でdcramer forkを使用しています。また、Paypal サンドボックス Web サイトを介してトランザクションを処理し、ビジネス アカウントと個人アカウントで Paypal 開発者アカウントを使用しています。
信号に受信機機能が接続されていない場合payment_was_successful
、物事は期待どおりに機能するようです。トランザクションが発生した後、列paypal_ipn
に「VERIFIED」の値を持つデータベースのテーブルに新しい行が作成されresponse
ます。Paypal IPN ログは、このトランザクションの再試行がなかったことを報告しています。
payment_was_successful
信号に受信機能を接続すると、テーブルにはタイムスタンプが 10 ~ 15 秒離れたpaypal_ipn
2 つの新しい行が含まれます。created_at
どちらも応答列に「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