PAYATHON 2026

支付宝小程序支付如何禁止用户选择花呗

支付小周

结论

支付宝小程序无法在前端通过 my.tradePay 直接隐藏或禁用花呗。应在服务端创建支付宝交易时,通过 disable_pay_channels 禁用相关支付渠道,再将生成的交易号返回给小程序,由小程序拉起收银台。

一般需要同时禁用以下两个渠道:

  • pcredit:花呗
  • pcreditpayInstallment:花呗分期

服务端创建交易

调用 alipay.trade.create 时,在 biz_content 中加入 disable_pay_channels:

{
  "out_trade_no": "ORDER_202609130001",
  "total_amount": "99.00",
  "subject": "订单付款",
  "buyer_id": "2088xxxxxxxxxxxx",
  "disable_pay_channels": "pcredit,pcreditpayInstallment"
}

Java SDK 示例:

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

AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();

AlipayTradeCreateModel model = new AlipayTradeCreateModel();
model.setOutTradeNo("ORDER_202609130001");
model.setTotalAmount("99.00");
model.setSubject("订单付款");
model.setBuyerId(buyerId);
model.setDisablePayChannels("pcredit,pcreditpayInstallment");

request.setBizModel(model);

AlipayTradeCreateResponse response = alipayClient.execute(request);

if (!response.isSuccess()) {
    throw new RuntimeException(
        "创建支付宝交易失败:" +
        response.getSubCode() + " " +
        response.getSubMsg()
    );
}

String tradeNo = response.getTradeNo();

服务端创建交易后,将 tradeNo 返回给小程序。私钥、签名以及交易创建逻辑都不能放在小程序前端。

小程序拉起支付

小程序收到服务端返回的支付宝交易号后,调用 my.tradePay:

my.tradePay({
  tradeNO: tradeNo,
  success: (result) => {
    console.log('支付调用结果:', result);

    // 不要仅凭客户端结果修改订单状态,
    // 应由服务端查询交易或处理支付宝异步通知。
  },
  fail: (error) => {
    console.error('拉起支付失败:', error);
  }
});

my.tradePay 只用于拉起支付宝收银台。收银台中可以选择哪些支付渠道,取决于服务端创建交易时传入的参数以及支付宝收银台的规则。

如果使用其他支付接口

如果业务使用的不是 alipay.trade.create,而是其他支付宝交易接口,需要先确认该接口是否支持 disable_pay_channels。该字段通常放在请求的业务参数中,例如:

{
  "disable_pay_channels": "pcredit,pcreditpayInstallment"
}

接口类型、SDK 版本和产品签约状态都可能影响参数支持情况,具体应以当前接入接口的支付宝开放平台文档为准。不要使用接口文档中未声明的支付渠道值。

注意事项

  1. 如果只禁用 pcredit,收银台中可能仍会出现花呗分期,因此一般还要同时禁用 pcreditpayInstallment。
  2. 多个参数值之间要使用英文逗号分隔,不能使用中文逗号。
  3. 交易创建后,再修改代码通常不会自动更新该交易的支付渠道。调整参数后,应使用新的订单号重新创建交易并验证。
  4. 禁用花呗不等于指定某一种支付方式。用户仍可在支付宝收银台实际提供的余额、余额宝、银行卡等方式中选择。
  5. 最终可用的支付方式还会受到用户账户状态、商户签约能力、订单类型和支付宝风控规则的影响。
  6. 订单是否支付成功,应以支付宝异步通知或服务端交易查询结果为准,不能只依赖小程序端的回调结果。

备注:内容仅供参考。