首页 > 解决方案 > 使用 Stripe 的 webhook 在后端更新订阅的最佳方式是什么?

问题描述

为了在我的数据库中更新客户的订阅,我的 webhook 应该寻找什么事件?我会假设customer.subscription.updated它包含current_period_startcurrent_period_end项目。然而,我担心的是,这customer.subscription.updated显然是在被解雇前一个小时左右invoice.payment_succeeded被解雇的。如果一小时后付款失败,我不想更新客户的订阅。

标签: stripe-paymentswebhooks

解决方案


正如鸭子在他/她的评论中所说,如果发票支付失败或成功,我认为更新订阅的最佳方法是收听这些事件:

其实这就是我在生产中处理事情的方式,而且非常有效。我会推荐 Stripe 文档的文章Billing Lifecycle and Events,尤其是订阅生命周期部分:

在第一张发票之后,以下事件循环在每个计费周期重复:

  1. 当订阅接近其续订日期时,将invoice.upcoming发送一个事件。
  2. 当订阅期过去时,invoice.created会发送一个事件,指示创建发票草稿。
  3. 创建发票大约一小时后,它会被最终确定(不再允许更改),并invoice.finalized发送一个事件。尝试收费,并charge.succeeded发送事件以指示付款成功。
  4. 发送事件以invoice.payment_succeeded指示发票已标记为已付款。

推荐阅读