Dai*_*Dai 8 webhooks stripe-payments
我很困惑为什么Stripe的文档表明customer.subscription.updated
当我认为事件不应该被触发时:
subscription
对象具有属性current_period_start
,current_period_end
只要客户成功支付订阅的发票,就会更新这些属性(https://stripe.com/docs/api#subscriptions)该customer.subscription.updated
事件的文件说明它......
订阅更改时发生.示例包括从一个计划切换到另一个计划,或将状态从试用切换到活动.
......这意味着如果current_period_start
和current_period_end
值发生变化会引发事件,但是如果它确实存在或者在这种情况下不确认,则不会确认事件.
然而,这在第三方网页指出,当成功执行了更新它不是提高(https://www.masteringmodernpayments.com/stripe-webhook-event-cheatsheet#8).
但提升这一事件是有道理的......
customer.subscription.updated
),那么它将大大简化程序代码,而无需同时监视invoice.payment_succeeded
,invoice.created
和charge.succeeded
.customer.subscription.updated
事件.看起来很奇怪,这样一个适当的事件在它应该的时候不会被提出.文档也没有说明何时更新current_period_end
和current_period_start
值,这限制了它们的实用性.
所以在我的应用程序中,在收到一个invoice.payment_succeeded
事件后,我的程序代码如何确定客户的订阅期何时结束呢?
Sim*_*urd 14
我已经确认customer.subscription.updated
在结算周期结束时调用.
为此,我拦截了期末发生的所有webhook(仅供参考:我使用AWS Lambda函数从AWS API网关接收事件,然后将事件放在SQS队列上:))
我同意该事件的Stripe文档customer.subscription.updated
可以更清晰,可以通过说....来涵盖这个用例.
订阅更改时发生.示例包括结算周期何时结束以及新的结算周期开始,何时从一个计划切换到另一个计划,或将状态从试用切换为活动.
(仅供参考:我会完全忽略cheatsheet网站.他们只是稍纵即逝的参考customer.subscription.updated
- 在第8步中,他们描述(很差)"没有试用计划创建客户"的用例,这不会创建一个customer.subscription.updated
事件,因为此事件仅在订阅更新时发生,而不是在创建时发生.他们在何处参考customer.subscription.updated
是在步骤12"发票费用尝试失败"的上下文中)
为了保护Stripes关于订阅生命周期的文档,它确实说"下面的图像显示了发生的最重要事件的生命周期",并且我认为customer.subscription.updated
这不是创建发票和付款的重要事件.
有关Stripe如何处理句点结束的一些详细信息:
在我的测试中,Stripe customer.subscription.updated
在订阅的current_period_end属性中的时间戳大约2分钟后引发了该事件.该事件有两个与之关联的数据对象.第一个是使用新值的订阅.第二个是previousAttributes
具有前两个值current_period_start
和current_period_end
值的对象.
同时生成了两个事件:customer.subscription.updated
和invoice.created
(这是刚刚过去的时期的发票).
围绕发票创建后一个小时,都同时产生三个事件:invoice.payment_succeeded
,charge.succeeded
和invoice.updated
.
如何处理结算周期的转存与发票的付款状态完全取决于您,并且在很大程度上取决于您的应用类型.这就是Stripe API的美丽(它是一件美丽的东西).
在我的情况下,我将结算周期的滚动分别视为发票的付款状态.我的应用程序关注结算周期何时结束并根据此更新使用情况,但任何支付失败都会生成警报并在线下处理.
总之,您可以使用customer.subscription.updated
在计费周期发生了变化就知道了.
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
归档时间: |
|
查看次数: |
3150 次 |
最近记录: |