2018-03-02 微信支付实践

零、软件功用和我使用背景

线上app需要给用户发红包。日活三五百的app,考虑到日活十万已经极限了。

先前做过多种支付,都是复制代码参考修改,这个是自己从头起找各方拉资料做好的。特别记录下。

一、参考文献及我的评判

微信的接口,微信商户平台帮助文档当然是最重要的。

二、意外问题一览

一个小小的意外,业务方只给我一个普通管理员的权限,一开始不知道去哪里弄证书。想了好久用超级管理员登录进去果然有证书下载按钮。

三、基本流程命令

流程步骤如下:

a)对照文档,准备将提交的数据

b)产生签名

c)准备xml数据

d)设置https证书

e)https方式提交数据到红包地址

data = {

"mch_billno":self.mch_billno,

"mch_id":self.mch_id,

"wxappid":self.minfo.wxappid,

"send_name":self.minfo.send_name,

"re_openid":self.openid,

"total_amount":self.total_amount,

"total_num":self.total_num,

"wishing":self.wishing,

"client_ip":self.client_ip,

"act_name":self.act_name,

"remark":self.remark,

"scene_id":self.scene_id,

"nonce_str":self.nonce_str,

}

sign =self.gen_sign(data, minfo.key)

data['sign'] = sign

xml = dict_to_xml(data)

https = urllib3.PoolManager(cert_reqs='CERT_REQUIRED',

key_file=CERT_FILES[minfo.send_name]['key_file'],

cert_file=CERT_FILES[minfo.send_name]['cert_file'],

ca_cert_dir=CERT_FILES[minfo.send_name]['ca_cert_dir'],

ca_certs=certifi.where(),

scheme="https")

r = https.request('POST', URL_WX_REDPACK,body=xml.encode('utf-8'))

res = RedPackResult.create(self, r.data.decode('utf-8'))


代码放在github上

你可能感兴趣的:(2018-03-02 微信支付实践)