React Native Expo集成Stripe后付组件无保存支付方式选项问题
问题原因及解决方法
你的配置缺了两个必要项,直接导致保存支付方式的选项不显示:
- 未传入
customerEphemeralKeySecret参数
你当前代码里把这个参数注释掉了,Stripe需要客户的临时密钥才能关联客户、保存支付方式到对应客户账户下,没有这个参数的话即使传了customerId也没法启用保存功能。 - 未显式开启保存支付方式的配置项
你需要在initPaymentSheet的参数里加上savePaymentMethodOptInBehavior: 'automatic',这个配置是控制是否显示「保存支付方式供后续使用」勾选框的开关。
修改后的代码示例
import { useStripe } from '@stripe/stripe-react-native' ... const { initPaymentSheet, presentPaymentSheet } = useStripe(); ... await initPaymentSheet({ customerId: 'customerID', customerEphemeralKeySecret: ephemeralKey, // 取消注释,传入你后端生成的临时密钥 paymentIntentClientSecret: clientSecret, customFlow: false, merchantDisplayName: 'Example Inc.', applePay: true, merchantCountryCode: 'US', style: 'alwaysDark', googlePay: true, testEnv: true, savePaymentMethodOptInBehavior: 'automatic' // 新增这行配置 });
额外注意点
- 临时密钥
ephemeralKey必须由你的后端调用Stripe接口生成,不能在前端硬编码或者直接调用Stripe接口生成,避免密钥泄漏风险 - 确保你使用的
@stripe/stripe-react-native版本和参考示例的版本一致,旧版本的配置字段可能有差异
内容的提问来源于stack exchange,提问作者schoenbl
相关产品推荐
相关产品推荐

