packagecode;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importcom.alipay.api.AlipayApiException;importcom.alipay.api.AlipayClient;importcom.alipay.api.DefaultAlipayClient;importcom.alipay.api.request.AlipayDataDataserviceBillDownloadurlQueryRequest;importcom.alipay.api.response.AlipayDataDataserviceBillDownloadurlQueryResponse;public classAlipayBill {//初始化实例请求对象
public static String APP_ID = "2017000000000000"; //自己的商户appid
// RSA签名方式使用算法:SHA1withRSA。 注意此处是RSA 的私钥 是Java版本格式的 如果是用.NET 就要转换为.NET版本的格式public static String APP_PRIVATE_KEY = "ghjjjjffjjjjkytyyddfsgsaetertrtr..............";//RSA2签名方式使用算法:SHA256withRSA。//public static String APP_PRIVATE_KEY ="+zA3RJzhtiL4MIHks4GD++6RuQ/";
//公钥是可以公用的在公共平台配置的 .NET和Java语言的都可以共用。但是要区别 RSA或者是RSA2的公钥签名
public static String ALIPAY_PUBLIC_KEY = "/fEsraprwCtzvzQETrNRwmZkh2QhUrCmZYI";//rsa2//public static String ALIPAY_PUBLIC_KEY ="/aFKRhSS5fHChIzjpMrl";//开放平台SDK封装了签名实现,只需在创建DefaultAlipayClient对象时,设置请求网关(gateway),应用id(app_id),应用私钥(private_key),编码格式(charset),支付宝公钥(alipay_public_key),签名类型(sign_type)即可,报文请求时会自动进行签名。
public static AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", "GBK",
ALIPAY_PUBLIC_KEY,"RSA"); //注意在此处用的RSA签名类型参数 如果是RSA2的就要传RSA2参数
public static String post_bill_date="2017-06-20" ;/***@paramargs*/
public static voidmain(String[] args) {//TODO Auto-generated method stub
bill_download_url ();//下载对账单接口
}public static voidbill_download_url (){
//" \"bill_date\":\"2017-07-26\""+ 时间参数 "+post_bill_date+"
//账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM。
//账单参数类型 值 signcustomer 包含 是账务明细的 也有业务明细的 trade 只有 是业务明细的 在这里特别注意下 以免被挖坑了 看官网的容易坑
AlipayDataDataserviceBillDownloadurlQueryRequest request= newAlipayDataDataserviceBillDownloadurlQueryRequest();
request.setBizContent("{" +
" \"bill_type\":\"trade\"," +
" \"bill_date\":\"2017-07-26\""+
"}");
AlipayDataDataserviceBillDownloadurlQueryResponse response= null;try{
response=alipayClient.execute(request);
System.out.println(response.getBillDownloadUrl());
}catch(AlipayApiException e)
{
e.printStackTrace();
}//调用成功,则处理业务逻辑
if(response.isSuccess())
{//将接口返回的对账单下载地址传入urlStr
String urlStr=response.getBillDownloadUrl();//指定希望保存的文件路径
String filePath = "D:\\Users\\fund_bill_20170726.csv.zip";
URL url= null;
HttpURLConnection httpUrlConnection= null;
InputStream fis= null;
FileOutputStream fos= null;try{
url= newURL(urlStr);
httpUrlConnection=(HttpURLConnection) url.openConnection();
httpUrlConnection.setConnectTimeout(5 * 1000);
httpUrlConnection.setDoInput(true);
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setUseCaches(false);
httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.setRequestProperty("CHARSET", "UTF-8");
httpUrlConnection.connect();
fis=httpUrlConnection.getInputStream();byte[] temp = new byte[1024];intb;
fos= new FileOutputStream(newFile(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();
}
}
}
}
}