package com.ynxbd.wx.wxfactory.base.auth; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.http.OkHttpHelper; import com.ynxbd.wx.wxfactory.base.auth.models.RespAccessToken; import com.ynxbd.wx.wxfactory.bean.SnsOath2AccessToken; import com.ynxbd.wx.wxfactory.bean.SnsUserInfo; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import weixin.popular.util.EmojiUtil; @Slf4j @NoArgsConstructor public class Client { /** * 获取微信token * * @param appId appId * @param appSecret appSecret * @return accessToken */ public synchronized RespAccessToken getAccessToken(String appId, String appSecret) { String respJson = OkHttpHelper.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential", params -> { params.put("appid", appId); params.put("secret", appSecret); }); if (respJson == null) { return new RespAccessToken(); } RespAccessToken response = JsonHelper.parseObject(respJson, RespAccessToken.class); if (response == null) { log.error("[access_token]请求失败 resp={}", respJson); return new RespAccessToken(); } return response; } /** * 获取微信token * * @param appId appId * @param appSecret appSecret * @return accessToken */ public SnsOath2AccessToken oauth2AccessToken(String appId, String appSecret, String code) { String respJson = OkHttpHelper.get("https://api.weixin.qq.com/sns/oauth2/access_token", params -> { params.put("appid", appId); params.put("secret", appSecret); params.put("code", code); params.put("grant_type", "authorization_code"); }); if (respJson == null) { log.error("[oath2]请求失败"); return null; } SnsOath2AccessToken response = JsonHelper.parseObject(respJson, SnsOath2AccessToken.class); if (response == null) { log.error("[oath2]请求失败 resp={}", respJson); return null; } if (!response.isSuccess()) { log.error("[oath2]请求失败 errCode={}, errMsg={}", response.getErrCode(), response.getErrMsg()); return null; } return response; } public SnsUserInfo snsUserInfo(String accessToken, String openid, String lang, Integer emoji) { String respJson = OkHttpHelper.get("https://api.weixin.qq.com/sns/userinfo", params -> { params.put("access_token", accessToken); params.put("openid", openid); params.put("lang", lang); }); if (respJson == null) { log.error("[sns-user_info]请求失败"); return null; } SnsUserInfo response = JsonHelper.parseObject(respJson, SnsUserInfo.class); if (response == null) { log.error("[sns-user_info]请求失败 respJson={}", respJson); return null; } if (!response.isSuccess()) { log.error("[sns-user_info]请求失败 errCode={}, errMsg={}", response.getErrCode(), response.getErrMsg()); } if (emoji != 0 && response.getNickname() != null) { response.setNickname_emoji(EmojiUtil.parse(response.getNickname(), emoji)); } return response; } // public static String getSnsToken() { // if (ACCESS_TOKEN_CACHE == null) { // createAccessTokenCache(); // } // String accessToken = ACCESS_TOKEN_CACHE.get("access_token"); // if (ObjectUtils.isEmpty(accessToken)) { // Map map = HttpClientHelper.createParamsMap(); // map.put("appid", WeChatConfig.getAppId()); // map.put("secret", WeChatConfig.getAppSecret()); // JSONObject jsonObject = HttpClientHelper.getJson("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential", map, null); // if (jsonObject == null) { // log.error("[微信]获取accessToken失败{}", JSONObject.toJSONString(jsonObject)); // return null; // } // accessToken = jsonObject.getString("access_token"); // if (accessToken != null) { // ACCESS_TOKEN_CACHE.put("access_token", accessToken); // } // } // return accessToken; // } }