支付宝支付对账单java_[Java]解析支付宝对账单csv
配置相关公钥和私钥
这些需要在支付宝的账户中心配置
image.png
这些内容在支付宝平台上都有教程,因为下载对账单这个功能比较简单,不需要入聚石塔
下载对账单
https://docs.open.alipay.com/20180417160701241302/fd3qt1
官方文档写的很清楚,而且能直接用,将配置好的公钥私钥APPID等加入请求之后,就会得到结果,下载对账单可能会出现,没有账单的情况,可以具体看一下,对应的页面上支付宝对账单上有无数据,有的可能真的没有数据,就没有对账单下载地址
解析下载zip
调用正确会有一个下载链接,30s有效,类似如下:
http://dwbillcenter.alipay.com/downloadBillFile.resource?bizType=trade&userId=20885019787822870156&fileType=csv.zip&bizDates=20181212&downloadFileName=20885019787822870156_20181212.csv.zip&fileId=%2Ftrade%2F20885019787822870156%2F20181212.csv.zip×tamp=1544683667&token=a34f9311ec7dc38ca205f39b6362b408
过了30s,下载链接就没有用了,要立即下载相应的内容
下载的内容是一个csv.zip压缩文件
解压zip文件
/**
* 解压文件zip
* @param zipFile 需要解压文件
* @param descDir 解压完成之后输出的文件夹
* @throws IOException
*/
private void zipDecompressing(File zipFile, String descDir)throws IOException {
try {
Charset gbk = Charset.forName("gbk");
ZipInputStream Zin=new ZipInputStream(new FileInputStream(zipFile),gbk);//输入源zip路径
BufferedInputStream Bin=new BufferedInputStream(Zin);
String Parent=descDir; //输出路径(文件夹目录)
File Fout=null;
ZipEntry entry;
try {
while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
Fout=new File(Parent,entry.getName());
if(!Fout.exists()){
(new File(Fout.getParent())).mkdirs();
}
FileOutputStream out=new FileOutputStream(Fout);
BufferedOutputStream Bout=new BufferedOutputStream(out);
int b;
while((b=Bin.read())!=-1){
Bout.write(b);
}
Bout.close();
out.close();
System.out.println(Fout+"解压成功");
}
Bin.close();
Zin.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 按顺序关闭流
*/
private void closeStream(BufferedReader bufferedReader, InputStreamReader inputStreamReader, InputStream inputStream) {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
if (inputStreamReader != null) {
try {
inputStreamReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
解压完成之后,就会有两个文件,一个汇总,一个详细
下面解析csv文件,
csv文件,可以理解为txt文件,之前用解析Excel的方式报错
String path = "F:/AlipayFile";//存放文件的目录
String fileName = "20885019787822870156_20181026.csv.zip";//原来的解压文件
String csvName="";
String name = fileName.split("\\.")[0];
File fileDir = new File("F:/AlipayFile");
File[] tempList = fileDir.listFiles();
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].getName().contains(name)&&!tempList[i].getName().contains("汇总")&&!tempList[i].getName().contains("zip")) {
System.out.println(tempList[i].getName());
csvName = tempList[i].getName();
}
}
File excel = new File(path + "/" + csvName);
Charset gbk = Charset.forName("gbk");
InputStreamReader inputStreamReader = null;
InputStream fiStream = null;
BufferedReader br = null;
//行文件中所有数据
List dataList = new ArrayList<>();
//暂时存放每一行的数据
String rowRecord = "";
try {
fiStream = new FileInputStream(excel); //文件流对象
inputStreamReader = new InputStreamReader(fiStream, Charset.forName("GBK"));
br = new BufferedReader(inputStreamReader);
while ((rowRecord = br.readLine()) != null) {
String[] lineList = rowRecord.split("\\,");
if (lineList.length > 4) {
dataList.add(lineList);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeStream(br, inputStreamReader, fiStream);
}
System.out.println(dataList);
我将行数内容大于4的有效条目存到list中,后面怎么操作都是自己的事情了
支付宝支付对账单java_[Java]解析支付宝对账单csv相关推荐
- java 支付宝 退款_Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)
最近一直在接触第三方,刚接入完支付宝的API做一下总结,个人能力薄弱有不对的地方望指教. 做的是一个小型电商项目,所以会接入第三方的支付和登入功能, 第一次接入第三方撸了很多官方文档. 然后创建应用 ...
- Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)
最近一直在接触第三方,刚接入完支付宝的API做一下总结,个人能力薄弱有不对的地方望指教. 做的是一个小型电商项目,所以会接入第三方的支付和登入功能, 第一次接入第三方撸了很多官方文档. 进入主题, ...
- Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)
上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作. 现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行 ...
- java 支付宝转账_Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)...
上一篇写到支付宝的支付,这代码copy下来就能直接用了, 我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家. 我学一个 ...
- 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)
支付宝接口调用 "单笔转账到支付宝账户"的接口调用,一般涉及到下面几个知识点 1.生成签名 在使用支付宝接口的时候,需要使用支付宝的签名,这里需要使用支付宝的RSA生成工具. 关于 ...
- 支付宝支付接口的调用(支付宝支付的实现)
首先,下面是调用支付宝接口的官网: 支付宝开放平台https://open.alipay.com/platform/home.htmhttps://open.alipay.com/platform/h ...
- php实现支付宝支付接口,PHP实现个人支付宝支付开发(二)
在前面的文章<PHP实现个人支付宝支付开发(一)>中,我们为大家简单介绍了通过第三方接口平台码支付来实现个人支付宝支付功能的交易流程. 下面我们继续结合图文,给大家介绍通过码支付实现PHP ...
- android支付宝支付成功后调其他界面,支付宝支付成功回调地址怎么不改变当前页面?...
手机端支付宝支付成功后 会有一个回调地址"http://pay.xxx.com/channel/alipayWap/return_url.php?is_success=T¬if ...
- 支付宝支付接口_美团取消支付宝支付接口,支付大战硝烟又起!
用户在使用美团支付时发现,支付宝支付被取消了,美团月付和银行卡支付占据优先位置,而微信支付和Apple pay还在支付选择列表上.值得注意的是,支付宝母公司蚂蚁集团刚宣布要上市. 一时间," ...
- android绑定支付宝支付宝支付宝支付密码错误,Android 仿支付宝支付密码输入框
看到网友:http://www.jointforce.com/jfperiodical/article/3527?ref=myread 做的仿支付宝支付密码输入框,感觉挺适合初学自定义view的同仁练 ...
最新文章
- 找啊找啊找木偶,图灵奖得主G. Hinton第一篇论文曝光!
- 【官宣·第一弹】2021中国肠道大会7条重要消息
- VMWare虚拟机与主机共享文件夹(如何安装VMWare tools)windows与windows共享
- 芜湖方特系统设计书php,芜湖方特梦幻王国
- Living in the Matrix with Bytecode Manipulation--转
- 【Flask】url_for函数
- bzoj#4423-[AMPPZ2013]Bytehattan【并查集】
- 熊顿 - 滚蛋吧!肿瘤君(2013年4月22日)
- DB2 一个汉字的Byte数,太操蛋了
- 运行 iOS 模拟器中的 App 后显示空白-warning:Unsupported Configuration: Scene is unreachable due…
- 二分查找向上还是向下取整_113、股市中的跳空缺口判断技巧是向上还是向下
- Hadoop伪集群部署
- 我们一般用的正则表达式合集和工具 any-rule
- GATK / 体细胞短变异检测工具Mutect2的使用
- php ayyay,PHP: curl_setopt - Manual
- 玩转小黑框!Terminal 入门到进阶,最后放弃!
- android原生系统手机游戏,ROG真游戏手机系统主页面有三大虚拟按键!安卓原生系统?...
- 小盒子可以在大盒子里面移动
- How to increase our brain power
- uboot命令集环境变量