PAYATHON 2026

直付通不支持PC端网页支付,有哪些分账替代方案?

支付老李

结论

有替代方案。针对”电商平台入驻商家 + PC 端付款 + 交易后分账”的场景,通常可以考虑三种路径:

  1. 支付宝电脑网站支付 + 商家分账能力:用户在 PC 浏览器中跳转到支付宝收银台付款。支付成功后,平台再调用分账或结算接口。
  2. 微信支付电商收付通 + Native 支付:PC 页面展示二维码,用户使用微信扫码付款。交易完成后,平台按订单向入驻商户分账。
  3. 银行或持牌支付机构的平台型收付解决方案:支付机构负责商户进件、资金结算、分账和退款,适合支付渠道较多或交易规模较大的平台。

支付产品能否与某个分账接口组合使用,要看平台主体资质、所属行业、商户进件方式及支付机构授予的签约权限,不能只根据接口名称判断。接入前,应要求支付机构明确确认:“PC 支付产生的交易是否允许调用对应的分账接口?”

方案一:支付宝电脑网站支付配合分账

如果业务必须提供传统的 PC 网页收银台,可以申请支付宝”电脑网站支付”。创建交易时使用:

alipay.trade.page.pay

用户付款后,平台通过支付宝异步通知取得 trade_no,再调用已经签约的分账或订单结算能力。部分业务会使用:

alipay.trade.order.settle

典型流程如下:

用户提交订单
    ↓
平台创建内部订单
    ↓
调用 alipay.trade.page.pay
    ↓
用户跳转支付宝收银台付款
    ↓
平台收到异步支付通知
    ↓
校验签名、金额、商户订单号
    ↓
调用分账/结算接口
    ↓
记录每个接收方的分账结果

下面的 Java 代码只展示基本调用结构,具体字段应以实际签约产品的接口文档为准:

AlipayClient client = new DefaultAlipayClient(
    gatewayUrl,
    appId,
    merchantPrivateKey,
    "json",
    "UTF-8",
    alipayPublicKey,
    "RSA2"
);

AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("https://example.com/payment/return");
request.setNotifyUrl("https://example.com/payment/notify");

request.setBizContent("""
{
  "out_trade_no": "ORDER_202609130001",
  "total_amount": "100.00",
  "subject": "平台订单",
  "product_code": "FAST_INSTANT_TRADE_PAY"
}
""");

AlipayTradePagePayResponse response = client.pageExecute(request);
String paymentForm = response.getBody();

支付完成后,不要根据 return_url 直接执行分账。浏览器的同步跳转既可能被伪造,也可能因用户关闭页面而丢失。平台应以验签通过的异步通知或主动查单结果为准。

分账请求示例如下:

AlipayTradeOrderSettleRequest settleRequest =
    new AlipayTradeOrderSettleRequest();

settleRequest.setBizContent("""
{
  "out_request_no": "SETTLE_ORDER_202609130001",
  "trade_no": "支付宝交易号",
  "royalty_parameters": [
    {
      "royalty_type": "transfer",
      "trans_in": "分账接收方标识",
      "amount": "80.00",
      "desc": "商家货款"
    },
    {
      "royalty_type": "transfer",
      "trans_in": "另一接收方标识",
      "amount": "10.00",
      "desc": "服务商分成"
    }
  ]
}
""");

AlipayTradeOrderSettleResponse settleResponse =
    client.execute(settleRequest);

接收方标识的类型、是否需要提前绑定分账关系、平台可以留存的金额及分账期限,都应以实际开通产品的规则为准。账户开通了电脑网站支付,并不代表它自动拥有订单分账权限。

方案二:微信支付电商收付通配合 Native 支付

如果业务可以接受在 PC 页面展示二维码,由用户使用手机扫码付款,可以考虑微信支付电商收付通。

平台需要先完成二级商户进件。用户付款时,平台创建 Native 支付订单,并在 PC 页面展示返回的二维码。支付成功后,再使用电商收付通的分账能力,将资金分配给二级商户或其他合规接收方。

创建订单时,应保存平台订单号、支付机构订单号及是否需要分账等信息。例如:

{
  "platform_order_no": "ORDER_202609130001",
  "amount": 10000,
  "currency": "CNY",
  "profit_sharing": true,
  "allocations": [
    {
      "receiver_id": "MERCHANT_A",
      "amount": 8000
    },
    {
      "receiver_id": "SERVICE_PROVIDER",
      "amount": 1000
    }
  ]
}

这段 JSON 是平台内部数据结构示例,并非可以直接提交给微信支付的完整请求。实际接入时,应根据电商收付通的当前文档选择支付接口和分账接口,并使用相应的商户号、二级商户号、证书和签名规则。

这种方案对平台型商户与二级商户的关系定义比较清楚。它的限制也很明确:PC 端通常采用扫码支付,而不是让用户直接在浏览器中完成完整的银行卡或账户支付流程。

方案三:接入持牌支付机构的平台账户体系

如果平台还需要接入银行卡、网银、快捷支付、微信和支付宝等多种渠道,可以考虑银行或持牌支付机构提供的平台型收付产品。

这类方案通常包括:

  • 入驻商户实名认证和进件;
  • PC 网关支付或聚合收银台;
  • 平台订单与支付订单管理;
  • 按订单分账、延迟分账和退款;
  • 对账单及结算单;
  • 商户余额、提现或直接结算。

选型时需要确认:

  • 是否明确支持平台及入驻商户模式;
  • PC 支付是跳转收银台,还是只支持二维码;
  • 资金是否由持牌机构托管和清算;
  • 是否支持多级分账及平台服务费;
  • 分账前退款和分账后退款分别如何处理;
  • 商户进件要求、结算周期和手续费;
  • 是否提供订单级对账单和分账明细。

推荐的落地步骤

先确定业务的资金模型,再选择接口和开展开发。

1. 明确资金参与方

每笔订单至少要明确以下内容:

  • 消费者实际支付的金额;
  • 入驻商家应得的金额;
  • 平台服务费;
  • 是否还有供应商、推广方等其他接收方;
  • 运费、优惠券和退款分别由谁承担。

例如:

订单实付:100.00 元
商家货款:82.00 元
平台服务费:10.00 元
推广佣金:5.00 元
暂不分配金额:3.00 元

分账金额应统一使用整数分处理,以免产生浮点数误差:

long orderAmount = 10000;
long merchantAmount = 8200;
long platformFee = 1000;
long commission = 500;
long reservedAmount = 300;

if (merchantAmount + platformFee + commission + reservedAmount
        != orderAmount) {
    throw new IllegalStateException("分账金额不平");
}

2. 向支付机构确认产品组合

申请时应直接说明业务属于”平台入驻商户模式”,并确认这些问题:

PC 支付产生的订单是否支持分账?
分账接收方是否必须提前进件或绑定?
平台服务费能否直接在订单内扣取?
最晚可以在支付后多久发起分账?
一笔订单最多支持多少接收方?
分账后发生退款时如何退回?

支付机构需要根据当前主体和签约产品给出明确答复,之后才能确定最终的技术方案。

3. 建立支付与分账状态机

支付成功和分账成功是两个独立状态,不能合并处理。建议至少维护以下状态:

PAY_PENDING       待支付
PAY_SUCCESS       支付成功
SHARING_PENDING   待分账
SHARING_PROCESSING 分账处理中
SHARING_SUCCESS   分账成功
SHARING_FAILED    分账失败
REFUND_PROCESSING 退款处理中
REFUND_SUCCESS    退款成功

每次分账请求都必须使用唯一请求号实现幂等。收到重复通知或执行任务重试时,应先查询原分账结果,避免重复分配资金。

4. 做好退款和对账

退款逻辑需要同时覆盖以下情况:

  • 未分账订单直接退款;
  • 已分账订单是否需要先回退分账;
  • 部分退款按比例承担,还是由指定责任方承担;
  • 分账接收方余额不足时如何处理;
  • 支付、分账和结算金额是否一致。

平台每天应分别核对支付订单、退款订单、分账明细和实际结算记录,不能只核对用户支付金额。

注意事项

不要先把消费者资金结算到平台普通账户,再由平台私下转账给入驻商家。这种做法可能带来资金沉淀或”二清”风险。平台型业务应使用支付机构明确提供的商户进件、分账和结算能力。

还要注意以下事项:

  • return_url 只用于页面展示,不能作为支付成功的依据;
  • 所有异步通知都要验签,并核对金额、订单号和收款主体;
  • 金额统一使用”分”或高精度十进制类型;
  • 支付成功后先保存状态,再异步发起分账;
  • 分账接口调用失败不能直接视为没有执行,应先查单再重试;
  • 接收方注销、冻结或未完成进件时,需要准备人工补偿流程;
  • 日志中不要记录私钥、完整证件号、银行卡号或支付凭证。

如果业务必须使用支付宝的 PC 跳转收银台,可以优先评估”电脑网站支付 + 已签约分账能力”。如果可以接受扫码支付,可以评估微信支付电商收付通。如果平台还需要更多支付渠道和完整的商户资金管理能力,银行或持牌支付机构的平台解决方案通常更合适。

备注:内容仅供参考。