3

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 によってのみ使用されることになっているためです。

以下に具体例を示します。

  1. 私の webapp を介して、オフサイト ゲートウェイ API を介して、個人の dwolla アカウントから組織のアカウントに送金します。

  2. 私の webapp は、コールバックと通知フォームの両方でトランザクションの詳細を送信されます。ステップ 1 で生成されたトランザクション ID は 1431566 です。これは、コールバックと通知の両方に送信されるトランザクション ID です。私の Web アプリは、将来の使用のためにこの ID を保存します。

  3. 私の webapp を介して、組織の個人の dwolla アカウントに返金することにしました。

  4. 私の 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

他の人が同じ問題を抱えている場合は、より速く修正されると思います。または、明らかな何かが欠けていて、誰かがそれを指摘するかもしれません。

4

2 に答える 2

1

Michael の助けのおかげで、送信者の OAuth トークンの代わりにトランザクションの詳細を取得するときに受信者のOAuth トークンを使用することで、この問題を回避することができました。

たとえば、API を使用して送金すると、送金者のトランザクション 1202 と送金者のトランザクション 1201 が作成されます。トランザクション 1202 の詳細を取得する API 呼び出しを行い、受信者の OAuth トークンを使用すると、料金情報を含むトランザクション 1201 の詳細が得られます。

私たちは 2 つのトランザクションの間でファシリテーターとして機能しているため、状況がまったく同じかどうかはわかりません。そのため、これがあなたの状況で機能するという保証はありません。しかし、試してみる価値はあります。

于 2013-07-01T21:47:23.450 に答える
-1

したがって、アプリケーションのキーとシークレットは、oauth_tokenではなく、transactionById()メソッドをアプリケーションのclient_idとclient_secretに渡すことで、投稿されたトランザクションIDにアクセスできます。つまり、このURLを照会する代わりに、トランザクションをポーリングする場合:

https://www.dwolla.com/oauth/rest/transactions/{transaction_id}?oauth_token=x

代わりに、このURLをクエリしてください。

https://www.dwolla.com/oauth/rest/transactions/{transaction_id}?client_id=x&client_secret=y

意味がありますか?

于 2012-10-31T18:28:29.487 に答える