PAYATHON 2026

支付宝扫码业务开发目前是否支持下载对账单?

支付阿杰

明确结论

支持。支付宝扫码支付产生的交易,可以通过支付宝开放平台的账单下载接口获取对账单。常用接口为:

alipay.data.dataservice.bill.downloadurl.query

接口返回账单文件的临时下载地址,不会直接返回账单内容。应用取得 URL 后,还需要通过 HTTP 下载并解压账单文件。

扫码支付只是交易的发起方式,不影响账单下载。查询能否成功,主要取决于应用与商户账号的绑定关系、接口权限、账单类型和账单日期。

下载步骤

  1. 使用发起扫码交易的商户应用调用账单下载地址查询接口。
  2. 设置账单类型和账单日期。
  3. 检查支付宝返回的业务结果。
  4. 从 bill_download_url 中取得临时下载地址。
  5. 及时下载 ZIP 文件并解压。
  6. 读取账单明细,按照支付宝交易号、商户订单号、金额和交易状态与本地订单核对。

常用请求参数如下:

参数说明
bill_type账单类型。交易账单通常使用 trade
bill_date账单日期。日账单一般为 yyyy-MM-dd,月账单一般为 yyyy-MM

具体支持哪些账单类型、日期范围,以及账单何时生成,应以商户当前签约的产品和支付宝开放平台最新接口文档为准。

Java 示例

以下示例使用支付宝 Java SDK 查询交易账单的下载地址:

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayDataDataserviceBillDownloadurlQueryModel;
import com.alipay.api.request.AlipayDataDataserviceBillDownloadurlQueryRequest;
import com.alipay.api.response.AlipayDataDataserviceBillDownloadurlQueryResponse;

public class AlipayBillExample {

    public static void main(String[] args) throws Exception {
        AlipayClient alipayClient = new DefaultAlipayClient(
                "https://openapi.alipay.com/gateway.do",
                "YOUR_APP_ID",
                "YOUR_APP_PRIVATE_KEY",
                "json",
                "UTF-8",
                "ALIPAY_PUBLIC_KEY",
                "RSA2"
        );

        AlipayDataDataserviceBillDownloadurlQueryModel model =
                new AlipayDataDataserviceBillDownloadurlQueryModel();
        model.setBillType("trade");
        model.setBillDate("2026-09-08");

        AlipayDataDataserviceBillDownloadurlQueryRequest request =
                new AlipayDataDataserviceBillDownloadurlQueryRequest();
        request.setBizModel(model);

        AlipayDataDataserviceBillDownloadurlQueryResponse response =
                alipayClient.execute(request);

        if (response.isSuccess()) {
            String downloadUrl = response.getBillDownloadUrl();
            System.out.println("账单下载地址:" + downloadUrl);
        } else {
            System.err.println("查询失败");
            System.err.println("code:" + response.getCode());
            System.err.println("msg:" + response.getMsg());
            System.err.println("sub_code:" + response.getSubCode());
            System.err.println("sub_msg:" + response.getSubMsg());
        }
    }
}

支付宝 SDK 的不同版本在模型类或方法名称上可能略有差异。如果当前版本没有对应的 Model 类,也可以直接设置 JSON 请求参数:

AlipayDataDataserviceBillDownloadurlQueryRequest request =
        new AlipayDataDataserviceBillDownloadurlQueryRequest();

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

AlipayDataDataserviceBillDownloadurlQueryResponse response =
        alipayClient.execute(request);

注意事项

  • bill_download_url 通常有时效限制,不适合长期保存或作为固定地址使用。地址过期后,需要重新调用接口获取。
  • 当日账单通常不会实时生成,具体可下载时间以接口返回结果和支付宝当前的账单规则为准。
  • 下载地址可能包含特殊字符。使用命令行工具时,需要将 URL 放在引号中:
curl -L "BILL_DOWNLOAD_URL" -o alipay-bill.zip
  • HTTP 请求成功不等于账单查询成功,还需要检查 response.isSuccess()、code、sub_code 和 sub_msg。
  • 调用接口时,应使用实际收款商户对应的应用和密钥。应用主体、收款账号或授权关系不匹配,都可能导致无法取得账单。
  • 服务商代商户查询时,通常还需要第三方应用授权和商户令牌,不能用服务商自己的账单权限代替商户授权。
  • 账单文件可能包含汇总、业务明细和资金明细。解析前应先确认文件结构,不要依赖固定行号。金额应使用 BigDecimal 等十进制类型处理。
  • 如果接口提示账单不存在,应检查日期格式、账单是否已经生成、当天是否有交易,以及当前商户是否具备相应权限。
  • 商户也可以在支付宝商家后台手工下载账单,但菜单名称和入口可能随后台版本变化。需要自动对账时,建议优先使用开放平台接口。

备注:内容仅供参考。