背景:
通过Stripe API创建订阅时,如果您希望Stripe返回HTTP 402状态代码,以防无法支付订阅的第一张发票,则可以使用payment_behavior: error_if_incomplete
。在这种情况下,如果支付失败,Stripe根本不会创建订阅。
问题:
在使用Stripe Checkout时,是否有实现相同行为的方法?
我的经验是,即使付款失败,Stripe也会使用status: incomplete
创建订阅,如果在23小时内没有成功付款,则订阅将过期。我已经检查了创建签出会话的参数,但没有发现在那里设置payment_behavior
的选项。
来源:
https://stripe.com/docs/api/subscriptions/create#create_subscription-付款_行为https://stripe.com/docs/api/checkout/sessions/create
坏消息
不幸的是,这不是目前可以配置的。当Checkout创建订阅时,所有未直接提供的参数都设置为"订阅"默认值。Subscription的默认payment_behavior
为default_incomplete
。
好消息
您可以使用Webhook实现此行为。您将侦听invoice.payment_failed
事件,检查发票的billing_reason
属性是否为subscription_create
(标识新订阅的第一个发票),然后取消相关订阅。
如果您使用的是"订阅和发票",建议您仍然使用webhook来跟踪状态的更改。