PAYATHON 2026

alipay.fund.auth.order.app.freeze 提示商户无接口权限

支付老李

结论

alipay.fund.auth.order.app.freeze 接入检测通过,只能说明应用具备调用该接口的基本条件,不能证明实际发起冻结的商户已经获得资金预授权产品权限。

这类报错通常不是缺少其他 API 权限,而是请求对应的实际收款商户(PID)尚未签约,或尚未开通 PRE_AUTH_ONLINE 对应的支付宝预授权产品。排查时还要确认应用绑定、签约商户、调用身份和预授权场景是否一致。

为什么接入检测通过仍会报错

接入检测主要检查应用配置,例如:

  • AppID 是否有效;
  • 当前应用能否配置该接口;
  • 密钥、网关和 SDK 的基本配置是否正确;
  • 应用是否具备提交该接口请求的条件。

正式调用接口时,支付宝还会检查实际商户:

  • 请求对应的商户 PID 是否已签约支付宝预授权产品;
  • 商户所属行业和经营场景是否符合准入要求;
  • 当前 AppID 是否已绑定该商户,或能否代表该商户调用;
  • product_code 是否与商户签约产品及业务场景匹配;
  • 服务商代调用时,商户授权关系是否有效。

因此,“应用能接入接口”和”商户能使用产品”属于两层不同的权限。

处理步骤

1. 确认实际调用身份

先确认请求使用的 AppID,以及该应用所属或代为调用的商户 PID。

需要重点排查:

  • 接入检测使用 A 商户,正式请求却由 B 商户发起;
  • 使用服务商应用调用,但没有正确传递商户授权令牌;
  • 应用属于服务商,但实际经营商户尚未开通预授权;
  • 混用了沙箱和生产环境的 AppID、密钥或网关配置;
  • 签约产品开通在一个支付宝账号下,应用却绑定在另一个账号下。

在服务商模式下,即使服务商本身具备接口调用能力,被代调用的商户也不会自动获得预授权产品权限。

2. 检查商户产品签约状态

登录支付宝商家平台或开放平台,检查实际商户是否已经完成”支付宝预授权”相关产品的申请和签约,并确认产品已经生效。

重点核对:

  • 产品申请不是仅处于已提交、审核中或待签约状态;
  • 已生效的产品支持线上 App 预授权场景;
  • 签约主体与请求中的商户主体一致;
  • 当前业务所属行业在该产品的准入范围内;
  • 产品权限确实包含 alipay.fund.auth.order.app.freeze。

不同商户类型和行业对应的申请入口、产品名称及准入材料可能不同。如果后台找不到相应的申请入口,增加应用接口列表也无法解决。此时需要联系支付宝商家客服或提交开放平台工单,请平台核实该 PID 的产品权限。

提交工单时,建议提供:

  • AppID;
  • 商户 PID;
  • 接口名称 alipay.fund.auth.order.app.freeze;
  • 请求时间;
  • 支付宝返回的 code、sub_code、sub_msg;
  • 请求中的 product_code;
  • 是否由服务商代调用;
  • 接入检测通过的截图。

不要在工单或公开渠道提交应用私钥、完整签名串等敏感信息。

3. 检查请求参数与已开通产品是否匹配

App 预授权冻结通常使用:

product_code=PRE_AUTH_ONLINE

示例业务参数如下:

{
  "out_order_no": "AUTH202609090001",
  "out_request_no": "AUTHREQ202609090001",
  "order_title": "设备租赁预授权",
  "amount": "100.00",
  "product_code": "PRE_AUTH_ONLINE"
}

product_code 必须与商户实际开通的预授权产品及使用场景一致,不能为了绕过权限校验而随意修改。

4. 服务商调用时检查商户授权

如果第三方应用代商户调用接口,需要确认:

  • 商户已经授权该第三方应用;
  • 使用的是该商户对应且仍然有效的 app_auth_token;
  • 商户授权范围包含当前业务需要的能力;
  • 最终接受校验的商户 PID,就是已经开通预授权产品的商户。

商户授权解决的是”应用能否代表商户调用”的问题,不能代替商户自身的产品签约。

Java 调用示例

下面的示例只展示关键结构。网关、AppID、密钥和 SDK 版本应以项目的实际配置为准:

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

AlipayFundAuthOrderAppFreezeRequest request =
    new AlipayFundAuthOrderAppFreezeRequest();

request.setBizContent("""
{
  "out_order_no": "AUTH202609090001",
  "out_request_no": "AUTHREQ202609090001",
  "order_title": "设备租赁预授权",
  "amount": "100.00",
  "product_code": "PRE_AUTH_ONLINE"
}
""");

AlipayFundAuthOrderAppFreezeResponse response =
    alipayClient.sdkExecute(request);

if (response.isSuccess()) {
    // 将 orderStr 返回给 App,由支付宝客户端 SDK 继续完成授权。
    String orderStr = response.getBody();
    System.out.println(orderStr);
} else {
    System.out.println("code=" + response.getCode());
    System.out.println("subCode=" + response.getSubCode());
    System.out.println("subMsg=" + response.getSubMsg());
}

如果由服务商代为调用,需要按照实际授权模式传入商户的 app_auth_token:

AlipayFundAuthOrderAppFreezeResponse response =
    alipayClient.sdkExecute(request, appAuthToken);

排查问题时不要只看 sub_msg,应同时保存 code、sub_code、sub_msg 和请求时间。相比单独查看提示信息,sub_code 通常更有助于平台定位具体的权限节点。

注意事项

  • 接口权限、商户产品权限和商户授权关系是三个不同的概念。
  • 重新添加接口、生成密钥或反复进行接入检测,通常无法解决商户产品尚未开通的问题。
  • 预授权受业务场景和行业准入条件限制,并非所有商户都能自助开通。
  • 沙箱环境具备权限,不能证明生产环境中的商户已经签约相同产品。
  • 如果产品已经显示生效,但接口仍返回”商户无接口权限”,应请支付宝核验”当前 AppID + 实际商户 PID + PRE_AUTH_ONLINE”这一组合,不能只检查 AppID。
  • 是否需要补充行业材料、进行特殊场景报备或加入平台白名单,取决于商户类型和实际业务场景。仅凭该报错无法确定,需以支付宝对具体 PID 的权限核验结果为准。

备注:内容仅供参考。