我很困惑为什么Stripe的文档表明我认为customer.subscription.updated
事件没有被触发:
subscription
对象具有属性current_period_start
和current_period_end
,只要客户成功支付订阅的发票(https://stripe.com/docs/api#subscriptions),该对象就会更新{} LI>
customer.subscription.updated
事件的文档说明了它......
订阅更改时发生。示例包括从一个计划切换到另一个计划,或将状态从试用切换到活动。
...这意味着如果current_period_start
和current_period_end
值发生变化,则会引发事件,但如果确实如此,则不会确认事件,或者在这种情况下不确认。
但是,此第三方网页声明在成功续订(https://www.masteringmodernpayments.com/stripe-webhook-event-cheatsheet#8)时不会引发此问题。
但提升这项活动才有意义......
customer.subscription.updated
),那么它将大大简化程序代码,而无需同时监视invoice.payment_succeeded
,{{ 1}}和invoice.created
。charge.succeeded
事件。这应该是没有提出这样一个适当的事件似乎很奇怪。文档也没有说明何时更新customer.subscription.updated
和current_period_end
值,这限制了它们的效用。
因此,在我的应用程序中,收到current_period_start
事件后,我的程序代码如何确定客户的订阅期何时结束呢?
答案 0 :(得分:11)
我已确认在结算周期结束时调用customer.subscription.updated
。
为此,我拦截了期末发生的所有webhook(仅供参考:我使用AWS Lambda函数从AWS API网关接收事件,然后将事件放在SQS队列上:))
我同意customer.subscription.updated
事件的the Stripe documentation可以更清晰,可以通过说明来涵盖此用例....
订阅更改时发生。例子包括 当结算周期结束并且新的结算周期开始时,何时 从一个计划切换到另一个计划,或将状态从试用切换到 活性
(仅供参考:我会完全忽略cheatsheet网站。他们只是对customer.subscription.updated
的短暂引用 - 在第8步中,他们描述(不良)用“创建没有试用计划的客户”的用例这不会创建customer.subscription.updated
事件,因为此事件仅在订阅更新时发生,而不是在创建时发生。它们引用customer.subscription.updated
的位置在步骤12“发票费用尝试失败”的上下文中)
为了保护Stripes有关订阅生命周期的文档,它确实说“下图显示了最重要事件的生命周期”,我会说customer.subscription.updated
在创建发票和付款方面,重要的事件并非如此。
有关Stripe如何处理句点结束的一些细节:
在我的测试中,Stripe在订阅的current_period_end属性中的时间戳大约2分钟后引发了customer.subscription.updated
事件。该事件有两个与之关联的数据对象。第一个是使用新值的订阅。第二个是具有前两个previousAttributes
和current_period_start
值的current_period_end
对象。
同时生成了两个事件:customer.subscription.updated
和invoice.created
(这是刚刚过去的期间的发票)。
创建发票后大约一小时,同时生成了三个事件:invoice.payment_succeeded
,charge.succeeded
和invoice.updated
。
如何处理结算周期的转存与发票的付款状态完全取决于您,并且在很大程度上取决于您的应用类型。这就是Stripe API的美丽(它是一件美丽的东西)。
在我的情况下,我将结算周期的滚动分别视为发票的付款状态。我的应用程序关注结算周期何时结束,并根据此更新使用情况,但任何支付失败都会生成警报&离线处理。
总之,您可以使用customer.subscription.updated
来了解结算周期何时发生变化。
答案 1 :(得分:0)
customer.subscription.updated
和current_period_start
更改时会触发 current_period_end
。这些代表结算周期。
当invoice.payment_succeeded
发生时,您必须更新您身边的信息(例如:订阅期):
https://stripe.com/docs/subscriptions/guide#step-3-sync-with-your-site
此处还有更多信息:https://support.stripe.com/questions/what-events-can-i-see-when-a-subscription-is-renewed