You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native+Firebase+Stripe打车应用支付流程及API选型咨询

问题解答

流程合理性

这个流程完全合理,既贴合打车场景的用户体验需求,也符合Stripe的合规规则:

  • 单次3DS认证后续免密,避免重复验证打扰用户
  • 司机确认行程完成后再扣款,匹配打车服务的交易逻辑,能有效减少误扣款纠纷
  • 预先完成卡验证与认证,后续扣款的成功率更高

推荐流程方案

核心逻辑

通过Stripe的Setup Intent完成首次卡添加与3DS认证,将验证后的支付方式绑定到用户的Stripe Customer对象上,后续行程直接通过该Customer发起扣款,无需再次认证(仅当Stripe检测到高风险交易时才会触发二次验证,属于系统自动逻辑)。

用户端首次添加银行卡流程

  1. 后端(Firebase Functions)调用Stripe API创建SetupIntent,指定payment_method_types: ['card']并开启3DS要求(设置payment_method_options.card.setup_future_usage: 'off_session')
  2. React Native端使用Stripe SDK的CardField组件安全收集用户银行卡信息
  3. 调用SDK的confirmSetupIntent方法完成3DS认证(SDK会自动拉起适配移动端的3DS验证界面)
  4. 认证通过后,后端将生成的PaymentMethod附加到用户对应的Stripe Customer对象上,并将Customer ID存储到Firebase的用户文档中

后续行程扣款流程

  1. 用户下单后,Firebase创建行程记录,关联用户信息与行程金额
  2. 司机端标记行程完成后,触发Firebase Functions的扣款逻辑
  3. 后端调用Stripe API创建PaymentIntent,指定金额、货币,并关联用户的Stripe Customer ID(Stripe会自动使用该Customer的默认支付方式)
  4. 扣款完成后,将结果同步到Firebase的行程记录中

需要使用的Stripe API

  • Setup Intent相关:
    • POST /v1/setup_intents:创建用于卡验证与3DS认证的SetupIntent
    • POST /v1/setup_intents/{id}/confirm:确认SetupIntent(React Native SDK会自动封装调用)
  • Customer相关:
    • POST /v1/customers:为每个用户创建唯一的Stripe Customer对象
    • POST /v1/customers/{customer_id}/payment_methods:将验证后的PaymentMethod附加到Customer
  • Payment Intent相关:
    • POST /v1/payment_intents:创建并发起扣款(指定customer参数即可关联已绑定的支付方式)
  • React Native SDK组件/方法:
    • CardField:安全收集银行卡信息
    • confirmSetupIntent:处理3DS认证流程

内容的提问来源于stack exchange,提问作者keatwei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:00:58