这几天抽空弄了一个小程序,用到微信支付,在支付的这个过程中卡了很久,主要是生成签名以及Authorization的处理花费了巨大的时间。
网上查询的资料太杂乱了,小程序开发文档也有点庞大,最后花了两天时间稍微捋清思路,才走好其中流程,因此做个记录。
此次用到的是微信小程序的支付v3,后端使用的是python。
流程:
1、申请商户号,得到商户号(我的是直连商户)ID:mchId、商户API证书序列号serial_no,下载商户API证书(加密用)
2、调用jsapi下单前,将其参数按规则拼接进行SHA256 WITH RSA加密,之后再按规则拼接
此处注意!!!参数里的 description 有可能涉及中文,注意编码问题预防产生乱码
加密前的参数拼接规则(注意!!!每段后面不要漏**\n**):
加密后的参数拼接规则:
将Authorization放进jsapi请求的headers,发起请求获得prepay_id。
3、将与步骤2同样的timestamp、nonce_str和appId、步骤2获得的prepay_id,按规则拼接,再次进行SHA256 WITH RSA加密。
加密前的参数拼接规则(注意!!!每段后面不要漏**\n**):
4、将步骤3加密后的值给到小程序api:wx.requestPayment(Object object),将相应的参数填入即可
结束!有问题评论/私聊交流。