支付寶下載賬單[下載+解壓(中文轉(zhuǎn)碼)+過濾+保存數(shù)據(jù)庫]

圖片發(fā)自簡書App

年初的時候,支付寶查詢賬單是通過賬務(wù)明細(xì)分頁查詢接口“account.page.query”進(jìn)行賬單查詢浆兰,通過調(diào)用該接口獲取賬單信息磕仅,返回的是xml格式的字符串信息珊豹。
根據(jù)返回的字符串進(jìn)行過濾保存到數(shù)據(jù)庫或者添加表頭注釋信息再生成賬單文件(xxx.csv),xml格式字符串信息有限榕订。直到年中的時候支付寶方面開放了賬單下載的API接口店茶,新增了操作員字段以及終端號等字段,我們可以調(diào)用下載賬單的接口“alipay.data.dataservice.bill.downloadurl.query”獲取賬單的下載地址劫恒,打開地址時會保存賬單的壓縮文件贩幻,包括(賬單匯總)、(賬單明細(xì))两嘴。

image.png

第一個為通過下載鏈接地址獲得壓縮文件丛楚,解壓后里面包括之后兩個文件。

正常情況下我們只需要“賬單明細(xì)”這個文件中的內(nèi)容憔辫,為了不占用電腦內(nèi)存趣些,我們把原壓縮文件以及“賬單匯總”進(jìn)行過濾刪除,最終只保留“賬單明細(xì)”這個文件螺垢,用戶需要的時候可以去下載查看赖歌。


賬單明細(xì)文件內(nèi)容

要保存到數(shù)據(jù)庫的話就得把數(shù)據(jù)提取出來枉圃,每一行第一個字符串為“#”的以及表頭都需要過濾掉,只留下中間的數(shù)據(jù)部分孽亲,再進(jìn)行分割過濾從而獲取到一小格一小格的字符串。

支付寶下載賬單API

如上圖所示篮绿,僅需提供兩個入?yún)ill_type,bill_date便可得到下載地址bill_download_url,一個是賬單類型吕漂,一個是賬單的時間(格式為yyyy-MM-dd)

支付寶API文檔也提供各種版本的案例亲配,這里只講Java版本的


java調(diào)用支付寶下載賬單API

整個過程大概分為以下幾個步驟
(1)獲取賬單下載地址:String billUrl = getAliPayDownloadUrl();
(2)獲取賬單壓縮文件名:String filename = getDownloadFileName(billUrl);
(3)創(chuàng)建賬單壓縮文件存放目錄以及空壓縮文件
(4)將內(nèi)容寫入空壓縮文件:boolean downloadBill = toDownloadAliPayBill(billUrl,downloadUrl);
(5)解壓壓縮文件: FileUtil.unZip(downloadUrl,parientUrl);//解壓賬單文件
(6)過濾和刪除無用的文件,獲取業(yè)務(wù)明細(xì)文件內(nèi)容 :String billContent = getAliPayBillContent(parientUrl);
(7)過濾業(yè)務(wù)詳情賬單:content = readTxt(f.getPath())
(8)刪除數(shù)據(jù)庫中當(dāng)天的賬單數(shù)據(jù)
(9)保存新的賬單數(shù)據(jù)至數(shù)據(jù)庫


總基本流程

接下來一步步細(xì)講
一惶凝、獲取賬單下載地址

image.png

二吼虎、獲取賬單文件名
在賬單下載地址里面downloadFileName鍵后面的值就是,自己去通過字符串檢索獲取苍鲜。

三思灰、創(chuàng)建賬單壓縮文件存放目錄記憶空壓縮文件
根據(jù)自身所需自己解決

四、將內(nèi)容寫入空壓縮文件

image.png

五混滔、解壓壓縮文件

image.png

FileUtil是工具類洒疚,里面放了unZip方法歹颓,此處就是傳參數(shù)進(jìn)去解壓文件,上圖方法即unZip方法

六拳亿、過濾和刪除無用的文件晴股,獲取業(yè)務(wù)明細(xì)文件內(nèi)容

image.png

這里須特別注意,我賬單壓縮文件的解壓是把文件解壓到壓縮文件同目錄肺魁,為了遍歷的時候刪除电湘,也可以解壓成功后就刪除,
這里有個問題鹅经,如果你在該目錄下保存了其他的賬單文件寂呛,名字不匹配全部會被刪除,所以建議一個文件存放一個目錄瘾晃,例如我每個文件的目錄是“D:\bill\aliPayBill\2018\12\20181207\aliPayBill.csv”
因為賬單是一天一個的贷痪,放在同一個文件夾里面多了之后日后想找就麻煩,所以分類好蹦误。
至于改文件名劫拢,那是客戶要求的,大家根據(jù)所需調(diào)整强胰。

