基于Python flask 框架的微信支付 全代码

7

基于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 框架文档](

支付pythonflask微信支付模板

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 Python微信小程序后端(django)开发demo,包括获取openid、微信支付(统一下单、支付回调、企业付款

下一篇 微信支付接口沙箱环境对接(JSAPI方式)