PAYATHON 2026

直付通手续费及付款账号限制问题

支付阿杰

明确结论

直付通没有适用于所有商家的统一手续费。实际费率、收费对象和扣费方式,应以平台、直付商家与支付宝签署的协议,以及商户后台显示的签约信息为准,不能直接按固定的 0.6% 或其他比例计算。

直付通也不意味着”只能使用平台方的支付宝账号付款”:

  • 平台方通常负责接口接入、创建交易和管理直付商家。
  • 付款人一般可以使用普通买家支付宝账号,具体要看接入的支付产品、交易场景和风控规则。
  • 接口调用身份与付款账号不是一回事。平台使用自己的 app_id 发起接口请求,不代表付款也必须由平台的支付宝账号完成。

订单款项直接支付或结算给直付商家,也不代表免收手续费。交易只要使用了约定的支付服务,通常仍会按签约费率收费。多数情况下,手续费会从商家的交易款或结算款中扣除,不会另外向买家收取。

为什么手续费会有差异

直付通的费用可能受以下因素影响:

  • 平台与支付宝签署的产品协议
  • 直付商家的签约状态和商户类别
  • 支付方式,例如支付宝余额、银行卡或花呗
  • 所属行业和交易场景
  • 是否有优惠费率、活动补贴或特殊商务政策
  • 退款时是否退还手续费,以及具体退还比例
  • 订单是否使用分账、结算或其他增值服务

所以,即使两个平台都接入了直付通,最终费率也可能不同。

假设订单金额为 amount,协议费率为 rate,并且没有最低收费、封顶或优惠规则,可以这样估算:

手续费 = amount × rate
预计结算金额 = amount - 手续费

例如订单金额为 100.00 元,费率为 rate:

手续费 = 100.00 × rate

其中的 rate 必须来自实际签约信息,不能在程序中自行假定。

如何确认付款账号是否受限

可以依次检查以下事项:

  1. 确认平台实际接入的是直付通,而不是普通当面付、转账或其他支付产品。
  2. 检查调用接口所用的 app_id 是否属于签约平台应用。
  3. 确认直付商家已经完成进件、审核、签约和关联。
  4. 分清接口调用方、收款方和付款方:
    • 接口调用方通常是平台应用;
    • 收款或结算主体是订单关联的直付商家;
    • 付款方是实际买家。
  5. 使用平台账号以外的测试买家账号支付一笔小额订单。
  6. 如果支付失败,记录支付宝返回的错误码、sub_code 和完整错误信息,再判断问题来自账号限制、商户状态异常还是风控拦截。

不能仅凭”接口由平台发起”就认定付款账号必须属于平台方。

如何确认直付商家的实际手续费

确认实际手续费时,应同时核对以下信息:

  1. 支付宝商家后台或开放平台显示的签约产品和费率。
  2. 平台与支付宝签署的合同、补充协议或商务报价。
  3. 直付商家的账单、资金明细和结算明细。
  4. 支付成功、退款及结算接口返回的信息。
  5. 对账文件中的订单金额、手续费和实收金额。

对账时可以使用类似下面的逻辑:

import java.math.BigDecimal;
import java.math.RoundingMode;

public class FeeCalculator {
    public static BigDecimal calculateFee(
            BigDecimal orderAmount,
            BigDecimal contractRate) {

        return orderAmount
                .multiply(contractRate)
                .setScale(2, RoundingMode.HALF_UP);
    }

    public static BigDecimal calculateNetAmount(
            BigDecimal orderAmount,
            BigDecimal fee) {

        return orderAmount.subtract(fee);
    }
}

如果协议费率为万分之六,应传入:

BigDecimal contractRate = new BigDecimal("0.0006");

如果协议费率为千分之六,则应传入:

BigDecimal contractRate = new BigDecimal("0.006");

两者相差十倍,配置时必须看清合同中的费率单位。实际扣费还可能受到优惠、舍入、最低收费或封顶规则影响,因此这段代码只能用于预估,最终金额应以支付宝账单为准。

接入时的注意事项

  • 不要混淆 app_id、商户账号和买家付款账号。
  • 不要在代码中写死手续费率。建议把费率设为可配置项,并记录生效时间。
  • 直付商家收到交易款或结算款,不代表这笔交易免收手续费。
  • 买家通常按订单标价付款,手续费一般由签约收费主体承担,特殊场景仍以协议为准。
  • 退款是否返还手续费没有统一答案,需要查看当前产品的退款计费规则。
  • 沙箱环境通常不能反映正式环境的真实费率,应根据生产合同和正式账单确认。
  • 如果后台没有显示费率,或者账单扣费与合同不一致,应准备 out_trade_no、支付宝交易号、商户账号和账单日期,向支付宝技术支持或商务人员核实。

备注:内容仅供参考。