Stripe从token计费迁移至Payment Intent模式后对接Zuora的取值问题
结论
不能直接用paymentIntent.id替代原有的token.id实现Zuora扣费,可根据你的业务场景选择对应字段使用:
场景1:替代原有token.id实现单次/多次扣费
你可以使用Payment Intent返回的payment_method字段值(即示例中pm_1JDCyYCmZFHcp9eoZHAfkoCX格式的ID)替代原来的token.id:
- Stripe的Payment Method ID(
pm_xxx)和原Token作用一致,是支付方式的唯一标识,Zuora的Stripe网关兼容该类凭据作为扣费源 - 该Payment Method已经完成3DS验证,符合SCA监管要求,不会出现3DS校验失败的拒付问题
- 若你需要后续复用该支付方式做订阅扣费等离线场景,建议在创建Payment Intent时补充
setup_future_usage: "off_session"参数,生成的Payment Method会自带3DS验证完成标识,后续离线扣费通过率更高
场景2:本次交易已完成授权仅需Zuora执行捕获
如果你当前的Payment Intent状态已经是requires_capture(代表Stripe侧已经完成卡授权和3DS校验,仅差扣款确认),你可以将paymentIntent.id传给Zuora,让Zuora直接关联该Payment Intent执行捕获操作即可完成本次扣费,不需要再传支付方法凭据。
注意:该方式仅适用于本次单交易,Payment Intent ID不能作为通用支付凭据复用做后续扣费
额外注意事项
- 请先确认你Zuora后台绑定的Stripe网关实例已经开启Payment Intent和3DS支持的相关配置,否则传参可能会触发网关报错
- Stripe手动捕获模式的授权有效期为7天,需要在有效期内完成捕获,逾期授权会自动失效
内容的提问来源于stack exchange,提问作者JonnySins666
相关产品推荐
相关产品推荐

