前后端分离(VUE+SPRINGBOOT)十五 微信移动端 企业微信的开发token和jsapi_ticket的存取

调用接口很简单,写2个方法,先写一个POST,一个GET,

配置文件里配置好

每次需要用token或者是jsapi_ticket的时候,先去数据库查找有效的token

如果有则返回需要的token或者jsapi_ticket或者txlaccesstoken,

找不到,则清除表,重新调用微信接口,保存至数据库并返回,

相关代码如下。

/***
     * 获取acess_token
     * @return
     */

    public static String getAccessToken(String appid,String appSecret) {

        String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+appid+"&corpsecret="+appSecret;
        
        String backData = WebCharUtil.sendGet(url, "utf-8", 10000);
        String accessToken = JSON.parseObject(backData).getString("access_token") ;

        return accessToken;

    }

    /***
     * 
     * 获取jsapiTicket
     * @return
     * 
     */

    public static String getJSApiTicket(String acessToken) {


        String urlStr = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token="+acessToken;

        String backData = WebCharUtil.sendGet(urlStr, "utf-8", 10000);
        String ticket = JSON.parseObject(backData).getString("ticket");

        return ticket;

    }

/**
     * 获取微信token,先从本地数据库判断是否有未失效的,
     * 有 则从本地读取出来,
     * 没有 则从微信端获取来,在更新到数据库并缓存
     * (最好是放缓存,此处还未加缓存)
     * @return
     */
    @Override
    public String getWebChatCache(JSONObject jsonObject1) {
        JSONObject jsonObject = webChatCacheDao.getWebChatCache(jsonObject1);
        System.out.println(jsonObject);
        
        if(jsonObject==null) {   //失效或者不存在,调用微信接口获取并保存数据库
            String accessToken =WebCharUtil.getAccessToken(this.cortid, this.secret);
            String txlAccessToken =WebCharUtil.getAccessToken(this.cortid, this.txlsecret);
            String jspApiTicket = WebCharUtil.getJSApiTicket(accessToken);
            webChatCacheDao.deleteWebChatCache(null);//清掉之前的数据
            JSONObject insertObject = new JSONObject();
            //微信的token和JSapiticket默认失效2小时
            insertObject.put("expireTime", this.getBeforeByHourTime(2));
            insertObject.put("key", WebChatCommon.ACCESSTOKEN);
            insertObject.put("value", accessToken);
            webChatCacheDao.insertWebChatCache(insertObject);
            insertObject.put("key", WebChatCommon.JSAPITICKET);
            insertObject.put("value", jspApiTicket);
            webChatCacheDao.insertWebChatCache(insertObject);
            insertObject.put("key", WebChatCommon.TXLJSAPITICKET);
            insertObject.put("value", txlAccessToken);
            webChatCacheDao.insertWebChatCache(insertObject);
            if(WebChatCommon.ACCESSTOKEN.equals(jsonObject1.getString("key"))){
                return accessToken;
            }else if(WebChatCommon.JSAPITICKET.equals(jsonObject1.getString("key"))){
                return jspApiTicket;
            }else {
                return txlAccessToken;
            }
            
        }else {                    //有则直接从数据库返回
            return jsonObject.getString("value");
        }
    }

猜你喜欢

转载自blog.csdn.net/shrek11/article/details/83544128