如何在Stripe订阅中使用默认支付方式完成多订阅的收款?
解决Stripe订阅发票付款失败(incomplete状态)问题
要让客户使用已绑定的默认支付方式自动完成新订阅的付款,你需要调整订阅创建参数,并确保支付方式的有效性:
1. 确认客户的默认支付方式
先检查目标客户(cus_NWCqvdBhiQRQ2a)已绑定有效的默认支付方式:
- 登录Stripe后台,进入该客户详情页,查看「发票设置」中的「默认支付方式」是否存在且状态正常(无过期、冻结等问题)。
- 如果客户没有默认支付方式,需先将之前收集的支付方式附加到客户并设为默认:
// 附加支付方式到客户 await stripe.paymentMethods.attach( '{{支付方式ID}}', {customer: 'cus_NWCqvdBhiQRQ2a'} ); // 设置为默认支付方式 await stripe.customers.update( 'cus_NWCqvdBhiQRQ2a', {invoice_settings: {default_payment_method: '{{支付方式ID}}'}} );
2. 修改订阅创建参数
创建新订阅时,添加关键参数让Stripe自动调用默认支付方式完成付款:
let subs = { "customer": "cus_NWCqvdBhiQRQ2a", "items": [ { "price_data": { "currency": "usd", "product": "prod_N8tG4peHRPUrsn", "recurring": { "interval": "month" }, "unit_amount_decimal": "2150" }, "quantity": 2 }], "metadata": {}, // 立即尝试用默认支付方式支付首次发票 "payment_behavior": "pay_now", // 可选:明确指定支付方式(省略时Stripe会自动使用客户默认) "default_payment_method": '{{客户的默认支付方式ID}}', "payment_settings": { // 确保包含客户支付方式的类型(如银行卡) "payment_method_types": ["card"], // 确保支付方式被保存为订阅默认方式 "save_default_payment_method": "on_subscription" } }
3. 处理已创建的incomplete订阅
如果已经生成了状态为incomplete的订阅,可通过API触发再次付款:
// 从订阅对象的latest_invoice字段获取发票ID await stripe.invoices.pay('{{发票ID}}', { customer: 'cus_NWCqvdBhiQRQ2a' });
关键说明:
payment_behavior: "pay_now"会让Stripe在创建订阅时立即发起扣款,成功后订阅状态变为active;若扣款失败,订阅会进入incomplete,你可设置自动重试或手动触发付款。- 需确保客户的支付方式支持该订阅的金额、币种,且未被银行拒绝。
内容的提问来源于stack exchange,提问作者Abhishek Goswami
相关产品推荐
相关产品推荐

