jssdk配置

@RequestMapping(value = "/getConfig")
    @ResponseBody
    public Map<String, String> getConfig(HttpServletRequest request) {
        String accessToken = request.getParameter("accessToken");
        String url = request.getParameter("url");
        String jsApiTicket = request.getParameter("jsApiTicket");
        // String url="app.lanbanshou.com/SSMDemo";
        Map<String, String> map = makeWXTicket(jsApiTicket, url);
        return map;
    }
    
    /**
     * 获取access_token
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping(value = "/getAccessToken")
    @ResponseBody
        private JSONObject getAccessToken(HttpServletResponse response) {
            String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
            String requestUrl = accessTokenUrl.replace("APPID", WXConfig.appid).replace("APPSECRET",
                    WXConfig.appsecret);
            String result = HttpClientUtil.doGet(requestUrl);
            //System.out.println(result+"===========");
            return JSON.parseObject(result);
        } 
    
    // 获取ticket
    @RequestMapping(value = "/getJsApiTicket")
    @ResponseBody
        private JSONObject getJsApiTicket(String accessToken) {
            String apiTicketUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
            String requestUrl = apiTicketUrl.replace("ACCESS_TOKEN", accessToken);
            String result = HttpClientUtil.doGet(requestUrl);
            return JSON.parseObject(result);
        }

        // 生成微信权限验证的参数
        public Map<String, String> makeWXTicket(String jsApiTicket, String url) {
            Map<String, String> ret = new HashMap<String, String>();
            String nonceStr = createNonceStr();
            String timestamp = createTimestamp();
            String string1;
            String signature = "";

            // 注意这里参数名必须全部小写,且必须有序
            string1 = "jsapi_ticket=" + jsApiTicket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;
            try {
                MessageDigest crypt = MessageDigest.getInstance("SHA-1");
                crypt.reset();
                crypt.update(string1.getBytes("UTF-8"));
                signature = byteToHex(crypt.digest());
            } catch (NoSuchAlgorithmException e) {

            } catch (UnsupportedEncodingException e) {

            }

            ret.put("url", url);
            ret.put("jsapi_ticket", jsApiTicket);
            ret.put("nonceStr", nonceStr);
            ret.put("timestamp", timestamp);
            ret.put("signature", signature);
            ret.put("appid", WXConfig.appid);

            return ret;
        }

        // 字节数组转换为十六进制字符串
        private static String byteToHex(final byte[] hash) {
            Formatter formatter = new Formatter();
            for (byte b : hash) {
                formatter.format("%02x", b);
            }
            String result = formatter.toString();
            formatter.close();
            return result;
        }

        // 生成随机字符串
        private static String createNonceStr() {
            return UUID.randomUUID().toString();
        }

        // 生成时间戳
        private static String createTimestamp() {
            return Long.toString(System.currentTimeMillis() / 1000);
        }

  注意:调用时必须加入白名单

 
大家觉得不错的话可以支持一下我哦

原文地址:https://www.cnblogs.com/xiangxiang521/p/9518958.html