Dwolla API が通知で間違ったトランザクション ID を送信していると思います。通常の dwolla マネー トランザクションでは、2 つのトランザクション ID が作成されます (これは私には奇妙に思えますが、dwolla ではこのように行われます)。この 2 つは同時に作成されるため、(私の経験では) 常に連続した番号になります。たとえば、アカウント X がアカウント Y に送金した場合、Y にはトランザクション ID M が表示され、X にはトランザクション ID M+1 が表示されます。
しかし、Dwolla の通知 Webhook は、ID M+1 のトランザクションの Y 詳細を送信します。ID M+1 は依然としてこのトランザクションに固有ですが、ID M+1 は API を介して Y によって使用することはできません。M+1 は X によってのみ使用されることになっているためです。
以下に具体例を示します。
私の webapp を介して、オフサイト ゲートウェイ API を介して、個人の dwolla アカウントから組織のアカウントに送金します。
私の webapp は、コールバックと通知フォームの両方でトランザクションの詳細を送信されます。ステップ 1 で生成されたトランザクション ID は 1431566 です。これは、コールバックと通知の両方に送信されるトランザクション ID です。私の Web アプリは、将来の使用のためにこの ID を保存します。
私の webapp を介して、組織の個人の dwolla アカウントに返金することにしました。
私の Web アプリケーションは、SourceId を取得するためにトランザクション 1431566 について dwolla にクエリを実行しようとしますが、これは失敗します - dwolla は「アカウントのトランザクションが見つかりません」と報告します。Id から 1 を差し引いて再試行するなどの見苦しい手続きがなければ、自動払い戻しを続行できません。
手動の回避策は、Web インターフェイスを介して組織の dwolla アカウントにログインすることです。ここで、datetime に基づいてトランザクションを検索すると、トランザクション ID が実際には 1431565 であることがわかります (Web インターフェイスで正しく報告されています)。組織のデータベースにアクセスして 1431566 を 1431565 に置き換えると、ステップ 4 を繰り返すことができ、今度はうまくいきます。その後、send() を開始すると、払い戻しが行われます。
dwolla がサポートを stackoverflow に移行する前に、ここで同じ問題を報告しました: https://getsatisfaction.com/dwolla/topics/callback_and_webhook_notification_sent_wrong_transaction_id_off_by_one
他の人が同じ問題を抱えている場合は、より速く修正されると思います。または、明らかな何かが欠けていて、誰かがそれを指摘するかもしれません。