前後端分離(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"); } }