对账说明

目前支付宝对外的常用对账方式有两种:一种是通过在支付宝后台下载账单的方式来对账;一种是通过调用接口的方式来实现对账。

新企业版账单下载

商户财务人员登录新企业版(qy.alipay.com),可通过账单下载页面,下载登录账户的已完成结算的对账单,并使用该数据完成财务核算。

一、日账单下载

进入日账单下载页面,默认显示最近日账单的所在月份,默认选中最近日账单所在日期。鼠标移动到已完成结算的日期,显示可下载链接。点击所在日期可进行下载。

特殊说明

1. 账单未生成:前一日的日账单在第二天生成,在第二天生成之前在下载区域提示“账单未生成”,不可点击下载。

2. 本日无收支:若已完成结算的某日无任何收支,则在下载区域提示“本日无收支”,不可点击下载。

3. 日账单下载,支持范围从2013年1月1日开始。

二、月账单下载

月账单下载功能同日账单下载。进入月账单下载页面,默认显示最近月账单的所在年份,默认选中最近月账单所在月份。鼠标移动到已完成结算的日期,显示可下载链接。点击所在月份可进行下载。

特殊说明

1. 账单未生成

2. 月账单下载,支持范围从2013年1月开始。

3. 每月账单一般会在次月4日或之前生成。

接口对账方式

场景介绍

商户/系统商可通过接口下载指定日期(当天除外)的业务明细账单文件,并结合自身业务系统实现自动对账。

获取账单技术实现大致分两种模式:收款账号接入模式(签约账号即为收款账号)、主账号签约接入模式(此种模式包括ISV接入模式、一个主账号签约+N个收款账号接入模式)。

1. 收款账号接入模式

下载接口中指定appid所对应PID下所有交易记录的对账单。

2. 主账号签约接入模式

包括ISV接入模式、一个主账号签约+N个收款账号接入模式。

第一步:该应用在开放平台上添加第三方应用授权功能。让收款账号给签约主账号授权。收款账号无需签约账单下载接口权限。

第二步:请获取服务端SDK进行接口开发,请在请求参数中传入授权token。签约账号即可查询收款账号的账单。包括账务账单和业务账单。 

调用流程

image

  1. 商户系统调用查询对账单下载地址接口alipay.data.dataservice.bill.downloadurl.query,传入指定日期,获得该日期账单文件的下载地址。
  2. 商户系统通过HTTP方式后台访问账单下载链接,将账单csv文件下载到本地后自行处理。注意该下载链接仅30秒,在得到链接后系统需要立刻请求下载账单文件。

使用SDK快速接入

查询对账单下载地址接口alipay.data.dataservice.bill.downloadurl.query:

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");//获得初始化的AlipayClient
AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();//创建API对应的request类
request.setBizContent("{" +
"    \"bill_type\":\"trade\"," +
"    \"bill_date\":\"2016-04-05\"}"); //设置业务参数
AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类
System.out.print(response.getbody());
//根据response中的结果继续业务逻辑处理

关键入参:

参数名称 参数说明
bill_type 固定传入trade
bill_date 需要下载的账单日期,最晚是当期日期的前一天

关键出参:

参数名称 参数说明
bill_download_url 账单文件下载地址,30秒有效

下载账单文件:

//将接口返回的对账单下载地址传入urlStr
String urlStr = "http://dwbillcenter.alipay.com/downloadBillFile.resource?bizType=X&userId=X&fileType=X&bizDates=X&downloadFileName=X&fileId=X";
//指定希望保存的文件路径
String filePath = "/Users/fund_bill_20160405.zip";
URL url = null;
HttpURLConnection httpUrlConnection = null;
InputStream fis = null;
FileOutputStream fos = null;
try {
    url = new URL(urlStr);
    httpUrlConnection = (HttpURLConnection) url.openConnection();
    httpUrlConnection.setConnectTimeout(5 * 1000);
    httpUrlConnection.setDoInput(true);
    httpUrlConnection.setDoOutput(true);
    httpUrlConnection.setUseCaches(false);
    httpUrlConnection.setRequestMethod("GET");
    httpUrlConnection.setRequestProperty("Charsert", "UTF-8");
    httpUrlConnection.connect();
    fis = httpUrlConnection.getInputStream();
    byte[] temp = new byte[1024];
    int b;
    fos = new FileOutputStream(new File(filePath));
    while ((b = fis.read(temp)) != -1) {
        fos.write(temp, 0, b);
        fos.flush();
    }
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if(fis!=null) fis.close();
        if(fos!=null) fos.close();
        if(httpUrlConnection!=null) httpUrlConnection.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

附录

业务明细账单: 

账务账单明细:

onlineServer