微信app支付功能-服务端的实现-python3版
微信app支付功能-服务端的实现-python3版
一:需求说明
在自有的Android App中加入微信支付功能,用户可以通过App进行支付。为此,我们需要在后台开发一个微信支付接口。
二:微信app支付处理流程
1. 创建订单:用户在App中选择商品并点击购买按钮,系统会生成一条订单信息。
2. 微信异步回调:用户在微信支付界面确认支付后,微信服务器会向我们的服务端发送一个异步回调请求,包含支付结果等信息。
3. 订单状态查询:用户可以通过App查询当前订单的状态。
三:所需依赖
3.1 支付配置我们需要在后台配置微信支付相关参数,如商户ID、密钥等。
```python payments.pyimport osclass WeChatPayConfig:
def __init__(self):
self.mch_id = os.environ.get('WECHAT_PAY_MCH_ID')
self.api_key = os.environ.get('WECHAT_PAY_API_KEY')
wechat_pay_config = WeChatPayConfig()
```
3.2 接口开发4.1 创建订单接口```python orders.pyfrom flask import Blueprint, request, jsonifyfrom payments import wechat_pay_configorders_blueprint = Blueprint('orders', __name__)
@orders_blueprint.route('/create_order', methods=['POST'])
def create_order():
获取用户传递的参数,如商品ID、数量等 product_id = request.json.get('product_id')
quantity = request.json.get('quantity')
生成订单信息 order_info = {
'product_id': product_id,
'quantity': quantity,
'status': 'pending'
}
将订单信息保存到数据库或缓存中 db_session.add(order_info)
db_session.commit()
return jsonify({'order_id': order_info.id})
```
4.2 微信异步回调接口```python callbacks.pyfrom flask import Blueprint, request, jsonifyimport xml.etree.ElementTree as ETcallbacks_blueprint = Blueprint('callbacks', __name__)
@callbacks_blueprint.route('/wechat_callback', methods=['POST'])
def wechat_callback():
获取微信传递的参数,如签名、订单ID等 signature = request.form.get('signature')
order_id = request.form.get('order_id')
验证签名 if not verify_signature(signature, wechat_pay_config.api_key):
return jsonify({'error': 'invalid signature'}),400 更新订单状态 order_info = db_session.query(Order).get(order_id)
order_info.status = 'paid'
db_session.commit()
return jsonify({'message': 'success'})
```
4.3 订单状态查询接口```python orders.py (继续)
@orders_blueprint.route('/query_order_status', methods=['GET'])
def query_order_status():
获取用户传递的参数,如订单ID等 order_id = request.args.get('order_id')
查询订单状态 order_info = db_session.query(Order).get(order_id)
return jsonify({'status': order_info.status})
```
以上是微信app支付功能-服务端的实现-python3版的详细描述。