最近在写微信支付的后台接口,遇到一个非常头疼的问题,app一直提示“支付验证签名错误”,但是小程序可以正常支付。由于第一次做微信支付,没有经验,这个问题,调查了一天一直没有头绪。直到看到一位大侠分享的帖子,尝试着改了一下,结果....居然成功了,惊喜就是来的这么突然。现在把代码贴上来,非常感谢那位大侠,也希望能帮到更多第一次做微信支付的人。
1、这是app第二次签名时候的参数,一定要注意大小写!!!
SortedMap<Object, Object> prepayMap = new TreeMap<Object, Object>(); prepayMap.put("appid", appid); prepayMap.put("partnerid", mch_id); prepayMap.put("prepayid", prepay_id); prepayMap.put("package", "Sign=WXPay"); prepayMap.put("noncestr", nonce_str); prepayMap.put("timestamp", time); String sign1 = PayForUtil.createSign("UTF-8", prepayMap, key); //获取签名 prepayMap.put("sign", sign1);
2、这是小程序第二次签名时候的参数,一定要注意大小写!!!不要嫌我啰嗦,毕竟是我踩过坑的人
SortedMap<Object, Object> prepayMap = new TreeMap<Object, Object>(); prepayMap.put("appId", appid); prepayMap.put("timeStamp", time); prepayMap.put("nonceStr", nonce_str); prepayMap.put("package", "prepay_id=" + prepay_id); prepayMap.put("signType", "MD5"); String sign1 = PayForUtil.createSign("UTF-8", prepayMap, key); //获取签名 prepayMap.put("sign", sign1); prepayMap.put("prepay_id", prepay_id);