stripe-payments - 检测订阅是否自动取消

标签 stripe-payments

我已将我的Stripe订阅设置为在​​3次失败的付款尝试后自动取消,并且有customer.subscription.deleted Webhook记录取消的订阅。

是否有一种方法可以在customer.subscription.deleted webhook中检测是否由于失败的付款尝试而取消了条纹的订阅,或者通过Stripe Dashboard手动取消了订阅,还是由于我们的应用程序发出了API请求而取消了订阅?

最佳答案

由于仪表板本身使用API​​,因此您无法区分后两种情况。

但是,您可以区分自动取消和手动取消。只需查看 request 事件主体中的 customer.subscription.deleted 属性即可。

如果在失败的付款次数过多后自动取消了订阅,则request将具有空值。

否则,如果通过API或仪表板取消了订阅,则request将具有非空值:subscription cancelation request的请求ID("req_...")。

编辑:正如Yoni Rabinovitch所指出的,如果使用at_period_end=false(或没有 at_period_end 参数,因为false是默认值)取消了订阅,则上述内容适用。

如果使用at_period_end=true取消了订阅,则会立即触发customer.subscription.updated事件(以反射(reflect)订阅的 cancel_at_period_end 属性现在为true的事实),并且该事件的request将具有订阅取消请求的请求ID。

但是,在计费周期结束时实际上取消订阅时将发送的customer.subscription.deleted事件将具有request=null,就像在付款失败次数过多后自动取消一样。

关于stripe-payments - 检测订阅是否自动取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40755353/

相关文章:

python - 断言错误 : No api proxy found for service "urlfetch"

ios - Stripe 在 iOS 上与 Firebase 集成

ruby-on-rails - 如何重构这个方法?

express - 在结账时检索 strip 中的客户 ID

stripe-payments - Flutter Web - Stripe 集成的对话框弹出窗口

node.js - 忽略已完成函数的异常

stripe-payments - Stripe -将优惠券应用于客户还是订阅?

php - Stripe - 使用表单中的电子邮件检索客户 ID

javascript - 如何在app引擎上用python实现 Stripe 自定义按钮

ruby-on-rails - Stripe : Cannot charge a customer that has no active card