PAYATHON 2026

扫码支付--统一收单交易创建接口在什么场景下使用?

支付小周

明确结论

“扫码支付统一收单交易创建接口”通常是指 alipay.trade.create。该接口用于在支付宝侧创建交易并获取支付宝交易号 trade_no。它适用于已经确定付款用户身份,并需要通过 trade_no 唤起收银台或继续支付的场景。

通常的调用时机是:

  1. 用户确认商品、金额等订单信息。
  2. 商户系统生成自己的订单号 out_trade_no。
  3. 商户服务端调用 alipay.trade.create 创建支付宝交易。
  4. 接口返回 trade_no。
  5. 前端使用 trade_no 发起支付。
  6. 商户通过异步通知或主动查询确认最终支付结果。

alipay.trade.create 只负责创建交易。接口调用成功,并不表示用户已经付款。

适用场景

常见场景包括:

  • 用户扫码进入支付宝小程序或商户页面,选购商品并提交订单。
  • 扫码后已经完成用户识别,商户可以取得创建交易所需的支付宝用户标识。
  • 商户先通过服务端创建交易,再将 trade_no 交给前端支付组件。
  • 用户扫码进入线下门店点餐、自助售货或停车缴费页面,确认订单后完成支付。

这里的“扫码”可能只是进入业务页面的方式,并不表示创建接口会生成二维码或扫描付款码。

如果商户展示收款二维码,由用户直接扫码付款,通常应评估 alipay.trade.precreate。如果收银员扫描用户付款码并立即扣款,通常应评估 alipay.trade.pay。最终使用哪个接口,仍应以当前接入的产品和支付宝开放平台文档为准。

调用流程

可以按以下顺序处理:

  1. 服务端校验商品价格、库存和订单状态,不要直接信任前端提交的金额。
  2. 生成全局唯一且可重复查询的 out_trade_no。
  3. 使用保存在服务端的商户私钥调用 alipay.trade.create。
  4. 保存接口返回的 trade_no,再将它返回给前端。
  5. 前端通过当前运行环境支持的支付能力发起付款。
  6. 服务端验签并处理支付异步通知。
  7. 必要时调用交易查询接口核对订单状态。

Java 示例

下面只展示核心调用结构。SDK 版本、用户标识的获取方式和前端唤起方法,需要根据实际接入环境确定。

AlipayClient alipayClient = new DefaultAlipayClient(
    "https://openapi.alipay.com/gateway.do",
    appId,
    merchantPrivateKey,
    "json",
    "UTF-8",
    alipayPublicKey,
    "RSA2"
);

AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
request.setBizContent("""
{
  "out_trade_no": "ORDER_202609150001",
  "total_amount": "19.90",
  "subject": "门店消费",
  "buyer_id": "用户的支付宝标识"
}
""");

AlipayTradeCreateResponse response = alipayClient.execute(request);

if (response.isSuccess()) {
    String tradeNo = response.getTradeNo();
    // 将 tradeNo 保存到订单,并返回给前端用于后续支付
} else {
    String subCode = response.getSubCode();
    String subMsg = response.getSubMsg();
    // 记录错误信息,并根据业务规则决定是否重试
}

前端取得 trade_no 后,应调用当前支付宝运行环境提供的支付能力。不要在浏览器或小程序前端直接调用开放平台网关,也不要将商户私钥放在客户端。

注意事项

  • response.isSuccess() 只表示创建交易请求已被受理,不能据此将订单标记为“已支付”。
  • 最终支付结果应以验签通过的异步通知为主,主动查询作为补充。
  • out_trade_no 必须保持唯一。遇到网络超时,不要立即更换订单号并重复创建,应先查询原订单。
  • 服务端应根据商品和优惠规则重新计算金额。
  • buyer_id 等用户标识的名称和获取方式可能随产品及授权模式变化,不要自行拼接或伪造。
  • 同一订单需要防止重复支付,并正确处理关闭、退款、超时和支付中等状态。
  • 沙箱与正式环境的网关、应用、密钥和账号数据必须相互配套,不能混用。

备注:内容仅供参考。