python 处理微信对账单数据的实例代码
作者:故事的开头是个码农 发布时间:2023-12-19 21:45:23
标签:python,微信,账单
下面一段代码给大家介绍python 处理微信对账单数据,具体代码如下所示:
#下载对账单并存储到数据库
@app.route("/bill/<string:date>",methods=["GET","POST"])
def download_bill(date):
pay = MyWeiXinPay()#自己的支付类
bill= pay.download_mybill(date)#下载原始对账单,下载下来为字符串
billArray=bill.split("\r\n") #分割账单,一行为一组数据,分割后第一行为数据标题,倒数第三行为统计标题,倒数第二行为统计金额,最后一行为多余的空行
titleArray=billArray[0].split(',')#第一行为标题
title_total=billArray[len(billArray)-2] #统计标题
data_total=billArray[len(billArray)-1]#统计金额
del billArray[0] #去掉标题
del billArray[len(billArray)-3] #去掉总标题
del billArray[len(billArray)-2] #去掉总额
del billArray[len(billArray)-1] #去掉空行,剩下的为账单详情数据
mybill=[] #订单详细信息
#循环账单详情数据
for i in billArray:
#每一条订单详细信息(去掉分隔出来的空数据)
_detail=i.split('`')[:-1]
del _detail[0]#去掉前边的空数据
_detail_temp=[]
for d in _detail:
#每一个数据(去掉最后的逗号)
_detail_val=d[:-1]
_detail_temp.append(_detail_val)
#TODO业务处理
# print(d[:-1])
#TODO业务处理
mybill.append(_detail_temp)
# print("---------------------------------------------")
#返回值TODO
return json.dumps(mybill)
ps:Python通过微信对账接口获取账单明细
由于工作需要,实现了用Python获取微信对账明细,最终生成CSV文件。
代码如下:
# -*- coding: utf-8 -*-
import urllib2
import hashlib
import datetime
'''登录微信公众号后台,可以查询到APPID和MCH_ID,并填写生成的KEY'''
APPID = ""
MCH_ID = ""
KEY = ""
#当天获取昨天一整天的微信支付数据
yesterday = datetime.date.today() + datetime.timedelta(-1)
TimeList = [
yesterday.strftime("%Y%m%d")
]
f = file("./test.csv", "w")
#创建CSV文件表头
f.write("交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,代金券或立减优惠金额,微信退款单号,商户退款单号,退款金额,代金券或立减优惠退款,退款类型,退款状态,商品名称,商户数据包,手续费,费率\n".decode("utf-8").encode("gb2312"))
f.close()
cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)
#循环取时间列表里面的时间,并获取相对应的微信支付的记录
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
#将获取的数据分行,放入列表中
lines = data.split("\n")
f = file("./test.csv", "a")
#将获取的数据按行写入CSV文件
for i in range(len(lines)):
if i>0 and i
f.write(lines[i].replace("`",""))
i += 1
f.close()
总结
以上所述是小编给大家介绍的python 处理微信对账单数据的实例代码,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.jianshu.com/p/b3cb36c5affa


猜你喜欢
- 1, see the slow log status;mysql> show variables like '%slow%
- 前言做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文
- 本文研究的主要是Python面向对象之继承的相关内容,具体如下。Python 继承即一个派生类(derived class)继承基类(bas
- 本文实例为大家分享了Vue实现web分页组件的具体代码,供大家参考,具体内容如下效果演示源代码<!DOCTYPE html>&l
- stdClass类是PHP的一个内部保留类,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL,可以使用其传递变量参数,但是没
- 最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God !有时候没有及时处理,内核
- 一、serialize()方法格式:var data = $("#formID").serialize();功能:将表单
- 引言“ 这是MySQL系列笔记的第一篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或
- Python Json读写操作_JsonPath用法详解1. 介绍JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,
- 在go语言的源码中,会发现很多,代码只有函数签名,却看不到函数体,如:// src/os/proc.go 68行func runtime_b
- 本次分析一下Logger.info的流程1. Logger.info源码: def info(self, msg, *args, **kwa
- 1.打包项目期间遇到的坑,提前说下,避免重复工作。1.1打包的app出现白屏。出现原因:路径不对,需要改config\index.js解决办
- 一、Beautiful Soup库简介BeautifulSoup4 是一个 HTML/XML 的解析器,主要的功能是解析和提取 HTML/X
- 日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻塞的。1. 环境说明RHEL 6.4 x86_6
- 长话短说,今天介绍实现此功能的一个方法,需要了解的朋友可以参考下:一、JS 重载页面,本地刷新,返回上一页 代码如下:<a href=
- 此方法支持IE 不支持火狐。可能是因为FCKEidtor的keyup方法在火狐下不被支持。 FCKEditor编辑器换为TextBox,应该
- 一般说来,你会把模板以文件的方式存储在文件系统中,但是你也可以使用自定义的 template loaders 从其他来源加载模板。Djang
- asp之家注:作为一个学习asp的爱好者,相信一定接触过session,我们经常使用session来作为会员登录的验证,当然也可以使用COO
- python中向上取整可以用ceil函数,ceil函数是在math模块下的一个函数。向上取整需要用到 math 模块中的 ceil() 方法
- 如下所示:beta分布的最大特点是其多样性, 从下图可以看出, beta分布具有各种形态, 有U形, 类似正态分布的形状, 类似unifor