零演顾、軟件功用和我使用背景
線上app需要給用戶發(fā)紅包。日活三五百的app郊供,考慮到日活十萬已經(jīng)極限了。
先前做過多種支付近哟,都是復(fù)制代碼參考修改驮审,這個是自己從頭起找各方拉資料做好的。特別記錄下吉执。
一疯淫、參考文獻(xiàn)及我的評判
微信的接口,微信商戶平臺幫助文檔當(dāng)然是最重要的戳玫。
二熙掺、意外問題一覽
一個小小的意外,業(yè)務(wù)方只給我一個普通管理員的權(quán)限咕宿,一開始不知道去哪里弄證書币绩。想了好久用超級管理員登錄進(jìn)去果然有證書下載按鈕。
三荠列、基本流程命令
流程步驟如下:
a)對照文檔类浪,準(zhǔn)備將提交的數(shù)據(jù)
b)產(chǎn)生簽名
c)準(zhǔn)備xml數(shù)據(jù)
d)設(shè)置https證書
e)https方式提交數(shù)據(jù)到紅包地址
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上