package com.hhsx.minigame.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hhsx.minigame.constant.Constant; import org.apache.commons.lang3.StringEscapeUtils; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.util.Date; /** * Author: 吴涛涛 cuiyi@itany.com * Date : 2019 - 09 - 17 10:04 * Description:<描述> * Version: 1.0 */ public class AccessToken { private static String wechatAppId = Constant.WECHAT_APPID; private static String wechatSecret = Constant.WECHAT_APPSECRET; private static String oldAccessToken = null; private static Date time = new Date();//oldAccessToken值创建时间 private static Long expiresIn = 7200L*1000;//accessToken值有效时长 单位毫秒 public static String getNewAccessToken() throws Exception { if(oldAccessToken == null || (oldAccessToken != null && System.currentTimeMillis() > time.getTime()+expiresIn)){ String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatAppId + "&secret=" + wechatSecret; String resp = HttpKit.get(url, true); resp = StringEscapeUtils.unescapeJava(resp); JSONObject json = (JSONObject) JSON.parse(resp); //获取值赋值给全局变量 if (!json.containsKey("errcode")) { String newAccessToken = json.getString("access_token"); String newExpiresIn = json.getString("expires_in"); oldAccessToken = newAccessToken; expiresIn = Long.parseLong(newExpiresIn) * 1000; time = new Date(); System.out.println("获取新access_token==>" + oldAccessToken); } } return oldAccessToken; } }