@RequestMapping("/wechatCheck") public void wechatCheck(HttpServletRequest request,HttpServletResponse response) throws Exception{ String url = request.getParameter("url"); Properties properties = PropertiesFileUtil.getApplicationProperties(); String appid = properties.getProperty("weixin.appid"); String appsecret = properties.getProperty("weixin.appsecret"); String jsapi_ticket = ""; String res = HttpRequestUtil.httpsGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret ); String access_token = JSONObject.fromObject(res).getString("access_token"); res = HttpRequestUtil.httpsGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi"); jsapi_ticket = JSONObject.fromObject(res).getString("ticket"); String timestamp = String.valueOf(CommonUtil.getCurrTimes()); String noncestr = CommonUtil.createNonceStr(); SortedMap<Object,Object> parameters = new TreeMap<Object,Object>(); parameters.put("jsapi_ticket", jsapi_ticket); parameters.put("timestamp", timestamp); parameters.put("noncestr", noncestr); parameters.put("url", url); parameters.put("signature", createSign(parameters)); parameters.put("appid",appid); JSONObject jsonObject = JSONObject.fromObject(parameters); String respStr = jsonObject.toString(); System.out.println("wechatCheck返回的数据:" + respStr); response.getWriter().write(respStr); } /** * 微信jsapi签名算法sign * @param parameters * @return */ public static String createSign(SortedMap<Object,Object> parameters){ StringBuffer sb = new StringBuffer(); Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序) Iterator it = es.iterator(); while(it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); String k = (String)entry.getKey(); Object v = entry.getValue(); if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) { sb.append(k + "=" + v + "&"); } } // key = "192006250b4c09247ec02edce69f6a2d";//debugTest // sb.append("key=" + key); sb.deleteCharAt(sb.length() - 1); logger.debug(sb); String sign = CommonUtil.SHA1(sb.toString()); return sign; }