|
|
@@ -0,0 +1,98 @@
|
|
|
+package org.springblade.school.util;
|
|
|
+
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+public class WxUtil {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得公众号token
|
|
|
+ */
|
|
|
+ public static Map<String, String> getToken(String appId, String appSecret) {
|
|
|
+
|
|
|
+ Map<String,String> tokenMap = new HashMap<>();
|
|
|
+ String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
|
|
|
+ try {
|
|
|
+ String response = HttpUtil.get(requestUrl);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(response);
|
|
|
+ if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
|
|
|
+ String accessToken = String.valueOf(jsonObject.get("access_token"));
|
|
|
+ if (ObjectUtil.isEmpty(accessToken)){
|
|
|
+ throw new RuntimeException("获取token出现异常");
|
|
|
+ }else {
|
|
|
+ tokenMap.put("accessToken", accessToken);
|
|
|
+ }
|
|
|
+ }else if (jsonObject.getString("errcode").equals("-1")) {
|
|
|
+ throw new RuntimeException("系统繁忙,此时请开发者稍候再试");
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("不合法的telCode(telCode不存在、已过期或者使用过)");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("获取token出现异常");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ return tokenMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得用户列表
|
|
|
+ */
|
|
|
+ public static Map<String, Object> getUserOpenId(String accessToken){
|
|
|
+ Map<String, Object> openIdMap = new HashMap<>();
|
|
|
+ String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+accessToken;
|
|
|
+ try {
|
|
|
+ String response = HttpUtil.get(requestUrl);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(response);
|
|
|
+ if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
|
|
|
+ JSONObject data = jsonObject.getJSONObject("data");
|
|
|
+ if (ObjectUtil.isNotEmpty(data.get("openid"))){
|
|
|
+ openIdMap.put("openIds",data.getJSONArray("openid"));
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("用户获取失败"+jsonObject.get("errmsg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("获取用户openid出现异常");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return openIdMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得用户信息
|
|
|
+ */
|
|
|
+ public static Map<String, String > getUserInfo(String accessToken, String openId){
|
|
|
+ Map<String,String> userMap = new HashMap<>();
|
|
|
+ String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN";
|
|
|
+ try {
|
|
|
+ String response = HttpUtil.get(requestUrl);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(response);
|
|
|
+ if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
|
|
|
+ String unionid = String.valueOf(jsonObject.get("unionid"));
|
|
|
+ if (ObjectUtil.isEmpty(unionid)){
|
|
|
+ throw new RuntimeException("获取unionid出现异常");
|
|
|
+ }else {
|
|
|
+ userMap.put("openid", openId);
|
|
|
+ userMap.put("unionid", unionid);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("用户获取失败"+jsonObject.get("errmsg"));
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("获取unionid出现异常");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ return userMap;
|
|
|
+ }
|
|
|
+}
|