PAYATHON 2026

支付宝商家账单中的待收款金额可通过哪些API查询?

支付阿杰

结论

查询支付宝商家账单中的“待收款金额”前,先要确认商家后台对这一金额的定义。通常可参考以下接口:

  • alipay.data.bill.balance.query:查询商家支付宝账户的余额信息。如果当前产品权限和接口响应中包含待收款字段,可以直接查询。
  • alipay.data.bill.accountlog.query:查询账户账务明细,可用于核对待收、入账和冻结资金。
  • alipay.data.dataservice.bill.downloadurl.query:获取支付宝账单的下载地址。下载交易账单或资金账单后,可自行汇总金额。
  • alipay.trade.query:查询单笔交易的状态,适合判断某笔订单是待付款、已支付还是已关闭,不能直接返回商家的待收款总额。

商家后台中的“待收款”可能指未支付订单、已支付但尚未入账的资金,也可能指结算周期内尚未结算的金额。不同口径对应不同的查询方式,不能直接用账户余额代替。

推荐查询方式

查询账户余额

如果“待收款”是商家资金账户页面中的余额组成项,可以先申请并调用:

alipay.data.bill.balance.query

Java SDK 调用形式如下:

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

AlipayDataBillBalanceQueryRequest request =
    new AlipayDataBillBalanceQueryRequest();

request.setBizContent("{}");

AlipayDataBillBalanceQueryResponse response =
    alipayClient.execute(request);

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

接口会返回哪些余额分类,取决于应用签约产品、接口权限以及支付宝开放平台当前的接口定义。不同产品或商户账户不一定都有单独的“待收款金额”字段。

查询账务明细

如果余额接口没有提供待收款字段,可以使用:

alipay.data.bill.accountlog.query

该接口可按时间范围查询账户资金变动,再结合业务类型、收支方向和资金状态核对金额。汇总时不能只统计“收入”,还要排除已经入账、退款、冻结、解冻以及其他非交易资金记录。

具体请求参数、分页限制和可查询的时间范围可能因接口权限而异,应以开放平台控制台显示的接口定义为准。

下载账单后汇总

需要批量核对账单时,可以调用:

alipay.data.dataservice.bill.downloadurl.query

常见请求示例:

AlipayDataDataserviceBillDownloadurlQueryRequest request =
    new AlipayDataDataserviceBillDownloadurlQueryRequest();

request.setBizContent("""
{
  "bill_type": "trade",
  "bill_date": "2026-09-07"
}
""");

AlipayDataDataserviceBillDownloadurlQueryResponse response =
    alipayClient.execute(request);

if (response.isSuccess()) {
    String downloadUrl = response.getBillDownloadUrl();
    System.out.println(downloadUrl);
} else {
    System.err.println(
        response.getCode() + ": " +
        response.getSubCode() + " - " +
        response.getSubMsg()
    );
}

参数说明:

  • bill_type 为 trade 时,下载交易账单。
  • bill_type 为 signcustomer 时,通常用于下载资金账单,是否支持取决于商户的签约能力。
  • bill_date 的日期格式和可查询范围以接口文档为准。
  • 下载地址通常有有效期,获取后应及时下载。

账单下载接口只返回文件地址,不会直接给出“待收款金额”。商户需要根据账单中的业务类型、交易状态、结算状态和金额字段自行汇总。

单笔订单查询

如果“待收款”指尚未支付的订单,可以使用:

alipay.trade.query
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();

request.setBizContent("""
{
  "out_trade_no": "MERCHANT_ORDER_202609080001"
}
""");

AlipayTradeQueryResponse response = alipayClient.execute(request);

if (response.isSuccess()) {
    System.out.println("tradeStatus=" + response.getTradeStatus());
    System.out.println("totalAmount=" + response.getTotalAmount());
} else {
    System.err.println(
        response.getCode() + ": " +
        response.getSubCode() + " - " +
        response.getSubMsg()
    );
}

例如,交易状态为 WAIT_BUYER_PAY,通常表示买家尚未付款。不过,该接口没有一次查询全部未付款订单金额的通用能力。商户需要在自己的订单系统中保存订单状态并汇总金额。

注意事项

  1. 先确定金额口径

    “待收款”“待入账”“冻结金额”和“未付款订单”含义不同。应先查看商家后台对该指标的说明,再选择相应接口。

  2. 后台金额不一定有一一对应的开放字段

    某些商家后台指标由支付宝根据产品、结算周期和内部规则计算。开放接口可能只提供账户余额或账务明细,无法直接得出完全一致的数字。

  3. 不要只依赖主动查询

    交易状态应主要通过支付异步通知更新,并用 alipay.trade.query 进行补偿查询。只依赖定时轮询,可能造成状态更新延迟。

  4. 账单通常不是实时数据

    下载账单更适合财务对账,不适合实时展示待收款。实时统计需要结合商户自身的订单数据、异步通知和单笔交易查询。

  5. 确认接口权限

    能否调用 alipay.data.bill.balance.query、alipay.data.bill.accountlog.query 等接口,取决于应用类型、签约产品和开放平台授权情况。如果无法在控制台订阅或调用,应联系支付宝技术支持,确认当前产品对应的资金查询接口。

备注:内容仅供参考。