PAYATHON 2026

第三方如何申请支付宝商家账务与交易查询接口权限?

支付阿杰

结论

第三方应用可以调用 alipay.data.bill.accountlog.query 和 alipay.data.bill.sell.query,但不能以应用自身的身份查询任意商家的数据。

调用这两个接口通常需要满足以下条件:

  • 应用类型属于支付宝开放平台支持的第三方应用。
  • 应用已申请对应的接口或产品能力,并通过审核。
  • 被查询商家已完成相关产品签约,并明确授权第三方应用。
  • 调用接口时携带该商家授权后生成的 app_auth_token。
  • 查询的账户、交易范围和时间跨度符合接口文档要求。

如果开放平台控制台中没有对应能力的申请入口,一般表示该能力暂未向当前应用类型、主体资质或业务场景开放。此时需要通过支付宝开放平台服务商渠道或官方技术支持确认。具体准入条件以申请时控制台显示的最新规则为准。

两个接口分别查询什么

alipay.data.bill.accountlog.query 用于查询支付宝商家账户的账务明细,例如账户资金变动记录。

alipay.data.bill.sell.query 用于查询支付宝商家的卖出交易记录。

两个接口查询的数据不同,也可能属于不同的产品能力。开通其中一个接口,不会自动获得另一个接口的调用权限。

申请条件

第三方服务商一般需要准备:

  1. 已完成实名认证的支付宝开放平台账号。
  2. 与实际业务场景相符的第三方应用。
  3. 明确的数据使用场景,例如财务对账、账务管理或交易管理。
  4. 隐私政策、用户协议和数据安全说明。
  5. 商家授权及撤销授权的流程。
  6. 开放平台要求的企业资质或行业材料。
  7. 必要时,由被服务商家完成相应产品签约。

账务和交易数据属于敏感经营数据。审核通常会重点检查数据用途、保存期限、访问控制、商家知情授权和数据泄露防护措施。

申请流程

1. 创建第三方应用

登录支付宝开放平台,在开发者中心创建应用。应选择能够为其他商家提供服务的第三方应用类型,而非仅供自身使用的自用型应用。

随后完成应用公钥、支付宝公钥或证书模式等基础配置。

2. 查找并申请对应能力

进入应用的能力管理或产品绑定页面,分别搜索:

alipay.data.bill.accountlog.query
alipay.data.bill.sell.query

也可以搜索接口文档中标注的所属产品名称。提交申请时,应如实说明业务场景、目标商家类型和数据用途。

能在接口文档中搜索到某个接口,不代表当前应用已经获得调用权限。实际权限应以应用详情中显示的能力状态为准。

3. 完成产品签约和应用审核

如果控制台要求签约产品,请按照页面提示完成签约。有些场景只要求第三方服务商签约,有些场景还需要被服务商家签约。

如果页面要求提交审核材料,应根据实际业务提供。不要用测试用途或笼统的“数据分析”代替真实的业务说明。

4. 获取商家授权

第三方应用获得接口能力后,还需要由商家完成应用授权。授权成功后,第三方会取得该商家对应的 app_auth_token。

这个令牌表示该商家允许当前第三方应用以其身份调用接口,不能在不同商家之间混用。

5. 携带 app_auth_token 调用接口

调用接口时,应用仍需使用自己的 app_id 和私钥签名,并通过 app_auth_token 指定被查询的授权商家。

下面是 Java SDK 的调用结构示例。bizContent 中的具体字段应根据当前接口文档填写,不能直接套用其他接口的查询参数。

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

AlipayDataBillAccountlogQueryRequest request =
    new AlipayDataBillAccountlogQueryRequest();

request.setBizContent("""
{
  // 按 alipay.data.bill.accountlog.query 最新接口文档填写查询条件
}
""");

request.putOtherTextParam("app_auth_token", merchantAppAuthToken);

AlipayDataBillAccountlogQueryResponse response =
    alipayClient.execute(request);

if (response.isSuccess()) {
    System.out.println(response.getBody());
} else {
    System.err.println(response.getCode());
    System.err.println(response.getSubCode());
    System.err.println(response.getSubMsg());
}

查询卖出交易时,调用结构相同,只需换成对应的请求类:

AlipayDataBillSellQueryRequest request =
    new AlipayDataBillSellQueryRequest();

request.setBizContent("""
{
  // 按 alipay.data.bill.sell.query 最新接口文档填写查询条件
}
""");

request.putOtherTextParam("app_auth_token", merchantAppAuthToken);

AlipayDataBillSellQueryResponse response =
    alipayClient.execute(request);

支付宝 Java SDK 的不同版本可能存在类名或方法差异。如果当前 SDK 中找不到上述请求类,应先确认当前版本是否仍提供该接口,并升级到开放平台文档推荐的 SDK 版本。

常见失败原因

如果接口返回“无权限”“产品未签约”或类似错误,可以依次检查:

  • 接口能力是否已绑定到当前 app_id。
  • 能力申请是否已通过审核。
  • 当前应用类型是否允许调用该接口。
  • 服务商或商家是否完成了所需的产品签约。
  • app_auth_token 是否属于被查询商家。
  • 商家是否已撤销授权。
  • 授权范围是否包含对应接口。
  • 使用的是生产环境令牌还是沙箱环境令牌。
  • 查询条件是否超出接口允许的日期或账户范围。

不要用服务商自己的支付宝账号代替商家授权。即使接口调用成功,也只能查询当前授权主体允许访问的数据。

注意事项

app_auth_token 应加密保存,不要写入前端代码、日志或公开配置文件。商家撤销授权后,应立即停止查询,并清理不再需要的数据。

这两个接口是否接受新应用申请、向哪些主体开放,以及所需产品名称,都可能随开放平台策略调整。申请前,应先检查对应应用的控制台中是否有正式申请入口。如果只能找到接口文档,却没有申请入口,需要向支付宝开放平台确认当前应用是否具备准入资格。

备注:内容仅供参考。