条带化Webhooks:Invoice.paid与Checkout.Session.Completed

时间:2020-11-12 18:35:53

标签: django stripe-payments webhooks

如果客户成功“付款”,我将使用Stripes的webhooks,并希望得到通知。我遇到了两个Webhook,我认为它们都可以胜任:

  1. Webhook“ invoice.paid”-根据Stripe doc的说法:每当发票付款尝试成功或发票被标记为带外付款时发生。
  2. Webhook“ checkout.session.completed”-根据Stripe doc:在成功完成Checkout会话时发生。

我的问题是:

  1. 我不理解“ invoice.paid” webhook的第二部分:“发票被标记为带外支付”->“带外”是什么意思?这算是成功付款吗?
  2. 关于“ checkout.session.complete”->如果付款失败,也会发生这种情况吗?
  3. 我应该考虑(或还有其他一些webhooks)看到“客户已成功支付账单”状态?
  4. 此外,我真的不知道是否应将争端视为成功付款:一方面,我收到了invoice.paid的webhook,另一方面,我得到了charge.dispute.created的webhook 。吉斯...

感谢您的帮助!谢谢。

1 个答案:

答案 0 :(得分:0)

我不理解“ invoice.paid” Webhook的第二部分:“发票被标记为带外支付”->“带外”是什么意思?这算是成功付款吗?

这特别是指标记发票paid out of band(即,客户在Stripe之外付款给您,并且您想标记不收取付款的Stripe发票已付款)。这不会涉及实际付款,但是会将发票转换为status=paid,因此会触发此事件。

关于“ checkout.session.complete”->如果付款失败,也会发生这种情况吗?

此事件仅表示Checkout会话已完成。取决于mode用于Checkout的用途,这可能涉及也可能不涉及付款。如果期望立即付款,则只有在该付款成功后,会话才能完成。例如,mode=setupmode=subscription免费试用不会涉及立即付款。不过,订阅试用版将创建$ 0的发票并触发invoice.paid

我应该考虑看哪些网络挂钩(或还有其他网络挂钩) 状态为“客户已成功付款”?

这取决于您所说的“已付”和“账单”。如果您是专门针对发票(无论是否与订购相关),那么invoice.paid是一个不错的选择。然后,您可以过滤大于0美元的金额,以进一步限制“已付款”的意思。

此外,我真的不知道是否应将争端视为 是否成功付款:一方面,我收到一张发票​​。 另一方面,我得到了一个charge.dispute。创建的webhook。

争议不是付款,应该完全分开讨论。付款后您才可以提出争议。建议先阅读docs on disputes

总结:您真正要做什么?这些事件是相关的,有时是重叠的,但并非总是如此。这在很大程度上取决于您的工作。