You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							135 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							135 lines
						
					
					
						
							5.2 KiB
						
					
					
				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.WxCacheHelper;
 | 
						|
import com.ynxbd.wx.wxfactory.base.auth.models.RespAccessToken;
 | 
						|
import com.ynxbd.wx.wxfactory.base.auth.models.RespJsapiTicket;
 | 
						|
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;
 | 
						|
    }
 | 
						|
 | 
						|
    public synchronized RespJsapiTicket getJsapiTicket() {
 | 
						|
        String respJson = OkHttpHelper.get("https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi", params -> {
 | 
						|
            params.put("access_token", WxCacheHelper.getAccessToken());
 | 
						|
        });
 | 
						|
        if (respJson == null) {
 | 
						|
            return new RespJsapiTicket();
 | 
						|
        }
 | 
						|
        RespJsapiTicket response = JsonHelper.parseObject(respJson, RespJsapiTicket.class);
 | 
						|
        if (response == null) {
 | 
						|
            log.error("[jsapi_ticket]请求失败 resp={}", respJson);
 | 
						|
            return new RespJsapiTicket();
 | 
						|
        }
 | 
						|
        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<String, Object> 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;
 | 
						|
//    }
 | 
						|
}
 | 
						|
 |