你好,“二次签名的时候要求appId是大写”您的这句话表达有问题,二次签名只是参数appid要以驼峰的形式,您这样说很容易让人以为是appid要转大写,我就是被这个坑了一天,现在调通了,希望对其他人有帮助
小程序微信支付签名验证失败Map<String, String> data = new HashMap<String, String>(); data.put("appid","wx9bc*****b8908"); //小程序ID data.put("mch_id",config.getMchID()); //商户号 data.put("trade_type","JSAPI"); //支付场景 APP 微信app支付 JSAPI 公众号支付 NATIVE 扫码支付 data.put("notify_url",notifyUrl); //回调地址 data.put("spbill_create_ip",config.create_ip); //终端ip data.put("total_fee",amount); //订单总金额 data.put("out_trade_no",ordernum); //交易号 data.put("body",gname); data.put("openid",openid); data.put("nonce_str",WXPayUtil.generateNonceStr());// 随机字符串小于32位 String s = WXPayUtil.generateSignature(data, config.getKey()); //签名 data.put("sign",s); Map<String, String> respData = wxpay.unifiedOrder(data);; if (respData.get("return_code").equals("SUCCESS")){ //返回给APP端的参数,APP端再调起支付接口 String resultCode = respData.get("result_code"); if("SUCCESS".equals(resultCode)){ Map<String, String> daa = new HashMap<>(); daa.put("appId", "wx9bc*****b8908"); daa.put("package", "prepay_id="+respData.get("prepay_id")); daa.put("nonceStr", WXPayUtil.generateNonceStr()); daa.put("signType", "MD5"); daa.put("timeStamp", String.valueOf(System.currentTimeMillis() / 1000));//单位为秒 daa.put("paySign", WXPayUtil.generateSignature(daa, config.getKey())); dataMap.put("data", daa); //传给前端 }else { } }
2019-07-25