【发布时间】:2021-09-10 07:10:30
【问题描述】:
使用 Checkout Subscriptions 时,Stripe 文档指出要监控的最少事件类型是:
-
checkout.session.completed- 当您收到 checkout.session.completed 事件时,您可以配置订阅。 -
invoice.paid- 付款成功时发送每个计费间隔。 -
invoice.payment_failed- 如果您客户的付款方式有问题,则发送每个结算间隔。
当您收到 checkout.session.completed 事件时,您可以配置订阅。当您收到 invoice.paid 事件时,继续每月配置(如果按月计费)。如果您收到 invoice.payment_failed 事件,请通知您的客户并将他们发送到客户门户以更新他们的付款方式。
https://stripe.com/docs/billing/subscriptions/checkout#provision-and-monitor
但是,我仍然对 invoice.paid 和 invoice.payment_failed 事件和 Laravel Cashier 感到困惑:
我需要为这两个事件创建处理程序吗?
我问这个是因为 Cashier 已经处理了 customer.subscription.updated 和 customer.subscription.deleted 事件,如果我理解得很好(如果我错了,请纠正我):
- 如果下个月支付(续订)成功,那么我将收到
customer.subscription.updated,订阅将继续为'active':$user->subscribed('default')将是true(在subscriptions表@ 987654334@ 将保留为active)。 - 但是,如果下个月付款失败(例如,由于资金不足) - 那么
customer.subscription.updated事件将被触发/发送,Cashier 将更改订阅状态(变为canceled或incomplete?)和$user->subscribed('default')将是false,对吧?
如果是这样,那么我认为没有理由为invoice.paid 和invoice.payment_failed 事件创建处理程序。我会知道付款(续订)是否成功,因为customer.subscription.updated 事件将被触发/发送,Cashier 将更新subscriptions 表中的stripe_status。
或者我错了,它不会那样工作?如果我不太理解,那么我猜customer.subscription.updated 事件根本不会被触发/发送,或者它会但不会包含付款(续订)是否成功(如果它失败了,然后在invoice.payment_failed 事件的处理程序方法中,我必须将stripe_status(在subscriptions 表中)更新为canceled 或incomplete?
【问题讨论】:
标签: laravel laravel-cashier stripe-payments