python 處理微信對賬單數(shù)據(jù)的實(shí)例代碼
下面一段代碼給大家介紹python 處理微信對賬單數(shù)據(jù),具體代碼如下所示:
#下載對賬單并存儲(chǔ)到數(shù)據(jù)庫
@app.route("/bill/<string:date>",methods=["GET","POST"])
def download_bill(date):
pay = MyWeiXinPay()#自己的支付類
bill= pay.download_mybill(date)#下載原始對賬單,下載下來為字符串
billArray=bill.split("\r\n") #分割賬單,一行為一組數(shù)據(jù),分割后第一行為數(shù)據(jù)標(biāo)題,倒數(shù)第三行為統(tǒng)計(jì)標(biāo)題,倒數(shù)第二行為統(tǒng)計(jì)金額,最后一行為多余的空行
titleArray=billArray[0].split(',')#第一行為標(biāo)題
title_total=billArray[len(billArray)-2] #統(tǒng)計(jì)標(biāo)題
data_total=billArray[len(billArray)-1]#統(tǒng)計(jì)金額
del billArray[0] #去掉標(biāo)題
del billArray[len(billArray)-3] #去掉總標(biāo)題
del billArray[len(billArray)-2] #去掉總額
del billArray[len(billArray)-1] #去掉空行,剩下的為賬單詳情數(shù)據(jù)
mybill=[] #訂單詳細(xì)信息
#循環(huán)賬單詳情數(shù)據(jù)
for i in billArray:
#每一條訂單詳細(xì)信息(去掉分隔出來的空數(shù)據(jù))
_detail=i.split('`')[:-1]
del _detail[0]#去掉前邊的空數(shù)據(jù)
_detail_temp=[]
for d in _detail:
#每一個(gè)數(shù)據(jù)(去掉最后的逗號(hào))
_detail_val=d[:-1]
_detail_temp.append(_detail_val)
#TODO業(yè)務(wù)處理
# print(d[:-1])
#TODO業(yè)務(wù)處理
mybill.append(_detail_temp)
# print("---------------------------------------------")
#返回值TODO
return json.dumps(mybill)
ps:Python通過微信對賬接口獲取賬單明細(xì)
由于工作需要,實(shí)現(xiàn)了用Python獲取微信對賬明細(xì),最終生成CSV文件。
代碼如下:
# -*- coding: utf-8 -*-
import urllib2
import hashlib
import datetime
'''登錄微信公眾號(hào)后臺(tái),可以查詢到APPID和MCH_ID,并填寫生成的KEY'''
APPID = ""
MCH_ID = ""
KEY = ""
#當(dāng)天獲取昨天一整天的微信支付數(shù)據(jù)
yesterday = datetime.date.today() + datetime.timedelta(-1)
TimeList = [
yesterday.strftime("%Y%m%d")
]
f = file("./test.csv", "w")
#創(chuàng)建CSV文件表頭
f.write("交易時(shí)間,公眾賬號(hào)ID,商戶號(hào),子商戶號(hào),設(shè)備號(hào),微信訂單號(hào),商戶訂單號(hào),用戶標(biāo)識(shí),交易類型,交易狀態(tài),付款銀行,貨幣種類,總金額,代金券或立減優(yōu)惠金額,微信退款單號(hào),商戶退款單號(hào),退款金額,代金券或立減優(yōu)惠退款,退款類型,退款狀態(tài),商品名稱,商戶數(shù)據(jù)包,手續(xù)費(fèi),費(fèi)率\n".decode("utf-8").encode("gb2312"))
f.close()
cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)
#循環(huán)取時(shí)間列表里面的時(shí)間,并獲取相對應(yīng)的微信支付的記錄
for date in TimeList:
temp = "appid=%s&bill_date=%s&bill_type=ALL&mch_id=%s&nonce_str=21df7dc9cd8616b56919f20d9f679233&key=%s"
temp = temp % (APPID, date, MCH_ID, KEY)
MD5 = hashlib.md5()
MD5.update(temp)
data = '''
%s
%s
ALL
%s
21df7dc9cd8616b56919f20d9f679233
%s
'''
data = data % (APPID, date, MCH_ID, MD5.hexdigest().upper())
request = urllib2.Request(
url = r'https://api.mch.weixin.qq.com/pay/downloadbill',
headers = {'Content-Type' : 'text/xml'},
data = data)
data = opener.open(request).read()
print data
#將獲取的數(shù)據(jù)分行,放入列表中
lines = data.split("\n")
f = file("./test.csv", "a")
#將獲取的數(shù)據(jù)按行寫入CSV文件
for i in range(len(lines)):
if i>0 and i
f.write(lines[i].replace("`",""))
i += 1
f.close()
總結(jié)
以上所述是小編給大家介紹的python 處理微信對賬單數(shù)據(jù)的實(shí)例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
配置python連接oracle讀取excel數(shù)據(jù)寫入數(shù)據(jù)庫的操作流程
這篇文章主要介紹了配置python連接oracle,讀取excel數(shù)據(jù)寫入數(shù)據(jù)庫,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python?實(shí)現(xiàn)循環(huán)最快方式(for、while?等速度對比)
這篇文章主要介紹了Python?利用for、while?實(shí)現(xiàn)循環(huán)最快方式,文章主要對for、while?等速度對比詳細(xì)介紹,具有一定的參考價(jià)值?,需要的小伙伴可以參考一下2022-01-01
Pygame實(shí)戰(zhàn)練習(xí)之一百層游戲
跳上一百層想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡單的跳上一百層小游戲的相關(guān)資料,需要的朋友可以參考下2021-09-09
Pyecharts繪制可視化地球?qū)崿F(xiàn)示例
這篇文章主要為大家介紹了Pyecharts繪制可視化地球?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
django報(bào)錯(cuò)設(shè)置auth User的解決
本文主要介紹了django報(bào)錯(cuò)設(shè)置auth User的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
pandas pivot_table() 按日期分多列數(shù)據(jù)的方法
今天小編就為大家分享一篇pandas pivot_table() 按日期分多列數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

