调用Stripe capture接口捕获Payment Intent时intent参数类型错误如何解决?
你遇到的报错和transfer_data字段的语法没有关系,错误是由你调用stripe.paymentIntents.capture方法的参数传递方式不符合Stripe Node.js SDK的要求导致的。
Stripe的paymentIntents.capture方法的第一个入参要求直接传入Payment Intent的ID字符串,第二个参数才是包含捕获金额、转账配置等信息的配置对象。你现在把ID也放到了配置对象里,导致第一个入参整体是个对象,不符合SDK的参数类型要求,就触发了报错。
以下是修正后的代码示例:
const intent = await stripe.paymentIntents.capture( paymentIntentId, // 第一个参数直接传入Payment Intent的ID字符串 { amount_to_capture: finalAmount, transfer_data: { destination: connectedAccountId } } );
额外校验点:
- 确认
paymentIntentId本身是字符串类型,不是未处理的对象格式 - 部分金额捕获时,
finalAmount的数值不能超过创建Payment Intent时设置的原始金额,单位需要和原始金额保持一致,为对应货币的最小单位(如人民币为分、美元为美分) - 确认你的Stripe Node.js SDK为最新稳定版本,避免旧版本存在的接口规则差异
内容的提问来源于stack exchange,提问作者wax_boi
相关产品推荐
相关产品推荐

