【问题标题】:Does the Dwolla API Webhooks Notification send the wrong transaction id?Dwolla API Webhooks Notification 是否发送错误的事务 id?
【发布时间】:2012-10-13 18:18:42
【问题描述】:

我认为 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. 通过我的网络应用,我通过异地网关 api 从我的个人 dwolla 账户向我的组织汇款。

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

  3. 通过我的 web 应用程序,我决定从我的组织退还我的个人 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

我认为如果其他人有同样的问题,它会更快地得到解决。或者也许我遗漏了一些明显的东西,有人会指出来。

【问题讨论】:

  • 我也对此感到困惑。我刚刚完成了一笔交易。事务 ID 通过 webhook 报告为 XXXX132。当我查看 Dwolla 网站时,它的 ID 为 XXXX131,而 .25c 费用的 ID 为 XXXX130。有人可以澄清一下吗?
  • XXXX132 和 XXXX131 代表此处报告的问题。当 Dwolla 收取费用时,它被视为完全独立的交易,这就解释了 XXXX130。
  • 如本问题所述:stackoverflow.com/questions/14163351/…,输入了一张票以返回特定转​​账的所有交易 ID 的列表。
  • @Rocky,我希望 webhook 也修复发送正确的事务 ID。但是,只要可以检索到正确的,这将是一个足够的解决方法。

标签: webhooks dwolla


【解决方案1】:

感谢 Michael 的帮助,我们能够在获取交易详情时使用接收方的 OAuth 令牌而不是发送方的 OAuth 令牌来解决此问题。

例如,假设我使用 API 汇了一些钱,然后为汇款人创建了交易 1202,为收款人创建了交易 1201。如果您通过 API 调用获取交易 1202 的详细信息但使用接收方的 OAuth 令牌,它将为您提供交易 1201 的详细信息,包括费用信息。

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

【讨论】:

  • 感谢您的帮助。这可能是这个问题的 cmets 中报告的解决方法@Rocky 的结果。我将不得不对其进行测试并尝试。如果 Dwolla 承认了这个问题就好了,但我却冷落了 10 个月。
  • 没问题。如果无法获得此信息,我也会感到沮丧。我期待一个唯一的交易 ID 来识别整个 shebang。希望他们能在某个时候解决所有问题。
  • 此解决方法已得到确认,感谢@Shea。我应该说,除了使用 receiver's OAuth 令牌之外,您还可以使用 receiver's api 密钥和秘密进行身份验证,以获取正确的交易 ID。这取决于 api 库。所以这确实证实了这一点。 Dwolla webhook 发送了错误的交易 ID。但是 transactions/$id api 调用返回正确的 id,即使给定 webhook 的不正确事务 id 也是如此。在这个解决方法的帮助下,我终于实现了完全自动化的 dwolla 事务。我仍然希望 Dwolla 能解决这个问题,但现在必须这样做。
【解决方案2】:

因此,您的应用程序的密钥和秘密可以通过传递应用程序的 client_id 和 client_secret 的 transactionById() 方法来访问发布给您的事务 ID,而不是 oauth_token。这意味着,当您轮询交易时,而不是查询此 URL:

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

改为查询此网址:

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

有道理吗?

【讨论】:

  • 无论使用什么认证方式,这都是一个问题。请重新阅读问题描述。问题是 Dwolla 通知发送了错误的交易 ID。顺便说一句,您可以看到我在此拉取请求中使用了参数身份验证:github.com/Dwolla/dwolla-php/pull/10
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多