React Native Stripe支付组件如何默认选中预设已保存支付方式

问题说明
参考Stripe官方React Native支付接入文档实现支付功能,整体支付流程运行正常,但存在一个交互问题:创建PaymentIntent时已经为用户配置了默认支付方式,Stripe Payment Element组件渲染时,能正常展示所有用户已保存的银行卡(尾号4444的卡片为预设默认支付卡),但不会自动默认选中该预设支付方式,需要用户手动点选。
实现方法
Payment Element不会自动读取PaymentIntent上挂载的默认支付方式配置,要实现组件自动选中预设默认卡,必须在组件初始化环节显式传入目标支付方式的ID,根据你用的接入模式对应配置即可:
- 若使用Customer Session模式(Stripe推荐模式,客户端自动拉取用户已保存的支付方式):
服务端创建Customer Session时,在支付组件的默认值配置项中,填入预设默认支付方式的ID(即pm_开头的Stripe支付方式唯一标识,对应尾号4444的卡片),客户端拉取Session配置初始化组件时,会自动匹配该ID选中对应银行卡。 - 若使用旧版接入模式(服务端主动拉取用户已保存支付方式列表返回给客户端):
客户端调用initPaymentSheet方法初始化支付组件时,在配置参数中传入默认支付方式ID字段,值为尾号4444卡片对应的pm_开头ID,同时把服务端返回的已保存支付方式列表传入组件配置,组件渲染时就会自动选中目标卡片。
踩坑提醒:只在创建PaymentIntent时传入默认支付方式参数,只能实现后端兜底扣费逻辑——也就是用户如果没手动选卡就直接扣这张卡的钱,前端组件根本不会读取这个配置来设置默认选中态,必须通过上述显式传参的方式才能控制前端的默认选中表现。
配置完成后拉起支付组件,就会默认高亮选中预设的尾号4444银行卡,用户无需手动点选即可直接用该卡提交支付。
内容的提问来源于stack exchange,提问作者Aggounix
相关产品推荐
相关产品推荐

