Stripe测试账号订阅首笔支付成功后续周期扣款失败原因查询
扣款失败的常见原因及对应解决方案
- 支付方式未绑定为客户默认付款方式
你使用payment_behavior: default_incomplete创建订阅时,首笔支付成功后不会自动将使用的测试卡绑定为客户的默认付款方式,后续订阅生成周期账单时,无法找到可用的支付方式就会触发扣款失败。
解决方法:在首笔支付成功的回调逻辑中,添加绑定默认支付方式的代码:
// payment_intent.succeeded 事件回调内执行 await stripe.customers.update('cus_K7bjvfmQNzcEXl', { invoice_settings: { default_payment_method: paymentIntent.payment_method } });
你也可以直接在Stripe后台的客户详情页,手动把4242测试卡设置为该客户的默认付款方式验证是否是这个问题。
测试环境未手动触发后续账单支付
Stripe测试环境中,订阅后续自动生成的周期账单默认不会自动发起扣款,需要手动触发。如果你是通过修改系统时间或者Stripe测试时钟模拟后续计费周期,需要在发票生成后,主动调用stripe.invoices.pay(发票ID)接口,或者在后台对应发票页面点击「尝试付款」完成扣款操作。订阅计费项配置异常
请确认你设置的按日重复price的配置:- 如果是固定金额订阅,确认
usage_type设置为licensed,如果是用量计费模式,需要在每个计费周期结束前上报对应用量,否则会出现账单金额异常导致扣款失败 - 确认订阅的
collection_method为默认值charge_automatically,如果被修改为send_invoice,系统只会发送账单邮件不会自动扣款。
- 如果是固定金额订阅,确认
测试环境强制认证规则触发
如果你的Stripe测试账户开启了「重复交易强制3D Secure认证」的规则,哪怕是4242测试卡也会触发认证要求导致自动扣款失败。你可以使用专门的免认证订阅测试卡4000 0025 0000 3155验证,或者在后台支付设置中关闭测试模式的强制认证规则。
内容的提问来源于stack exchange,提问作者Yuuta Moriyama
相关产品推荐
相关产品推荐

