微信支付V3的统一下单流程是怎样的
微信支付V3的统一下单流程主要分为以下三个核心步骤一、后端统一下单请求接口商户后端调用微信支付的JSAPI/小程序下单接口POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi。构造请求参数请求体中需包含appid公众账号ID、mchid商户号、description商品描述、out_trade_no商户订单号、notify_url支付结果异步通知地址、amount金额单位为分、payer支付者信息如openid等参数。生成签名使用商户私钥对请求参数进行SHA256 with RSA签名并将签名信息放在请求头的Authorization字段中。获取响应若下单成功微信支付会返回一个prepay_id预支付交易会话标识。二、前端调起支付获取支付参数商户后端拿到prepay_id后需要构造调起支付所需的参数包括appId、timeStamp时间戳、nonceStr随机字符串、package格式为prepay_idxxx、signType签名类型V3版本仅支持RSA。生成支付签名使用商户私钥对appId、timeStamp、nonceStr、package这四个参数进行签名得到paySign。调起支付将构造好的参数返回给前端前端调用wx.requestPayment小程序或WeixinJSBridge.invoke公众号方法拉起微信支付收银台。三、支付结果通知与处理接收回调通知用户支付成功后微信支付会向商户在统一下单时设置的notify_url发送异步POST请求。请求头中包含Wechatpay-Timestamp、Wechatpay-Nonce、Wechatpay-Signature、Wechatpay-Serial等信息请求体中包含加密的资源数据。验签商户后端需要验证回调通知的签名。构造验签名串由Wechatpay-Timestamp、Wechatpay-Nonce和请求体组成然后使用微信支付平台公钥对签名进行验证。解密资源验证签名通过后使用APIv3密钥对请求体中加密的资源数据进行AES-256-GCM解密得到明文的支付结果信息如out_trade_no、transaction_id等。处理业务逻辑根据解密后的支付结果更新商户系统内的订单状态如标记为已支付并进行后续的业务处理如发货、开通会员等。处理完成后需向微信支付返回一个成功的HTTP状态码如200以避免微信支付重复发送通知。此外如果在一段时间内未收到微信支付的回调通知商户后端也可以主动调用查询订单API来确认订单的支付状态。