微信发红包代码
微信发红包需要使用微信支付的相关接口,并且需要在微信商户平台上注册并获取相关的API密钥、商户号等信息。
pythonfrom flask import Flask, request
import requests
import hashlib
import xml.etree.ElementTree as ET
app = Flask(__name__)
@app.route('/send_red_packet', methods=['POST'])
def send_red_packet():
# 获取请求数据
data = request.get_data()
xml_data = ET.fromstring(data)
# 解析请求数据
mch_id = xml_data.findtext(".//mch_id")
mch_key = 'your_mch_key' # 替换成你在微信商户平台设置的API密钥
wxappid = xml_data.findtext(".//wxappid")
openid = xml_data.findtext(".//openid")
total_amount = xml_data.findtext(".//total_amount")
total_num = '1' # 红包发放总人数,目前只支持1
# 构造签名字符串
params = {
'mch_id': mch_id,
'wxappid': wxappid,
'openid': openid,
'total_amount': total_amount,
'total_num': total_num,
'mch_key': mch_key,
}
sign = generate_sign(params)
# 构造请求数据
data = {
'mch_id': mch_id,
'wxappid': wxappid,
'send_name': 'Your Company',
're_openid': openid,
'total_amount': int(float(total_amount) * 100), # 转换为分
'total_num': total_num,
'wishing': 'Happy New Year!',
'client_ip': '127.0.0.1', # 替换成服务器的IP地址
'act_name': 'Red Packet Activity',
'remark': 'Enjoy your red packet!',
'nonce_str': 'your_random_string', # 替换成一个随机字符串
'sign': sign,
}
# 发送请求
response = requests.post('https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack', data=xml_data)
return response.text
def generate_sign(params):
# 将参数按照key的ASCII顺序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 拼接参数字符串
sign_str = '&'.join([f'{key}={value}' for key, value in sorted_params])
# 在字符串末尾拼接商户密钥
sign_str += f'&key={params["mch_key"]}'
# 使用MD5算法计算签名
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
return sign
if __name__ == '__main__':
app.run(port=5000)
注册微信商户平台账号:
前往微信商户平台,使用你的微信账号注册一个商户平台账号。
获取商户号:
登录微信商户平台,找到“账户中心” -> “账户设置” -> “账户信息”。在该页面中你可以找到你的商户号。
获取API密钥:
在商户平台的“账户中心” -> “账户设置” -> “API安全”中设置API密钥。这个密钥在保管和传输时需要非常小心,不要泄漏给其他人。
获取微信公众号AppID:
如果你要在公众号内发送红包,需要使用微信公众号的AppID。在微信公众平台上注册并创建一个公众号,然后在“开发” -> “基本设置”中找到AppID。
配置服务器和域名:
在微信商户平台中,需要配置服务器的回调地址。确保你的服务器可以被外部访问,并在代码中替换相关的IP地址或域名。
调试和错误处理:
在实际使用前,建议使用微信支付提供的沙箱环境进行调试,确保代码正常工作。添加适当的错误处理机制,处理请求失败、签名错误等情况。
其他注意事项:
确保遵循微信支付的规范和安全要求。遵循微信红包发送的频率限制,防止滥用。