溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python 處理微信對(duì)賬單數(shù)據(jù)的實(shí)例代碼

發(fā)布時(shí)間:2020-08-20 20:52:58 來源:腳本之家 閱讀:218 作者:故事的開頭是個(gè)碼農(nóng) 欄目:開發(fā)技術(shù)

下面一段代碼給大家介紹python 處理微信對(duì)賬單數(shù)據(jù),具體代碼如下所示:

#下載對(duì)賬單并存儲(chǔ)到數(shù)據(jù)庫
@app.route("/bill/<string:date>",methods=["GET","POST"])
def download_bill(date):
 pay = MyWeiXinPay()#自己的支付類
 bill= pay.download_mybill(date)#下載原始對(duì)賬單,下載下來為字符串
 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通過微信對(duì)賬接口獲取賬單明細(xì)

由于工作需要,實(shí)現(xiàn)了用Python獲取微信對(duì)賬明細(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í)間,并獲取相對(duì)應(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 處理微信對(duì)賬單數(shù)據(jù)的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI