调用接口很简单,写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");
}
}