From 06f455915bb9d11caa8829942f9007809ee9ae3d Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 28 十一月 2024 16:37:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java | 389 +++++++++++++++++++++++++++---------------------------- 1 files changed, 193 insertions(+), 196 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java index 7cf2c31..31b295c 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/weChat/WeChatUtil.java @@ -1,203 +1,200 @@ -//package com.ruoyi.account.util.weChat; -// -//import cn.hutool.http.HttpRequest; -//import cn.hutool.http.HttpResponse; -//import cn.hutool.http.HttpUtil; -//import com.alibaba.fastjson.JSON; -//import com.alibaba.fastjson.JSONObject; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.beans.factory.annotation.Value; -//import org.springframework.stereotype.Component; -//import java.util.HashMap; -//import java.util.Map; -// -///** -// * 微信工具类 -// */ -//@Slf4j -//@Component -//public class WeChatUtil { -// -// @Value("${wx.appletsAppid}") -// private String wxAppletsAppid; -// -// @Value("${wx.appletsAppSecret}") -// private String wxAppletsAppSecret; -// -// @Value("{wx.officialAccountAppSecret}") -// private String officialAccountAppSecret; -// +package com.ruoyi.account.util.weChat; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import java.util.HashMap; +import java.util.Map; + +/** + * 微信工具类 + */ +@Slf4j +@Component +public class WeChatUtil { + + @Value("${wx.appletsAppid}") + private String wxAppletsAppid; + + @Value("${wx.appletsAppSecret}") + private String wxAppletsAppSecret; + // @Value("${wx.appid}") -// private String webAppId; -// + private String webAppId; + // @Value("${wx.appSecret}") -// private String webAppSecret; -// -// + private String webAppSecret; + + + /** + * 小程序使用jscode获取openid + * @param jscode + * @return + */ + public Map<String, Object> code2Session(String jscode) { + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret + + "&js_code=" + jscode + "&grant_type=authorization_code"; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + int status = response.getStatus(); + if(200 != status){ + throw new RuntimeException(response.body()); + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, Object> map = new HashMap<>(); + map.put("errcode", errcode); + if(errcode == 0){//成功 + map.put("openid", jsonObject.getString("openid")); + map.put("sessionKey", jsonObject.getString("session_key")); + map.put("unionid", jsonObject.getString("unionid")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return null; + } + + + /** + * 获取微信小程序token + * @return + */ + public String getWxAppletsAccessToken() throws Exception{ + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return ""; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + return jsonObject.getString("access_token"); + } + + + /** + * 网站应用登录 + * @param code + * @return + */ + public Map<String, String> webAccessToken(String code) throws Exception{ + String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + webAppId + "&secret=" + webAppSecret + "&code=" + code + "&grant_type=authorization_code"; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return null; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, String> map = new HashMap<>(); + if(errcode == 0){//成功 + map.put("access_token", jsonObject.getString("access_token")); + map.put("openid", jsonObject.getString("openid")); + map.put("refresh_token", jsonObject.getString("refresh_token")); + map.put("unionid", jsonObject.getString("unionid")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return map; + } + + + /** + * 获取微信个人信息 + * @param access_token + * @param openid + * @return + */ + public Map<String, Object> getUserInfo(String access_token, String openid) throws Exception{ + String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid; + HttpRequest get = HttpUtil.createGet(url); + HttpResponse response = get.execute(); + if(response.getStatus() != 200){ + return null; + } + JSONObject jsonObject = JSON.parseObject(response.body()); + int errcode = jsonObject.getIntValue("errcode"); + Map<String, Object> map = new HashMap<>(); + if(errcode == 0){//成功 + map.put("nickname", jsonObject.getString("nickname")); + map.put("openid", jsonObject.getString("openid")); + map.put("sex", jsonObject.getString("sex")); + map.put("headimgurl", jsonObject.getString("headimgurl")); + return map; + } + if(errcode == -1){//系统繁忙,此时请开发者稍候再试 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 40029){//code 无效 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + if(errcode == 45011){//频率限制,每个用户每分钟100次 + map.put("msg", jsonObject.getString("errmsg")); + return map; + } + return map; + } + + + + // /** -// * 小程序使用jscode获取openid -// * @param jscode -// * @return +// * 获取小程序二维码 +// * @param page 跳转页 例如 pages/index/index +// * @param scene 参数 a=1&b=2 // */ -// public Map<String, Object> code2Session(String jscode) throws Exception{ -// String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret -// + "&js_code=" + jscode + "&grant_type=authorization_code"; -// HttpRequest get = HttpUtil.createGet(url); -// HttpResponse response = get.execute(); -// int status = response.getStatus(); -// if(200 != status){ -// throw new RuntimeException(response.body()); -// } -// JSONObject jsonObject = JSON.parseObject(response.body()); -// int errcode = jsonObject.getIntValue("errcode"); -// Map<String, Object> map = new HashMap<>(); -// map.put("errcode", errcode); -// if(errcode == 0){//成功 -// map.put("openid", jsonObject.getString("openid")); -// map.put("sessionKey", jsonObject.getString("session_key")); -// map.put("unionid", jsonObject.getString("unionid")); -// return map; -// } -// if(errcode == -1){//系统繁忙,此时请开发者稍候再试 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 40029){//code 无效 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 45011){//频率限制,每个用户每分钟100次 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; +// public InputStream getwxacodeunlimit(String page, String scene){ +// try { +// String token = getWxAppletsAccessToken(); +// if(StringUtils.isEmpty(token)){ +// System.err.println("获取接口调用凭证失败"); +// } +// String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; +// Map<String, Object> param = new HashMap<>(); +// param.put("scene", scene); +// param.put("page", page); +// HttpHeaders httpHeaders = new HttpHeaders(); +// MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8"); +// httpHeaders.setContentType(type); +// HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders); +// ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]); +// String body1 = exchange.getBody(); +//// System.err.println(body1); +// ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); +// byte[] body = entity.getBody(); +//// System.err.println(Base64.encodeBase64String(body)); +// return new ByteArrayInputStream(body); +// }catch (Exception e){ +// e.printStackTrace(); // } // return null; // } -// -// -// /** -// * 获取微信小程序token -// * @return -// */ -// public String getWxAppletsAccessToken() throws Exception{ -// String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret; -// HttpRequest get = HttpUtil.createGet(url); -// HttpResponse response = get.execute(); -// if(response.getStatus() != 200){ -// return ""; -// } -// JSONObject jsonObject = JSON.parseObject(response.body()); -// return jsonObject.getString("access_token"); -// } -// -// -// /** -// * 网站应用登录 -// * @param code -// * @return -// */ -// public Map<String, String> webAccessToken(String code) throws Exception{ -// String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + webAppId + "&secret=" + webAppSecret + "&code=" + code + "&grant_type=authorization_code"; -// HttpRequest get = HttpUtil.createGet(url); -// HttpResponse response = get.execute(); -// if(response.getStatus() != 200){ -// return null; -// } -// JSONObject jsonObject = JSON.parseObject(response.body()); -// int errcode = jsonObject.getIntValue("errcode"); -// Map<String, String> map = new HashMap<>(); -// if(errcode == 0){//成功 -// map.put("access_token", jsonObject.getString("access_token")); -// map.put("openid", jsonObject.getString("openid")); -// map.put("refresh_token", jsonObject.getString("refresh_token")); -// map.put("unionid", jsonObject.getString("unionid")); -// return map; -// } -// if(errcode == -1){//系统繁忙,此时请开发者稍候再试 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 40029){//code 无效 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 45011){//频率限制,每个用户每分钟100次 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// return map; -// } -// -// -// /** -// * 获取微信个人信息 -// * @param access_token -// * @param openid -// * @return -// */ -// public Map<String, Object> getUserInfo(String access_token, String openid) throws Exception{ -// String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid; -// HttpRequest get = HttpUtil.createGet(url); -// HttpResponse response = get.execute(); -// if(response.getStatus() != 200){ -// return null; -// } -// JSONObject jsonObject = JSON.parseObject(response.body()); -// int errcode = jsonObject.getIntValue("errcode"); -// Map<String, Object> map = new HashMap<>(); -// if(errcode == 0){//成功 -// map.put("nickname", jsonObject.getString("nickname")); -// map.put("openid", jsonObject.getString("openid")); -// map.put("sex", jsonObject.getString("sex")); -// map.put("headimgurl", jsonObject.getString("headimgurl")); -// return map; -// } -// if(errcode == -1){//系统繁忙,此时请开发者稍候再试 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 40029){//code 无效 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// if(errcode == 45011){//频率限制,每个用户每分钟100次 -// map.put("msg", jsonObject.getString("errmsg")); -// return map; -// } -// return map; -// } -// -// -// -// -//// /** -//// * 获取小程序二维码 -//// * @param page 跳转页 例如 pages/index/index -//// * @param scene 参数 a=1&b=2 -//// */ -//// public InputStream getwxacodeunlimit(String page, String scene){ -//// try { -//// String token = getWxAppletsAccessToken(); -//// if(StringUtils.isEmpty(token)){ -//// System.err.println("获取接口调用凭证失败"); -//// } -//// String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; -//// Map<String, Object> param = new HashMap<>(); -//// param.put("scene", scene); -//// param.put("page", page); -//// HttpHeaders httpHeaders = new HttpHeaders(); -//// MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8"); -//// httpHeaders.setContentType(type); -//// HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders); -//// ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class, new Object[0]); -//// String body1 = exchange.getBody(); -////// System.err.println(body1); -//// ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); -//// byte[] body = entity.getBody(); -////// System.err.println(Base64.encodeBase64String(body)); -//// return new ByteArrayInputStream(body); -//// }catch (Exception e){ -//// e.printStackTrace(); -//// } -//// return null; -//// } -//} +} -- Gitblit v1.7.1