七舱沧、過濾業(yè)務(wù)詳情賬單
實際上是第六步里面就得執(zhí)行的過程

image.png

  • BufferedReader要傳編碼符GBK,否則會中文亂碼
  • 以“|”為分隔符分割每一行偶洋,后期分割的時候要添加轉(zhuǎn)義符 String[] str = result.split("\|");

你可能會遇到的坑

  • 獲取不到賬單下載地址熟吏?
    ①公共請求參數(shù)是否正確?
    ②請求參數(shù)類型是否匹配玄窝?賬單時間格式為yyyy-MM-dd
    ③請求地址是否在支付寶平臺設(shè)置的授權(quán)回調(diào)地址等信息牵寺?不管是微信還是支付寶,都需要配置回調(diào)地址恩脂,該過程稱之為“握手”帽氓,把項目的域名配置進(jìn)去,該域名下的所有請求地址都可以與支付寶進(jìn)行連接俩块,并不是什么項目都可以的黎休。

  • 解壓一直失敗報錯?
    ①可能是文件流典阵、字節(jié)流沒有關(guān)閉奋渔?
    ②JDK1.7以上自帶的FileZip包可以傳編碼GBK,以下的不能壮啊,所以會造成文件名亂碼嫉鲸,百度下載ant的1.6.5版本的jar包,用ant中的FileZip包
    ③緩存問題歹啼,清掉緩存試試玄渗?

  • 偶爾解壓失敗報錯座菠?
    ①是否解壓成功的時候一高興就打開文件看看,之后沒關(guān)閉就再次執(zhí)行藤树?下載和解壓時會刪除已有的文件再創(chuàng)建新的浴滴,打開之后就被占用啦,沒發(fā)刪除岁钓,所以報錯啦升略。

  • 解壓中文亂碼?
    ①參考第二個第②條

以上內(nèi)容為本人真實項目經(jīng)驗屡限,第一次寫這種業(yè)務(wù)功能品嚣,覺得有必要保存起來,也供大家參考钧大,如果錯誤信息翰撑,請聯(lián)系本人修改以免誤導(dǎo),或者你有更好的建議啊央,歡迎交流眶诈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瓜饥,隨后出現(xiàn)的幾起案子逝撬,更是在濱河造成了極大的恐慌,老刑警劉巖压固,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件球拦,死亡現(xiàn)場離奇詭異靠闭,居然都是意外死亡帐我,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門愧膀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拦键,“玉大人,你說我怎么就攤上這事檩淋》椅” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵蟀悦,是天一觀的道長媚朦。 經(jīng)常有香客問我,道長日戈,這世上最難降的妖魔是什么询张? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮浙炼,結(jié)果婚禮上份氧,老公的妹妹穿的比我還像新娘唯袄。我一直安慰自己,他們只是感情好蜗帜,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布恋拷。 她就那樣靜靜地躺著,像睡著了一般厅缺。 火紅的嫁衣襯著肌膚如雪蔬顾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天湘捎,我揣著相機(jī)與錄音阎抒,去河邊找鬼。 笑死消痛,一個胖子當(dāng)著我的面吹牛且叁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秩伞,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼逞带,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纱新?” 一聲冷哼從身側(cè)響起展氓,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脸爱,沒想到半個月后遇汞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡簿废,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年空入,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片族檬。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡歪赢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出单料,到底是詐尸還是另有隱情埋凯,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布扫尖,位于F島的核電站白对,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏换怖。R本人自食惡果不足惜甩恼,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧媳拴,春花似錦黄橘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至子巾,卻和暖如春帆赢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背线梗。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工椰于, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仪搔。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓瘾婿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烤咧。 傳聞我的和親對象是個殘疾皇子偏陪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料煮嫌? 從這篇文章中你...
    hw1212閱讀 12,699評論 2 59
  • 1笛谦、App支付簡介 買家在手機(jī)、掌上電腦等無線設(shè)備的應(yīng)用程序內(nèi)昌阿,可通過支付寶進(jìn)行付款購買特定服務(wù)或商品饥脑,資金即時到...
    PZcoder閱讀 43,991評論 5 22
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)懦冰,斷路器灶轰,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 比較運算符的作用是通過對值進(jìn)行比較,返回一個布爾型的結(jié)果(部分運算符除外)儿奶。如果比較一個數(shù)字和一個字符串(或包含數(shù)...
    57fc17b7d598閱讀 300評論 0 0
  • 身邊認(rèn)識一人框往,平時嘴里喜歡唱著搖滾樂鳄抒,手里擺弄著吉他闯捎,留著搖滾人士放蕩不羈的發(fā)型,身上紋著滿身的刺青许溅。討論音樂瓤鼻,動...
    道生一_79bb閱讀 146評論 0 1