我已将我的 Stripe 订阅设置为在 3 次付款尝试失败后自动取消,并且我有 customer.subscription.deleted webhook 来记录取消的订阅。
有没有办法在 customer.subscription.deleted webhook 中检测订阅是否因付款尝试失败或通过 Stripe Dashboard 手动取消或因我们的应用程序发出的 API 请求而被条带取消?
您无法区分后两种情况,因为仪表板本身使用 API。
但是,您可以区分自动取消和手动取消。只需查看事件正文中的request属性即可customer.subscription.deleted。
如果订阅在支付失败次数过多后自动取消,request则将有一个空值。
否则,如果通过 API 或仪表板取消订阅,request则将具有非空值:订阅取消请求的请求 ID ( "req_...") 。
编辑:正如 Yoni Rabinovitch 指出的那样,如果订阅被取消at_period_end=false(或没有at_period_end参数,false默认值也是如此),则上述情况为真。
如果使用 取消订阅at_period_end=true,则将customer.subscription.updated立即触发一个事件(以反映订阅的cancel_at_period_end属性现在为 true),并且该事件request将具有订阅取消请求的请求 ID。
但是,在customer.subscription.deleted计费周期结束时实际取消订阅时将发送的事件将具有request=null,就像在太多失败的付款后自动取消一样。
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |