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

如何在Node.js中实现Stripe授权时设置平台费并调整扣款金额?

报错核心原因

application_fee_amount是Stripe Connect分账功能的专属参数,根据Stripe的规则,该参数仅支持在自动捕获的直连转账PaymentIntent创建时、或者手动捕获PaymentIntent的调用环节传入,你在创建手动预授权PaymentIntent时直接传递该参数,不符合参数校验规则,因此触发报错。

解决方案

1 调整预授权PaymentIntent创建逻辑

移除创建参数中的application_fee_amount字段,如果你是对接供需双方的平台场景,需要额外增加transfer_data参数指定服务提供方的Connect商户ID,代码调整如下:

let obj = {
        amount: convertToCents(data.amount),
        currency: 'usd',
        payment_method_types: ['card'],
        capture_method: 'manual',
        payment_method: data.payment_method,
        customer: data.customer,           
        confirm: true,
        // 仅Connect平台场景需要加以下参数,普通单商户场景无需添加
        transfer_data: {
          destination: '你的服务提供方Connect商户ID', 
        }
    }
console.log(obj);
const paymentIntent = await stripe.paymentIntents.create(obj);

2 确认服务完成后,捕获资金时传入平台费参数

待双方确认服务交付完成,执行资金划扣时,调用PaymentIntent捕获接口,此时再传入application_fee_amount参数即可正常生效,代码示例:

const capturedIntent = await stripe.paymentIntents.capture(
  paymentIntent.id,
  {
    application_fee_amount: convertToCents(data.amount * 0.05), // 5%平台费在此处传递
    // 如果你需要部分扣款,可以加amount_to_capture参数指定实际扣款金额,全额扣款可以省略该参数
  }
);
其他说明
  • 如果你并非多商户对接的平台场景,仅为单一商户收款,不需要使用application_fee_amount参数,直接在后续内部账务中拆分收入即可
  • 平台费金额不可超过本次捕获的总金额,否则会触发参数校验错误
  • 需提前完成Stripe Connect服务的开通和资质审核,否则分账相关参数无法正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:39:03