微信APP支付V3版本签名 && APP下单接口Python的django框架实现

问题背景

最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程、踩坑过程与最终具体实现。

微信支付APP下单流程

根据微信官方文档: 开发指引-APP支付 | 微信支付商户平台文档中心

开发指引-APP支付 | 微信支付商户平台文档中心

下单流程:

和支付宝不同,微信多了一个预付单的概念,这里把APP下单实际分为四大部分,其中包含请求微信后端需要的首次签名和需要返回给APP的二次支付信息签名--这里踩一个小坑,流程图中并没把第二次签名支付信息需要返回给APP的步骤画出来(即下面的步骤6.5),因而一开始误以为只需要返回prepay_id给客户端,导致校验失败。
一. 对应步骤1~4,APP 请求业务后端,业务后台进行V3签名后,请求微信后端生成预付单prepay_id
二. 对应步骤5~6.5,业务后端收到微信后端返回prepay_id,将支付相关参数打包进行二次签名后返回给APP,这里相比流程图多了一个6.5--即业务后端返回签名支付信息到APP
三. 对应步骤7~18,APP收到业务后端返回签名支付信息后调起SDK发起支付请求,收到同步消息结果通知

实现方法:

这是我实际的商品购买的业务代码,用户需要登录授权之后,在下单是把用户的openid和商品价格商品描述发送给后端。

需要安装

wechatpayv3
pip install wechatpayv3

我封装好的支付方法: Pay.py

import json
from wechatpayv3 import WeChatPay, WeChatPayType
from utils.pay.config import *
class Pay():
    def __init__(self):
        """
        :param wechatpay_type: 微信支付类型,示例值:WeChatPayType.MINIPROG
        :param mc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值