前言:
此刻咱们对“sign签名无效什么意思”大概比较关怀,大家都需要剖析一些“sign签名无效什么意思”的相关资讯。那么小编也在网摘上网罗了一些关于“sign签名无效什么意思””的相关内容,希望看官们能喜欢,同学们快快来学习一下吧!最近做了一个微信小程序,小程序在调起微信支付时,第一次弹出调用支付JSAPI缺少参数total_fee,如下图所示:
然后,百度了很久,有人支出,wx.requestPayment的参数:package应该是:prepay_id=xxxxxxxxxx,这个prepay_id当然是第一次使用威胁你支付API签名获得的,加上后,该错误不再出现,
在返回prepay_id的同时,顺便返回了sign这个参数,这时就把这个参数给前端:wx.requestPayment调起时,所需要的参数:paySign,
这时,又出现了支付验证签名失败这个错误,入下图所示:
这次搞了好久,搞了好几个小时,百度网上资料,有人说MD5加密问题,有人说参数顺序问题,等等诸如此类,也有人说需要二次签名,最终发现,的确是需要二次签名的,但是什么是二次签名,网上资料又嘎然而止了。
第一次签名获得prepay_id后,我们还需要用利用prepay_id,加上其它4个参数,共5个参数,获得二次签名,Java源代码如下:
Map<String, String> map = new HashMap<String, String>();
map.put("appId", appId);// 公众号id
map.put("nonceStr", nonceStr);// 随机字符串
map.put("timeStamp",String.valueOf(timeStamp));
map.put("nonceStr", nonceStr);// 随机字符串
map.put("package", "prepay_id="+prepayId);
map.put("signType", "MD5");
String sign2 = WXPayUtil.generateSignature(map,mchKey);
这时获得的sign2,才是我们真正要传给前端的参数paySign
至此,再次调用小程序微信支付,就可以正确弹出支付窗口了。
标签: #sign签名无效什么意思 #微信小程序显示签名错误 #微信小程序显示签名错误怎么回事 #百度网盘签名不对是什么意思