From 4d4805096b898a6e99f31794facb81794bd1fcf7 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Mon, 25 Jan 2021 09:39:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/hive2.0' into hive2.0
---
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