python 處理微信對賬單數(shù)據(jù)的實例代碼
下面一段代碼給大家介紹python 處理微信對賬單數(shù)據(jù),具體代碼如下所示:
#下載對賬單并存儲到數(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ù)標題,倒數(shù)第三行為統(tǒng)計標題,倒數(shù)第二行為統(tǒng)計金額,最后一行為多余的空行
titleArray=billArray[0].split(',')#第一行為標題
title_total=billArray[len(billArray)-2] #統(tǒng)計標題
data_total=billArray[len(billArray)-1]#統(tǒng)計金額
del billArray[0] #去掉標題
del billArray[len(billArray)-3] #去掉總標題
del billArray[len(billArray)-2] #去掉總額
del billArray[len(billArray)-1] #去掉空行,剩下的為賬單詳情數(shù)據(jù)
mybill=[] #訂單詳細信息
#循環(huán)賬單詳情數(shù)據(jù)
for i in billArray:
#每一條訂單詳細信息(去掉分隔出來的空數(shù)據(jù))
_detail=i.split('`')[:-1]
del _detail[0]#去掉前邊的空數(shù)據(jù)
_detail_temp=[]
for d in _detail:
#每一個數(shù)據(jù)(去掉最后的逗號)
_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通過微信對賬接口獲取賬單明細
由于工作需要,實現(xiàn)了用Python獲取微信對賬明細,最終生成CSV文件。
代碼如下:
# -*- coding: utf-8 -*-
import urllib2
import hashlib
import datetime
'''登錄微信公眾號后臺,可以查詢到APPID和MCH_ID,并填寫生成的KEY'''
APPID = ""
MCH_ID = ""
KEY = ""
#當天獲取昨天一整天的微信支付數(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("交易時間,公眾賬號ID,商戶號,子商戶號,設(shè)備號,微信訂單號,商戶訂單號,用戶標識,交易類型,交易狀態(tài),付款銀行,貨幣種類,總金額,代金券或立減優(yōu)惠金額,微信退款單號,商戶退款單號,退款金額,代金券或立減優(yōu)惠退款,退款類型,退款狀態(tài),商品名稱,商戶數(shù)據(jù)包,手續(xù)費,費率\n".decode("utf-8").encode("gb2312"))
f.close()
cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)
#循環(huán)取時間列表里面的時間,并獲取相對應(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ù)的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
配置python連接oracle讀取excel數(shù)據(jù)寫入數(shù)據(jù)庫的操作流程
這篇文章主要介紹了配置python連接oracle,讀取excel數(shù)據(jù)寫入數(shù)據(jù)庫,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Python?實現(xiàn)循環(huán)最快方式(for、while?等速度對比)
這篇文章主要介紹了Python?利用for、while?實現(xiàn)循環(huán)最快方式,文章主要對for、while?等速度對比詳細介紹,具有一定的參考價值?,需要的小伙伴可以參考一下2022-01-01
Pyecharts繪制可視化地球?qū)崿F(xiàn)示例
這篇文章主要為大家介紹了Pyecharts繪制可視化地球?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
pandas pivot_table() 按日期分多列數(shù)據(jù)的方法
今天小編就為大家分享一篇pandas pivot_table() 按日期分多列數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

