PAYATHON 2026

支付宝网商贷沙盒调用 alipay.trade.precreate 是否需商户认证

支付老李

结论

在支付宝沙盒环境中调用 alipay.trade.precreate,一般不要求真实账号事先完成商户认证。测试时,应使用开放平台为沙盒应用分配的沙盒商家账号、沙盒买家账号及沙盒应用参数,不能直接使用真实个人支付宝账号参与交易。

“吱口令不支持该产品码”通常说明应用能力、接口参数或调用环境不匹配,不能据此认定问题出在商户认证。建议先确认应用是否配置了当面付相关能力,以及请求中是否错误传入了 product_code。

正式环境的要求不同。上线调用 alipay.trade.precreate 前,通常需要有符合要求的商户主体,完成相应签约,并为应用开通当面付能力。具体准入条件以支付宝开放平台当前显示的签约要求为准。

沙盒账号应如何使用

沙盒测试涉及三类身份:

  • 沙盒应用:提供测试使用的 app_id。
  • 沙盒商家账号:模拟收款方。
  • 沙盒买家账号:配合沙盒版支付宝客户端扫码付款。

真实个人支付宝账号一般不能直接作为沙盒买家或沙盒商家。即使使用个人账号登录开放平台并创建应用,调用接口时仍应使用该应用对应的沙盒参数和沙盒测试账号。

个人账号能否创建”网页应用”,取决于开放平台当前的账号准入和应用创建规则。不过,能够创建应用并不表示已经获得正式环境的收款能力。沙盒接口能否测试与正式商户是否具备签约资格,是两个不同的问题。

出现该提示时重点检查什么

1. 确认接口与产品能力是否匹配

alipay.trade.precreate 是预创建交易接口,主要用于生成支付宝扫码支付二维码,通常对应当面付场景。

如果应用开通的是网页支付、口令类产品或其他支付能力,却调用了当面付接口,就可能出现产品码不支持、产品未签约或应用无权限等错误。

如果问题中的”网商贷”确实是指支付宝贷款类产品,而不是”商家在线支付”,则需要重新确认业务范围。alipay.trade.precreate 属于支付交易接口,不是网商贷授信或贷款接口。

2. 检查 product_code

不要直接复制其他支付接口示例中的 product_code。网页支付、手机网站支付、App 支付和当面付使用的产品码并不相同。

调用 alipay.trade.precreate 时,应按照该接口当前的文档构造业务参数。如果文档没有要求传入 product_code,就不要自行添加;如果当前接入文档明确要求该字段,则必须填写与当面付能力匹配的值。

一种常见错误是传入网页支付或口令产品的产品码,例如:

{
  "out_trade_no": "ORDER_202609080001",
  "total_amount": "0.01",
  "subject": "扫码支付测试",
  "product_code": "错误或不适用于当面付的产品码"
}

排查时,可以先删除非必需的 product_code,只保留接口要求的核心业务参数。

3. 确认没有混用沙盒和正式环境参数

以下参数必须来自同一个沙盒应用:

  • 沙盒 app_id
  • 应用私钥
  • 支付宝公钥或支付宝公钥证书
  • 沙盒网关地址
  • 应用采用的签名方式

不能将沙盒 app_id 与正式网关搭配使用,也不能用正式应用的支付宝公钥验证沙盒响应。

4. 查看完整错误信息

不要只看页面上的提示文字,还要记录以下响应字段:

code
msg
sub_code
sub_msg

判断问题是否与账号认证有关,主要应看 sub_code。只有错误码明确指向应用未签约、产品权限不足、商户状态异常或主体资格受限时,才需要进一步检查认证和签约状态。

建议的处理步骤

  1. 登录支付宝开放平台,进入目标应用的沙盒环境。
  2. 确认当前使用的是沙盒 app_id 和沙盒网关。
  3. 检查应用是否具备当面付或相应的扫码支付测试能力。
  4. 按照 alipay.trade.precreate 的接口文档重新构造请求,不要混用网页支付、口令支付等接口的 product_code。
  5. 使用沙盒商家账号作为收款方。
  6. 使用沙盒买家账号和配套的沙盒客户端扫码。
  7. 输出完整响应中的 sub_code 和 sub_msg。
  8. 沙盒测试通过后,再申请正式环境所需的商户认证、产品签约和应用上线。

Java 调用示例

以下示例只展示基本调用结构。密钥、公钥、网关地址和 app_id 必须替换为当前沙盒控制台提供的值:

AlipayClient alipayClient = new DefaultAlipayClient(
    "沙盒网关地址",
    "沙盒_APP_ID",
    "应用私钥",
    "json",
    "UTF-8",
    "支付宝公钥",
    "RSA2"
);

AlipayTradePrecreateRequest request =
    new AlipayTradePrecreateRequest();

request.setBizContent("""
{
  "out_trade_no": "ORDER_202609080001",
  "total_amount": "0.01",
  "subject": "扫码支付测试"
}
""");

AlipayTradePrecreateResponse response =
    alipayClient.execute(request);

if (response.isSuccess()) {
    System.out.println("qr_code: " + response.getQrCode());
} else {
    System.out.println("code: " + response.getCode());
    System.out.println("msg: " + response.getMsg());
    System.out.println("sub_code: " + response.getSubCode());
    System.out.println("sub_msg: " + response.getSubMsg());
}

这个示例没有主动传入 product_code。如果支付宝当前的接口文档或应用配置明确要求该字段,应以控制台和对应接口文档为准,不要照搬其他支付接口示例中的值。

注意事项

沙盒接口可以调用,不代表正式环境可以直接收款。正式上线时,通常仍需完成商户主体认证、签约支付产品、配置应用密钥,并通过必要的上线审核。

二维码接口成功返回 qr_code,只说明预创建交易已经成功。用户扫码付款后,还需要通过异步通知或 alipay.trade.query 查询交易状态,不能仅凭前端扫码结果认定订单已经支付。

因此,排查当前问题时,应先确认产品能力与接口参数是否匹配,而不是直接进行商户认证。只有完整错误码明确指向商户资格或签约状态时,才需要根据提示补充认证或开通相应产品。

备注:内容仅供参考。