package com.smtaiserver.smtaiserver.weixinLogin; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Map; /** * description: WeChatUtils 微信获取用户工具类
* * @date: 2021/8/19 0019 上午 10:05
* @author: William
* version: 1.0
*/ public class WeChatUtils { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); /** * 获取微信accessToken路径 */ private static final String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; /** * 微信appId */ private static final String APP_ID = "wx4ea2dca37170074c"; /** * 微信appSecret */ private static final String APP_SECRET = "56f6be546f1c8c010d1dae20a6c1bd72"; /** * description: getAccessToken 根据code获取accessToken
* version: 1.0
* @date: 2021/8/19 0019 上午 10:10
* @author: William
* @param code 微信用户授权code * @return java.util.Map */ public static Map getAccessToken(String code){ return getAccessToken(code,APP_ID,APP_SECRET); } /** * description: getAccessToken 根据code获取微信用户信息,返回map如果正确map包含access_token ,如果错误则包含:errcode
* version: 1.0
* @date: 2021/8/19 0019 上午 10:11
* @author: William
* @param code 微信授权code * @param appId 微信appId * @param appSecret 微信appSecret * @return java.util.Map */ public static Map getAccessToken(String code,String appId,String appSecret){ //判断所有字段不能为空 if(isAnyBlank(code,appId,appSecret)){ throw new IllegalArgumentException("参数错误"); } String requestUrl = GET_ACCESS_TOKEN_URL.replace("APPID",appId) .replace("SECRET",appSecret).replace("CODE",code); String result = HttpUtil.get(requestUrl); return parseMap(result); } /** * description: isAnyBlank 判断是否存在空字符串,Hutool未编写
* version: 1.0
* @date: 2021/8/19 0019 上午 10:25
* @author: William
* @param strs 字符串 * @return java.lang.Boolean */ public static Boolean isAnyBlank(CharSequence... strs){ //如果为空直接返回true if (ArrayUtil.isEmpty(strs)) { return true; } for (CharSequence str : strs) { if (StrUtil.isBlank(str)) { return true; } } return false; } public static Map parseMap(String json) { try { return OBJECT_MAPPER.readValue(json, new TypeReference>() {}); } catch (Exception e) { throw new RuntimeException("JSON 解析失败", e); } } }