Stripe Checkout技术疑问:用已保存Source还是新Token创建Charge?
关于Stripe Checkout后续Charge创建的最佳实践
Great question—this is a common gotcha when balancing saved customer convenience and flexible payment options with Stripe. Let's break this down clearly:
核心逻辑:根据客户当前的付款选择来决定方案
Stripe建议保存客户信息(含默认Source)是为了提升回头客的结账体验,但这并不意味着你要一直依赖这个默认Source。正确的做法分两种场景:
当客户使用已保存的付款方式结账时:
直接用客户的默认Source创建Charge完全没问题,这也是Stripe推荐的优化方式,能避免客户重复输入卡信息。但要记得监听charge.failed这类webhook事件——如果默认Source失效(比如卡过期、挂失),得及时引导客户重新提供支付信息。当客户使用新信用卡结账时:
这时候绝对不能再用旧的默认Source,你有两个合理的选择:- 直接用stripe.js返回的新Token创建
Charge,同时可以调用API把该客户的默认Source更新为新Token对应的Source,这样下次客户再来时默认就是新卡了。 - 先把新Token关联到客户(创建新的Source并设为客户默认),再通过客户ID创建
Charge——这种方式更适合需要长期保存新付款方式的场景。
- 直接用stripe.js返回的新Token创建
要不要始终用Token?
答案是不需要。你应该根据客户的实际付款选择灵活切换:
- 老客户用旧卡 → 用客户默认Source
- 老客户换用新卡 → 用新Token(可选更新默认Source)
- 新客户首次结账 → 保存客户+Source,后续按需处理
这样既保证了交易成功率,又能兼顾用户体验和业务需求。
内容的提问来源于stack exchange,提问作者saturdayplace
相关产品推荐
相关产品推荐

