Jelajahi Sumber

微信小程序工具类

home 2 tahun lalu
induk
melakukan
cbd78afc4d

+ 1 - 2
bladex/blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java

@@ -1,9 +1,9 @@
 package org.springblade.auth.granter;
 
 import com.fjhx.constants.WxAppletConstant;
+import com.fjhx.utils.WxAppletUtil;
 import org.springblade.auth.service.BladeUserDetails;
 import org.springblade.auth.utils.TokenUtil;
-import org.springblade.auth.utils.WxAppletUtil;
 import org.springblade.common.cache.CacheNames;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -139,7 +139,6 @@ public class CaptchaTokenGranter extends AbstractTokenGranter {
         String jsCode = parameters.get("jsCode");
 
         // 获取openId
-//        String openId = "odMjv5Yndizr4ybYaShMt9s9GMVI";
         String openId = WxAppletUtil.getOpenId(WxAppletConstant.STORAGE_APPID, WxAppletConstant.STORAGE_SECRET, jsCode);
 
         IUserClient userClient = SpringUtil.getBean(IUserClient.class);

+ 0 - 20
bladex/blade-auth/src/main/java/org/springblade/auth/utils/WxAppletUtil.java

@@ -1,20 +0,0 @@
-package org.springblade.auth.utils;
-
-import com.alibaba.fastjson.JSONObject;
-import org.springframework.web.client.RestTemplate;
-
-public class WxAppletUtil {
-
-    private static final RestTemplate restTemplate = new RestTemplate();
-
-    public static String getOpenId(String appid, String secret, String code) {
-
-        String wxResult = restTemplate.getForObject("https://api.weixin.qq.com/sns/jscode2session?appid="
-                + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code", String.class);
-
-        JSONObject wxResultMap = JSONObject.parseObject(wxResult);
-
-        return wxResultMap.get("openid").toString();
-    }
-
-}

+ 4 - 0
hx-common/common-tool/src/main/java/com/fjhx/constants/WxAppletConstant.java

@@ -5,4 +5,8 @@ public interface WxAppletConstant {
     String STORAGE_APPID = "wxe4a17c2bc0287527";
     String STORAGE_SECRET = "5129449cda3bb2232cde6f17f28549eb";
 
+    // 获取登录token url
+    String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+            + STORAGE_APPID + "&secret=" + STORAGE_SECRET;
+
 }

+ 79 - 0
hx-common/common-tool/src/main/java/com/fjhx/utils/WxAppletUtil.java

@@ -0,0 +1,79 @@
+package com.fjhx.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.constants.WxAppletConstant;
+import lombok.Data;
+import org.springblade.core.log.exception.ServiceException;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.Serializable;
+import java.util.Arrays;
+
+public class WxAppletUtil {
+
+    private static final RestTemplate restTemplate = new RestTemplate();
+    //    private static final BladeRedis bladeRedis = SpringUtil.getBean(BladeRedis.class);
+    private static final String APPLET_ACCESS_TOKEN_KEY = "appletAccessTokenKey";
+
+    static {
+        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
+        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(
+                Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM, MediaType.TEXT_HTML));
+        restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
+    }
+
+    public static String getOpenId(String appid, String secret, String code) {
+
+        String wxResult = restTemplate.getForObject("https://api.weixin.qq.com/sns/jscode2session?appid="
+                + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code", String.class);
+
+        JSONObject wxResultMap = JSONObject.parseObject(wxResult);
+
+        return wxResultMap.get("openid").toString();
+    }
+
+    private static String getAccessToken() {
+//        String accessToken = bladeRedis.get(APPLET_ACCESS_TOKEN_KEY);
+//        if (ObjectUtil.isNotEmpty(accessToken)) {
+//            return accessToken;
+//        }
+        AccessTokenEntity body = restTemplate.getForEntity(WxAppletConstant.GET_ACCESS_TOKEN_URL, AccessTokenEntity.class).getBody();
+
+
+        if (body == null) {
+            throw new ServiceException("微信小程序获取accessToken失败");
+        }
+
+        if (ObjectUtil.isNotEmpty(body.getErrcode())) {
+            throw new ServiceException("微信小程序获取accessToken失败, errorcode= " + body.getErrcode() + " ,errormsg= " + body.getErrmsg());
+        }
+
+        String access_token = body.getAccess_token();
+
+
+        return access_token;
+    }
+
+    public static void main(String[] args) {
+        AccessTokenEntity body = restTemplate.getForObject(WxAppletConstant.GET_ACCESS_TOKEN_URL, AccessTokenEntity.class);
+
+
+        System.out.println(body);
+    }
+
+    @Data
+    public static class AccessTokenEntity implements Serializable {
+        // 	获取到的凭证
+        private String access_token;
+        // 凭证有效时间,单位:秒。目前是7200秒之内的值。
+        private Integer expires_in;
+        // 错误码
+        private Integer errcode;
+        // 错误信息
+        private String errmsg;
+    }
+
+}