From e3ccb13fdd386d41ea2f721924861f6bb64e6708 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 09 Jan 2021 14:46:09 +0800 Subject: [PATCH] Merge branch 'api' of https://gitee.com/jyyforjava/zq-erp into api --- zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java new file mode 100644 index 0000000..7c74df6 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java @@ -0,0 +1,134 @@ +package com.matrix.system.shopXcx.api; + +import com.matrix.component.tools.HttpRequest; +import com.matrix.component.tools.HttpResponse; +import com.matrix.core.exception.GlobleException; +import com.matrix.core.tools.LogUtil; +import com.matrix.core.tools.PropertiesUtil; +import com.matrix.core.tools.StringUtils; +import net.sf.json.JSONObject; + +import java.io.IOException; + +/*** + * 公众号api工具 + */ +public class WeChatGzhApiTools { + /** + * 公众号秘钥 + */ + private static final String GZH_SECRET = "gzh_secret"; + /** + * 公众号appid + */ + private static final String GZH_APPID = "gzh_appid"; + /** + * 微信登录url + */ + private static final String WECHAT_LOGIN_URL = "wechar_login_url"; + + /** + * 上一次获取时间 + */ + private static Long preTime; + + /** + * 当前有效的微信token + */ + private static String accessToken = ""; + + private static String appid = ""; + private static String secret = ""; + + + + + /** + * 获取公众号APPId + * @return + */ + public static String getAppid(){ + if(StringUtils.isBlank(appid)){ + appid = PropertiesUtil.getString(GZH_APPID); + } + return appid; + } + + /** + * 获取公众号秘钥 + * @return + */ + public static String getSecret(){ + if(StringUtils.isBlank(secret)){ + secret = PropertiesUtil.getString(GZH_SECRET); + } + return secret; + } + + + + /** + * 清空token + */ + public static void cleanAccessToken() { + preTime = null; + accessToken = ""; + } + + public static String getAccessToken(String gzhAppId, String gzhSecret) { + + if (isTokenInvalid()) { + synchronized (accessToken) { + if (isTokenInvalid()) { + LogUtil.info("刷新微信accessToken"); + HttpRequest reqObj = new HttpRequest(); + HttpResponse result = null; + try { + result = reqObj + .sendHttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + + gzhAppId+ "&secret=" + gzhSecret, null); + } catch (IOException e) { + LogUtil.error("获取公众号accessToken失败"+e.getMessage(),e); + throw new GlobleException(e.getMessage()); + } + JSONObject json = JSONObject.fromObject(result.getDataString()); + + if(json.has("errmsg")){ + throw new GlobleException("获取返回刷新的accessToken失败"+json.toString()); + }else{ + String access_token = json.getString("access_token"); + accessToken = access_token; + preTime = System.currentTimeMillis(); + LogUtil.info("返回刷新的accessToken={}", accessToken); + return access_token; + } + + } else { + return accessToken; + } + } + } else { + LogUtil.info("返回现有accessToken={}", accessToken); + return accessToken; + } + } + + /** + * token是否无效 + * TODO 由于现在有多个环境,为了防止冲突每次都获取新的token + * @return + */ + private static boolean isTokenInvalid() { + /** if (StringUtils.isNotBlank(accessToken) && preTime != null) { + Long now = System.currentTimeMillis() / 1000; + Long pre = preTime / 1000; + boolean invalid = (now - pre) > 6200; + return invalid; + } else { + return true; + }*/ + return true; + } + + +} -- Gitblit v1.9.1