支付寶支付對賬單java_[Java]解析支付寶對賬單csv

配置相關公鑰和私鑰

這些需要在支付寶的賬戶中心配置

2fabe656375f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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&timestamp=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中,后面怎么操作都是自己的事情了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530558.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cmd編譯java文件中文亂碼_亂碼 HelloWorld 世界你好 cmd 執行輸出的中文java 顯示亂碼 解決 另附 win無法執行編譯運行javac java編譯文件的解決方案...

【博客園cnblogs筆者m-yb原創&#xff0c;轉載請加本文博客鏈接&#xff0c;筆者公眾號aandb7 愛碼一生&#xff0c;QQ群927113708, github: https://github.com/mayangbo666】這是一篇java入門:java是眾多編程語言之一, 就是開發的工具技術, 沒什么特別, 是應用廣, 嚴謹的語言…

java linux獲取實時cpu_用java取得linux系統cpu、內存的實時信息(參考別人代碼)...

/**   * cat /proc/cpuinfo - cpu (i.e. vendor, mhz, flags like mmx) * cat /proc/interrupts - 中斷   * cat /proc/ioports - 設備io端口   * cat /proc/meminfo - 內存信息(i.e. mem used, free, swap size)   * cat /proc/partitions - …

自我學習--關于如何設計光耦電路

本人在項目中多次設計光耦電路&#xff0c;目前電路在項目中運行比較平穩&#xff0c;所以總結一下自己的設計經驗&#xff0c;與大家交流一下&#xff0c;如有錯誤還希望大家指出改正&#xff0c;謝謝&#xff08;V&#xff1a;Smt15921588263&#xff1b;愿與大家多交流&…

java 讀取 xmltype_java操作XMLType的幾種方法

XMLType是oracle數據庫特有的數據類型可以用來存儲一段xml,通過java(本文使用jdbc)插入XMLType根據sql中參數的類型通常有以下3種方法:本文使用的數據庫為oracle10.2.1一、String,客戶端只需傳遞一個字符串參數,創建xmltype的任務完全交給數據庫,此方法數據庫的壓力最大String …

java運算符優先級舉例_列舉出java運算符的優先級

展開全部優先級 操作符 含義 關聯性32313133353236313431303231363533e59b9ee7ad9431333337613833 用法----------------------------------------------------------------1 [ ] 數組下標 左 array_name[expr]. 成員選擇 左 o…

java websocket ie8_websocket兼容IE8

最近由于項目需要做實時聊天功能&#xff0c;選擇了html5的websocket方案(事實上node.jssocket.io兼容性更好&#xff0c;個人覺得這個方案更加完美)&#xff0c;websocket實現實時聊天的demo網上很多&#xff0c;但是兼容IE8的資料卻很少&#xff0c;這塊折騰了很久。websoket…

java newfile() bug_java初學者小白?遇到BUG就慌了?有關java異常的十大問題詳解!...

1.已檢查與未檢查簡而言之&#xff0c;必須在方法中顯式捕獲已檢查的異常&#xff0c;或在方法的throws子句中聲明該異常。未檢查的異常是由無法解決的問題引起的&#xff0c;例如被零除&#xff0c;空指針等。檢查的異常特別重要&#xff0c;因為您希望使用API的其他開發人員知…

java 日期操作工具類_java8操作日期的工具類

java8操作日期的工具類一、方法概覽該包的API提供了大量相關的方法&#xff0c;這些方法一般有一致的方法前綴&#xff1a;of&#xff1a;靜態工廠方法。parse&#xff1a;靜態工廠方法&#xff0c;關注于解析。get&#xff1a;獲取某些東西的值。is&#xff1a;檢查某些東西的…

mysql攔截器實現crud_Mybatis自定義SQL攔截器

本博客介紹的是繼承Mybatis提供的Interface接口&#xff0c;自定義攔截器&#xff0c;然后將項目中的sql攔截一下&#xff0c;打印到控制臺。先自定義一個攔截器package com.muses.taoshop.common.core.database.config;import org.apache.commons.lang3.StringUtils;import or…

python 桌面提醒_使用Python獲取桌面通知

開發一款可提醒您諸如警報或待辦事項清單等計劃的應用程序真是太好了。在本文中&#xff0c;我將引導您逐步編寫如何使用Python獲取桌面通知的程序。桌面通知應用程序如何工作&#xff1f;您今天將要學習開發的桌面通知應用程序的主要目的是不斷提醒我們我們一天中需要完成的不…

java線程同步的實現_【Java多線程系列三】實現線程同步的方法

packagecom.concurrent.test;importjava.util.Stack;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.ReentrantLock;/*** Description: 三種方法實現…

python建立py文件夾過程_Pycharm創建python文件自動添加日期作者等信息(步驟詳解)...

百度AI接口的調用方法不必多介紹。官網地址 人流量統計新建AipBodyAnalysisfrom aip import AipBodyAnalysis""" 你的 APPID AK SK """APP_ID 你的 App IDAPI_KEY 你2021-02-03 14:24:01本文主要介紹了在python3.9下如何安裝scrapy的方法&…

python父親節祝福_父親節祝福語精選簡短 父親節祝福語簡短獨特

1.您的堅忍不拔和錚錚硬骨是我的榜樣&#xff0c;我從您那兒汲取到奮發的力量&#xff0c;走過挫折&#xff0c;邁向成功&#xff0c;爸爸&#xff0c;您是我永遠的榜樣&#xff0c;我愛您&#xff01;祝您節日快樂&#xff01;2.您的懷抱&#xff0c;是我的小天地&#xff1b;…

redis java應用_redis在JAVA的簡單應用

reids是一個高性能的key-value數據庫。它存儲的value支持各種類型的數據&#xff0c;如String,List&#xff0c;set&#xff0c;hash類型。在此基礎上&#xff0c;各種不同方式的排序。本文不具體爭對redis數據庫的各種命令&#xff0c;而是在Java實現簡單的調用。1. //初始化R…

java安裝 hello_安裝JAVA步驟,并編寫HELLOWORLD程序

安裝Java步驟&#xff0c;并編寫helloworld程序1.安裝JDK(Java Development Kit)JDK是Java開發工具包(Java Development Kit)的縮寫。它是一種用于構建在J Java 平臺上發布的應用程序、applet和組件的開發環境。即編寫Java程序必須有JDK&#xff0c;它提供了編譯Java和運行Java…

java實現Fmeasure計算_聚類結果的評估指標及其JAVA實現

一. 前言又GET了一項技能。在做聚類算法的時候&#xff0c;由于要評估所提出的聚類算法的好壞&#xff0c;于是需要與一些已知的算法對比&#xff0c;或者用一些人工標注的標簽來比較&#xff0c;于是用到了聚類結果的評估指標。我了解了以下幾項。TP:是指被聚在一類的兩個量被…

java隨機產生坐標點_剛學JAVA不久,問一下怎么把這個程序實現隨機啊,不是按照坐標...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓int i;int z0;int j,h0,k0;int AppletWidch,AppletHeight,currentImage;Image Animation[],SerialImage,OffScreen;Thread newThread;Graphics drawOffScreen;MediaTracker MT;ImageProducer Source;CropImageFilter CutImage;publ…

ubuntu安裝java的rpm_ubuntu安裝jdk-6u45-linux-x64-rpm.bin

1、參考網址&#xff1a;ZC: 網頁內容保存于 “百度云 CodeSkill33 --> 全部文件 >來自網頁 > Linux > ubuntu > ubuntu安裝jdk-6u45-linux-x64-rpm.bin__Work_20160115_0851.rar”2、(1)、我是將jdk-6u45-linux-x64.bin放在 "/home"下的(2)、命令&qu…

java窗體容器坐標_Java的屏幕坐標是以像素為單位的,容器的左下角被確定為坐標的起點。...

屏單位的的左定為的起點Despite ________ difficulties, they did not find the life in London unpleasant.幕坐As soon as I was ____________, I began to have second thoughts about leaving.標被確The girl was uncertain what to do, or what tone of voice to_________…

mysql 相同字段相減_mysql datetime 類型字段相減

背景&#xff1a;今天測試一個mariadb中datatime類型的字段相減問題&#xff0c;直接用2個字段相減得到的數值并不是秒&#xff0c;很坑。后面百度了一些方法&#xff0c;說是使用 DateDiff 函數&#xff0c;這個函數文檔還說有3個參數&#xff0c;但是3個參數運行是報錯的。要…