基于Python flask 框架的微信支付 全代码
下面是基于Python Flask框架的微信支付全代码:
目录结构
```markdownwechat_pay/
app.pytemplates/
index.htmlpay.htmlstatic/
css/
style.cssjs/
script.jsconfig.pyrequirements.txtREADME.md```
配置文件(config.py)
```pythonimport osclass Config:
微信支付相关配置 WECHAT_APPID = 'your_appid'
WECHAT_MCHID = 'your_mchid'
WECHAT_KEY = 'your_key'
Flask 相关配置 SECRET_KEY = 'secret_key_here'
DEBUG = True 加载配置文件config = Config()
```
Flask应用程序(app.py)
```pythonfrom flask import Flask, render_template, request, redirect, url_forfrom wechat_pay import WeChatPayapp = Flask(__name__)
app.config.from_object(config)
微信支付实例wechat_pay = WeChatPay(app.config['WECHAT_APPID'], app.config['WECHAT_MCHID'], app.config['WECHAT_KEY'])
@app.route('/')
def index():
return render_template('index.html')
@app.route('/pay', methods=['POST'])
def pay():
获取订单信息 order_id = request.form['order_id']
amount = float(request.form['amount'])
微信支付 result = wechat_pay.pay(order_id, amount)
if result['return_code'] == 'SUCCESS':
return render_template('pay.html', result=result)
else:
return '支付失败'
@app.route('/callback')
def callback():
回调函数,处理微信支付结果 result = request.args.get('result')
print(result)
return '回调成功'
if __name__ == '__main__':
app.run(debug=True)
```
微信支付类(wechat_pay.py)
```pythonimport requestsclass WeChatPay:
def __init__(self, appid, mchid, key):
self.appid = appid self.mchid = mchid self.key = key def pay(self, order_id, amount):
构造支付请求 data = {
'appid': self.appid,
'mchid': self.mchid,
'nonce_str': '',
'body': '测试订单',
'out_trade_no': order_id,
'total_fee': int(amount *100),
'notify_url': ' }
加密支付请求 data['sign'] = self.sign(data)
发送支付请求 response = requests.post(' data=data)
处理支付结果 result = response.json()
return result def sign(self, data):
加密支付请求 params = sorted(data.items())
sign_str = '&'.join(f'{k}={v}' for k, v in params)
return self.md5(sign_str)
@staticmethod def md5(s):
MD5加密 import hashlib return hashlib.md5(s.encode()).hexdigest()
```
模板(templates/index.html)
```html
微信支付
```
模板(templates/pay.html)
```html
支付结果
订单号:{{ result.out_trade_no }}
支付金额:{{ result.total_fee }}元
支付时间:{{ result.time_end }}
```
注意事项
* 在 `config.py` 中,需要填写微信支付相关配置,如appid、mchid和key。
* 在 `app.py` 中,需要导入 `wechat_pay` 模块并实例化一个 `WeChatPay` 对象。
* 在 `index.html` 中,需要定义一个表单用于提交订单信息。
* 在 `pay.html` 中,需要定义一个模板来显示支付结果。
流程
1. 用户访问 `/` 页面,填写订单信息并点击"立即支付"按钮。
2.服务器接收到请求,并调用 `WeChatPay` 对象的 `pay` 方法进行微信支付。
3. 微信支付服务端处理支付请求,并返回结果给服务器。
4.服务器接收到支付结果,并将其传递给 `pay.html` 模板。
5. 用户访问 `/callback` 页面,查看支付结果。
参考
* [微信支付官方文档]( [Flask 框架文档](