如何在Stripe PaymentSheet中调出「保存卡片详情」选项?
Stripe PaymentSheet不显示卡片保存选项的解决方案
你遇到的两个问题(无法选择已存卡片、无新卡片保存勾选框),核心问题出在后端配置上,以下是具体修复步骤:
1. 后端创建PaymentIntent时必须添加setup_future_usage参数
要让PaymentSheet显示保存卡片的选项,后端生成PaymentIntent时必须指定setup_future_usage参数,取值为on_session或off_session:
on_session:允许用户后续在会话内复用该卡片off_session:支持后续自动扣款(无需用户操作)
示例后端代码(Node.js):
const paymentIntent = await stripe.paymentIntents.create({ amount: 1000, // 金额单位为分 currency: 'cny', // 根据你的业务设置币种 customer: 'cus_XXXXXXX', // 对应前端传入的customer ID setup_future_usage: 'on_session', // 关键配置 // 其他必填参数 });
2. 验证EphemeralKey的生成权限
生成EphemeralKey时,必须确保权限包含customer_payment_methods,否则前端无法获取用户已存储的卡片:
const ephemeralKey = await stripe.ephemeralKeys.create( { customer: 'cus_XXXXXXX' }, { apiVersion: '2024-06-20' } // 使用你当前的Stripe API版本 );
3. 前端代码确认
你的前端initPaymentSheet配置已经正确传入了customerId和customerEphemeralKeySecret,这部分无需修改,只需确保后端返回的这两个值是有效且关联的。
额外检查点
- 确认Stripe后台未禁用卡片保存功能(默认开启)
- 测试使用Stripe官方测试卡号(如
4242 4242 4242 4242),部分真实卡号可能因发卡行规则无法保存
内容的提问来源于stack exchange,提问作者midnighttfoxx
相关产品推荐
相关产品推荐

