import hashlib,requests,xmltodictfrom random import random
pay_url = ""
def sign(key, params):
# 字典序排序
data = "&".join(['%s=%s' % (key, params[key]) for key in sorted(params)])
# 拼接sign
data = '%s&key=%s' % (data, key)
# md5加密, 所有字元轉為大寫
return hashlib.md5(data.encode('utf-8')).hexdigest().upper()
def dict_to_xml(data, cdata=true, encoding='utf-8'):
""" dict轉xml """
tag = '<>' if cdata else '<>'
s = ''.join(tag.format(k, v) for k, v in data.items())
return '{}'.format(s).encode(encoding)
def xml_to_dict(content):
""" xml轉dict """
data = xmltodict.parse(content).get('xml')
if '#text' in data:
del data['#text']
return data
def random_str():
"""生成32位隨機字串
"""chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
random = random()
return "".join([chars[random.randint(0, len(chars) - 1)] for i in range(32)])
def wechat_transfer(openid, amount, order_id,desc= "測試商戶支付",ip = none):
"""企業付款到個人餘額介面"""
data =
# 拼接簽名
# 轉換格式
data_xml = dict_to_xml(data)
# 載入證書
# 發起支付
result = requests.post(pay_url,data=data_xml,cert=cert)
return xml_to_dict(result.text)
if __name__ == '__main__':
# 金額單位是分 1*100 是 1塊錢
ret = wechat_transfer("olqda5epndnhw4-rlckeqimpyeqe",1*100,"356352036536563269")
if ret and ret["return_code"] == "success":
if ret["result_code"] == "success":
print('付款成功')
微信付款到零錢
namespace globalunit utils use qys log log class wxcash arraytoxml 將陣列轉換成xml格式 簡單方法 param type data 陣列 return type array 轉 xml function arraytoxml dat...
微信企業支付到零錢
public function weixinpay 建立訂單 code this get pay code openid userinfo openid user id userinfo id nickname userinfo nickname this answer m create order...
微信企業支付到零錢
class wxcompanypay 商戶號 mchid 隨機字串 nonce str 簽名 sign 商戶訂單號 partner trade no 使用者openid openid 校驗使用者姓名選項 check name 收款使用者姓名 可選 re user name 金額 amount 企業付...