我的Webhook应该寻找什么事件以更新数据库中客户的订阅?我假设customer.subscription.updated
因为它包含current_period_start
和current_period_end
项目。但是,我担心的是,customer.subscription.updated
显然是在invoice.payment_succeeded
被触发之前一个小时被触发的。如果付款在一小时后失败,我不想更新客户的订阅。
答案 0 :(得分:1)
如duck在他/她的评论中所述,我认为如果发票付款失败或成功,更新订阅的最佳方法是听这些事件:
invoice.payment_succeeded
:每当发票付款尝试成功时发生。invoice.payment_failed
:由于付款被拒或缺少存储的付款方式而导致发票付款尝试失败时发生。实际上,这是我在生产中处理事情的方式,并且非常有效。我会推荐Stripe文档的文章Billing Lifecycle and Events,尤其是The subscription lifecycle部分:
在此第一张发票之后,以下每个事件周期都会重复 结算期:
- 订阅接近续订日期时,将发送
invoice.upcoming
事件。- 订阅期过后,将发送
invoice.created
事件,指示已创建发票草稿。- 在创建发票后约一个小时,发票将完成(不再允许更改),并且发生
invoice.finalized
事件 已发送。尝试收费,并将charge.succeeded
事件发送到 表示付款成功。- 发送了
invoice.payment_succeeded
事件,以表明发票已标记为已付款。