Stripe API - BalanceTransaction 列表

Stripe API - BalanceTransaction List

根据 Stripes 文档 here 如果您在获取余额交易列表时添加 Stripe 对象 ID 作为源,您应该获得与该 ID 相关的 all 交易. (例如,按收费 ID 过滤将 return 所有收费和退款交易)。

我已经尝试传递一个 chargeId 并且确实取回了为该费用创建的初始余额交易,但是该费用还有 2 笔与之相关的退款,这些退款未在列表中 returned .我已经用其他费用尝试过这个并且似乎只取回创建的初始余额交易,从来没有任何其他交易(特别是文档说应该 returned 的退款)。我将我的限制设置为 100 个项目,我尝试使用 Stripe.Net API 和 PHP 调用并返回相同的结果。

我还尝试传递 customerId 以查看是否可以取回客户触发的所有余额交易,在这些情况下,我根本无法取回任何结果。这些是触发了许多交易的客户!

我提供给 API 的参数如下:

Method:     balance/list
Parameters: limit=100
            source=[chargeId or customerId that has triggered multiple transactions]

我的问题是:这是 API 中的错误吗?文档是否不正确,或者我是否遗漏了一个重要的参数或方面。我还回顾了 30 多天前的收费,只是为了确保它与滚动 transfer/pending/availability 周期无关。

事实上,您只能取回由 chargeId 创建的初始交易,而不能取回其他任何东西。有人在这方面有经验吗?提前致谢!

看起来这确实是 Stipe 文档中的错误或错误。我已将此事报告给 Stripe,并且刚刚收到支持团队成员发回的以下消息:

您好, 感谢您联系我们并提醒我们注意这个问题! 这看起来确实像是我们文档中的错误或错误。我已经与我的团队分享了这一点,我们正在调查这个问题。 感谢您使用 Stripe,如果还有什么我们可以帮忙的,请告诉我!

一旦我收到 Stripe 的更新或解决方案,我将更新此线程。

我的直觉是这不是错误:Stripe 的行为在技术上是正确的。 BalanceTransaction API 正在返回该特定费用的所有交易,这只是一个交易。与费用退款相关的 txns 在技术上与那些退款对象相关联,而不是费用。同样的逻辑适用于 disputes/chargebacks.

这里有一些(未经测试!)ruby 代码演示如何获取所有 txns 以收取费用:

def balance_transactions_for_charge(stripe_charge_id)
  balance_transactions = []

  charge = Stripe::Charge.retrieve(stripe_charge_id)
  balance_transactions << charge.balance_transaction

  balance_transactions += charge.refunds.data.map do |refund|
    refund.balance_transaction
  end

  if charge.dispute
    dispute = Stripe::Dispute.retrieve(charge.dispute)
    # fairly certain that the dispute txn list includes the full object, not just IDs
    balance_transactions += dispute.balance_transactions.data.map(&:id)
  end

  balance_transactions.map { |txn_id| Stripe::BalanceTransaction.retrieve(txn_id) }
end