支付宝商家账单中的待收款金额可通过哪些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,通常表示买家尚未付款。不过,该接口没有一次查询全部未付款订单金额的通用能力。商户需要在自己的订单系统中保存订单状态并汇总金额。
注意事项
-
先确定金额口径
“待收款”“待入账”“冻结金额”和“未付款订单”含义不同。应先查看商家后台对该指标的说明,再选择相应接口。
-
后台金额不一定有一一对应的开放字段
某些商家后台指标由支付宝根据产品、结算周期和内部规则计算。开放接口可能只提供账户余额或账务明细,无法直接得出完全一致的数字。
-
不要只依赖主动查询
交易状态应主要通过支付异步通知更新,并用
alipay.trade.query进行补偿查询。只依赖定时轮询,可能造成状态更新延迟。 -
账单通常不是实时数据
下载账单更适合财务对账,不适合实时展示待收款。实时统计需要结合商户自身的订单数据、异步通知和单笔交易查询。
-
确认接口权限
能否调用
alipay.data.bill.balance.query、alipay.data.bill.accountlog.query等接口,取决于应用类型、签约产品和开放平台授权情况。如果无法在控制台订阅或调用,应联系支付宝技术支持,确认当前产品对应的资金查询接口。
备注:内容仅供参考。
