3

我认为 Dwolla API 在通知中发送了错误的事务 ID。在正常的 dwolla 货币交易中,会创建两个交易 ID(这对我来说很奇怪,但 dwolla 就是这样做的)。因为这两个是同时创建的,所以它们总是(根据我的经验)连续的数字。例如,如果账户 X 向账户 Y 汇款,Y 将看到交易 id M,X 将看到交易 id M+1。

但是 Dwolla 的通知 webhook 会发送 Y 条 id 为 M+1 的交易细节。虽然 ID M+1 对该交易仍然是唯一的,但 ID M+1 不能被 Y 通过 API 使用——因为 M+1 应该只被 X 使用。

这是一个具体的例子:

  1. 通过我的 web 应用程序,我通过异地网关 api 从我的个人 dwolla 帐户向我的组织汇款。

  2. 我的 webapp 以回调和通知形式发送交易详细信息。第 1 步生成的事务 id 是 1431566。这是发送给回调和通知的事务 id。我的网络应用程序存储此 ID 以供将来使用。

  3. 通过我的网络应用程序,我决定从我的组织退还我的个人 dwolla 帐户,因此:

  4. 我的 webapp 尝试向 dwolla 查询交易 1431566 以获取 SourceId,但这失败了 - dwolla 报告“找不到帐户的交易”。如果没有像从 ID 中减去一个并重试这样的丑陋杂物,我的自动退款将无法继续。

    手动解决方法是通过 Web 界面登录到我组织的 dwolla 帐户。在这里我可以根据日期时间查找交易,可以看到交易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。如果您进行 API 调用以获取交易 1202 的详细信息但使用接收方的 OAuth 令牌,它将为您提供交易 1201 的详细信息,包括费用信息。

我不确定情况是否完全相同,因为我们是两笔交易之间的促进者,所以不能保证这在您的情况下会奏效。但值得一试。

于 2013-07-01T21:47:23.450 回答
-1

因此,您的应用程序的密钥和机密可以通过传递应用程序的 client_id 和 client_secret 的 transactionById() 方法来访问发布给您的事务 ID,而不是 oauth_token。这意味着,当您轮询交易时,而不是查询此 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 回答