AccessToken.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.hhsx.minigame.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.hhsx.minigame.constant.Constant;
  5. import org.apache.commons.lang3.StringEscapeUtils;
  6. import java.io.IOException;
  7. import java.security.KeyManagementException;
  8. import java.security.NoSuchAlgorithmException;
  9. import java.security.NoSuchProviderException;
  10. import java.util.Date;
  11. /**
  12. * Author: 吴涛涛 cuiyi@itany.com
  13. * Date : 2019 - 09 - 17 10:04
  14. * Description:<描述>
  15. * Version: 1.0
  16. */
  17. public class AccessToken {
  18. private static String wechatAppId = Constant.WECHAT_APPID;
  19. private static String wechatSecret = Constant.WECHAT_APPSECRET;
  20. private static String oldAccessToken = null;
  21. private static Date time = new Date();//oldAccessToken值创建时间
  22. private static Long expiresIn = 7200L*1000;//accessToken值有效时长 单位毫秒
  23. public static String getNewAccessToken() throws Exception {
  24. if(oldAccessToken == null || (oldAccessToken != null && System.currentTimeMillis() > time.getTime()+expiresIn)){
  25. String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wechatAppId + "&secret=" + wechatSecret;
  26. String resp = HttpKit.get(url, true);
  27. resp = StringEscapeUtils.unescapeJava(resp);
  28. JSONObject json = (JSONObject) JSON.parse(resp);
  29. //获取值赋值给全局变量
  30. if (!json.containsKey("errcode")) {
  31. String newAccessToken = json.getString("access_token");
  32. String newExpiresIn = json.getString("expires_in");
  33. oldAccessToken = newAccessToken;
  34. expiresIn = Long.parseLong(newExpiresIn) * 1000;
  35. time = new Date();
  36. System.out.println("获取新access_token==>" + oldAccessToken);
  37. }
  38. }
  39. return oldAccessToken;
  40. }
  41. }