1.调用统一下单的接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
2.调用统一下单必传参数:
:需要进行支付功能的公众号的appId
mch_id:微信分配的商户号
:随机字符串,自己生成,要求在32位以内,微信官方文档推荐方式是调用随机数函数生成,将得到的值转换为字符串,主要用于保证签名不可测
:签名,通过签名算法生成,使用md5进行加密
:商品描述,自定义,如对什么进行付款
:随机单号,要求是32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
:支付的金额,注意是以分为单位
:客户请求的地址
:你的回调地址
:交易类型,这里微信公众号支付为:JSAPI
3.其他可能需要但是非必传的参数:
:签名类型,默认是md5,还支持HMAC-SHA256
:此参数可自行传String类型的值,支付成功后微信会原样返回
参考微信官方api文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
4.调用统一下单之前先获取sign签名:
这里的generateSignature方法,只需要将传过去的集合遍历,按顺序用字符串拼接好,再进行md5的加密即可
5.调用统一下单:
把前面包含了sign的集合转成xml再用post的方式请求统一下单,返回统一下单的xml
然后把返回的xml转成集合传到页面用于唤起H5的支付,之后进行二次签名,这个需要用appId,timeStamp,nonceStr,package,signType,paySign参数重新获取签名,这里注意在将xml转map的时候,微信公布的XEE的漏洞,如果是使用微信支付的sdk,那只需要更新就行。
页面唤起h5支付得代码(直接使用微信文档里面得,把值改成自己后台传过来得值就行):
后续再写微信浏览器外得H5支付......