支付宝直付通分账账单查询接口及字段说明
支付阿杰
明确结论
直付通分账账单仍通过支付宝的”查询对账单下载地址接口”获取:
alipay.data.dataservice.bill.downloadurl.query
查询时,账单类型需要设置为:
bill_type=zft_merchant_split
几个容易混淆的参数和接口分别用于不同场景:
bill_type=trade:查询商户通过支付宝交易收单产生的普通交易账单。bill_type=zft_merchant_split:查询直付通商户分账账单。alipay.trade.order.settle.query:查询单笔交易的分账结果,不用于按日或按月下载分账账单。
接口返回账单文件的下载地址 bill_download_url,响应中不会直接包含每一条分账明细。
查询步骤
调用接口时,至少需要传入以下业务参数:
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
bill_type | 是 | 账单类型。查询直付通分账账单时填写 zft_merchant_split | zft_merchant_split |
bill_date | 是 | 账单日期。具体支持按日还是按月,以商户当前产品权限及接口文档为准 | 2026-09-08 |
请求示例:
{
"bill_type": "zft_merchant_split",
"bill_date": "2026-09-08"
}
Java SDK 示例:
AlipayClient alipayClient = new DefaultAlipayClient(
gatewayUrl,
appId,
merchantPrivateKey,
"json",
"UTF-8",
alipayPublicKey,
"RSA2"
);
AlipayDataDataserviceBillDownloadurlQueryRequest request =
new AlipayDataDataserviceBillDownloadurlQueryRequest();
request.setBizContent("{"
+ "\"bill_type\":\"zft_merchant_split\","
+ "\"bill_date\":\"2026-09-08\""
+ "}");
AlipayDataDataserviceBillDownloadurlQueryResponse response =
alipayClient.execute(request);
if (response.isSuccess()) {
String billDownloadUrl = response.getBillDownloadUrl();
System.out.println(billDownloadUrl);
} else {
System.out.println(response.getCode());
System.out.println(response.getSubCode());
System.out.println(response.getSubMsg());
}
典型的成功响应如下:
{
"alipay_data_dataservice_bill_downloadurl_query_response": {
"code": "10000",
"msg": "Success",
"bill_download_url": "https://..."
},
"sign": "..."
}
取得 bill_download_url 后,应立即下载并解压账单文件。下载地址通常有时效限制,不适合长期保存后再使用。
分账账单字段说明
直付通分账账单记录原交易与分账明细之间的对应关系。对账时通常需要关注以下信息:
| 字段类别 | 字段含义 | 对账用途 |
|---|---|---|
| 支付宝交易号 | 支付宝侧生成的交易流水号 | 关联支付交易、退款记录和交易账单 |
| 商户订单号 | 商户系统生成的原始订单号 | 与商户订单系统核对 |
| 分账请求号 | 商户发起分账时使用的业务请求号 | 保证分账请求幂等,并定位一次分账操作 |
| 分账明细序号或明细标识 | 同一次分账请求中某一条接收方明细的标识 | 区分多个分账接收方 |
| 分账接收方类型 | 接收方账户的标识类型 | 判断接收方字段的解析方式 |
| 分账接收方账号 | 实际接收分账资金的账户标识 | 核对资金接收对象 |
| 分账接收方名称 | 分账接收方名称 | 辅助确认接收方身份 |
| 分账金额 | 当前分账明细对应的金额 | 汇总订单实际分账金额 |
| 分账状态或结果 | 当前分账明细的处理结果 | 判断分账成功、失败或处理中 |
| 分账完成时间 | 支付宝完成该笔分账的时间 | 按业务日期归档和核对 |
| 分账描述 | 发起分账时填写的业务说明 | 辅助定位业务场景 |
| 备注或失败原因 | 补充说明或失败信息 | 排查异常分账 |
支付宝下载账单的实际列名、字段顺序及扩展字段,可能随直付通产品配置和账单格式调整而变化。接口响应中的 bill_download_url 字段也不是账单文件的字段。程序应根据下载文件的表头解析数据,不要只依赖固定的列序号。
表格示例
下表用于说明字段之间的关系,不代表支付宝下载文件的逐字表头,也不是真实交易数据:
| 支付宝交易号 | 商户订单号 | 分账请求号 | 分账接收方类型 | 分账接收方账号 | 分账接收方名称 | 分账金额(元) | 分账状态 | 分账完成时间 | 分账描述 |
|---|---|---|---|---|---|---|---|---|---|
2026090822001000000000000001 | ORDER202609080001 | SETTLE202609080001 | loginName | receiver@example.com | 示例接收方A | 80.00 | 成功 | 2026-09-08 10:20:30 | 订单服务费分账 |
2026090822001000000000000001 | ORDER202609080001 | SETTLE202609080001 | userId | 2088xxxxxxxxxxxx | 示例接收方B | 20.00 | 成功 | 2026-09-08 10:20:31 | 渠道分账 |
一个支付宝交易号可能对应多条分账明细,不能只按”支付宝交易号”去重。识别明细时,更稳妥的字段组合是:
支付宝交易号 + 分账请求号 + 分账明细标识
如果下载文件中没有独立的”分账明细标识”,可以结合接收方账号等字段建立业务唯一键。使用这种方式前,需要先确认同一次请求是否允许向同一接收方生成多条记录。
对账建议
可以按照以下关系核对数据:
交易账单
└── 支付宝交易号
└── 直付通分账账单
├── 分账请求号
├── 分账接收方
├── 分账金额
└── 分账状态
核对时通常需要检查:
- 商户订单号和支付宝交易号能否关联到原支付订单。
- 同一订单下所有成功分账记录的金额之和,是否符合商户侧的分账计划。
- 分账状态不是成功的记录,是否需要重试或人工处理。
- 分账接收方账号是否与商户保存的接收方信息一致。
- 不要混用分账账单和普通交易账单。交易账单使用
trade,直付通分账账单使用zft_merchant_split。
注意事项
bill_type必须使用接口支持的固定枚举值,不要改成split、settle等非官方值。- 下载地址不是永久地址。查询成功后应立即下载,并保存原始压缩包。
- CSV 文件可能包含汇总行、空行、BOM 或特殊字符。解析前应先识别表头和明细区域。
- 金额应使用
BigDecimal或等价的十进制定点类型处理,不要使用float、double直接累计。 - 如果接口返回”账单不存在”,应检查账单日期、账单生成时间、应用权限,以及当前商户是否已经开通直付通分账能力。
- 如需核查单笔交易的实时分账结果,应调用对应的分账结果查询接口。
alipay.data.dataservice.bill.downloadurl.query更适合批量离线对账。
备注:内容仅供参考。
