diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMiniUtils.java b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMiniUtils.java index aae056fc..1b7b8421 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMiniUtils.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMiniUtils.java @@ -1,113 +1,113 @@ -//package cn.ysk.cashier.utils; -// -//import cn.hutool.core.util.ObjectUtil; -//import cn.hutool.http.HttpRequest; -//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.LinkedHashMap; -//import java.util.Map; -// -//@Component -//@Slf4j -//public class WxMiniUtils { -// -// @Value("${wx.mini.user.appId}") -// private String appId; -// -// @Value("${wx.mini.user.secrete}") -// private String secrete; -// -// @Value("${wx.mini.user.msgId.currentCall}") -// private String currentCallTempId; -// -// -// static LinkedHashMap linkedHashMap=new LinkedHashMap<>(); -// -// static { -// -// linkedHashMap.put("40001","获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口"); -// linkedHashMap.put("40003","不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID"); -// linkedHashMap.put("40014","不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口"); -// linkedHashMap.put("40037","不合法的 template_id"); -// linkedHashMap.put("43101","用户未订阅消息"); -// linkedHashMap.put("43107","订阅消息能力封禁"); -// linkedHashMap.put("43108","并发下发消息给同一个粉丝"); -// linkedHashMap.put("45168","命中敏感词"); -// linkedHashMap.put("47003","参数错误"); -// -// } -// -// public JSONObject getAccessToken(){ -// String requestUrl = "https://api.weixin.qq.com/cgi-bin/token"; -// Map requestUrlParam = new HashMap<>(); -// //小程序appId -// requestUrlParam.put("appid", appId); -// //小程序secret -// requestUrlParam.put("secret", secrete); -// //默认参数 -// requestUrlParam.put("grant_type", "client_credential"); -// return JSON.parseObject(HttpUtil.get(requestUrl,requestUrlParam)); -// } -// -// public static void main(String[] args) { -// String id ="kSxJL9TR4s_UmOmNLE"; -//// sendStockWarnMsg("123", "1231", "1231", "23321", id); -// } -// -// -// public JSONObject sendTempMsg(String tempId, String toUserOpenId, Map data) { -// log.info("开始发送微信模板消息, 接收用户openId: {}, 消息数据: {}", toUserOpenId, data); -// JSONObject object= getAccessToken(); -// String accessToken=object.get("access_token")+""; -// -// JSONObject object1=new JSONObject(); -// -// object1.put("template_id", tempId); -// object1.put("touser", toUserOpenId); -// object1.put("data",data); -// -// object1.put("miniprogram_state","trial"); -// object1.put("lang","zh_CN"); -// -// String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); -// log.info("微信模板消息发送成功,相应内容:{}",response); -// JSONObject resObj=JSONObject.parseObject(response); -// if(ObjectUtil.isNotEmpty(resObj)&&ObjectUtil.isNotNull(resObj)&&"0".equals(resObj.get("errcode")+"")){ -// return resObj; -// } -// -// throw new RuntimeException(linkedHashMap.getOrDefault(resObj.get("errcode") + "", "未知错误")); -// } -// -// public void sendNearCallMsg(String shopName, String state, String callNum, String currentNum, String note, String openId) { -// Map data = new HashMap() {{ -// put("thing1", new HashMap() {{ -// put("value", shopName); -// }}); -// put("phrase2", new HashMap() {{ -// put("value", state); -// }}); -// put("character_string3", new HashMap() {{ -// put("value", callNum); -// }}); -// put("character_string4", new HashMap() {{ -// put("value", currentNum); -// }}); -// put("thing5", new HashMap() {{ -// put("value", note); -// }}); -// }}; -// log.info("开始发送排号到号消息, 接收用户openId: {}, 消息数据: {}", openId, data); -// try { -// sendTempMsg(currentCallTempId, openId, data); -// } catch (Exception e) { -// log.error("发送失败, openId:{}, msg: {}", openId, e.getMessage()); -// } -// } -//} +package cn.ysk.cashier.utils; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +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.LinkedHashMap; +import java.util.Map; + +@Component +@Slf4j +public class WxMiniUtils { + + @Value("${wx.mini.user.appId}") + private String appId; + + @Value("${wx.mini.user.secrete}") + private String secrete; + + @Value("${wx.mini.user.msgId.currentCall}") + private String currentCallTempId; + + + static LinkedHashMap linkedHashMap=new LinkedHashMap<>(); + + static { + + linkedHashMap.put("40001","获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口"); + linkedHashMap.put("40003","不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID"); + linkedHashMap.put("40014","不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口"); + linkedHashMap.put("40037","不合法的 template_id"); + linkedHashMap.put("43101","用户未订阅消息"); + linkedHashMap.put("43107","订阅消息能力封禁"); + linkedHashMap.put("43108","并发下发消息给同一个粉丝"); + linkedHashMap.put("45168","命中敏感词"); + linkedHashMap.put("47003","参数错误"); + + } + + public JSONObject getAccessToken(){ + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token"; + Map requestUrlParam = new HashMap<>(); + //小程序appId + requestUrlParam.put("appid", appId); + //小程序secret + requestUrlParam.put("secret", secrete); + //默认参数 + requestUrlParam.put("grant_type", "client_credential"); + return JSON.parseObject(HttpUtil.get(requestUrl,requestUrlParam)); + } + + public static void main(String[] args) { + String id ="kSxJL9TR4s_UmOmNLE"; +// sendStockWarnMsg("123", "1231", "1231", "23321", id); + } + + + public JSONObject sendTempMsg(String tempId, String toUserOpenId, Map data) { + log.info("开始发送微信模板消息, 接收用户openId: {}, 消息数据: {}", toUserOpenId, data); + JSONObject object= getAccessToken(); + String accessToken=object.get("access_token")+""; + + JSONObject object1=new JSONObject(); + + object1.put("template_id", tempId); + object1.put("touser", toUserOpenId); + object1.put("data",data); + + object1.put("miniprogram_state","trial"); + object1.put("lang","zh_CN"); + + String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); + log.info("微信模板消息发送成功,相应内容:{}",response); + JSONObject resObj=JSONObject.parseObject(response); + if(ObjectUtil.isNotEmpty(resObj)&&ObjectUtil.isNotNull(resObj)&&"0".equals(resObj.get("errcode")+"")){ + return resObj; + } + + throw new RuntimeException(linkedHashMap.getOrDefault(resObj.get("errcode") + "", "未知错误")); + } + + public void sendNearCallMsg(String shopName, String state, String callNum, String currentNum, String note, String openId) { + Map data = new HashMap() {{ + put("thing1", new HashMap() {{ + put("value", shopName); + }}); + put("phrase2", new HashMap() {{ + put("value", state); + }}); + put("character_string3", new HashMap() {{ + put("value", callNum); + }}); + put("character_string4", new HashMap() {{ + put("value", currentNum); + }}); + put("thing5", new HashMap() {{ + put("value", note); + }}); + }}; + log.info("开始发送排号到号消息, 接收用户openId: {}, 消息数据: {}", openId, data); + try { + sendTempMsg(currentCallTempId, openId, data); + } catch (Exception e) { + log.error("发送失败, openId:{}, msg: {}", openId, e.getMessage()); + } + } +} diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index 27f66d89..2cf03921 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -88,8 +88,18 @@ wx: operationMsgTmpId: wFdoUG-dUT7bDRHq8bMJD9CF5TjyH9x_uJQgQByZqHg warnMsgTmpId: C08OUr80x6wGmUN1zpFhSQ3Sv7VF5vksdZigiEx2pD0 + mini: + user: + appId: wxd88fffa983758a30 + secrete: a34a61adc0602118b49400baa8812454 + msgId: + nearCall: yxOjWK-KjMEZ BaHWgDJJpHiUPXN6JWgr7u9y65RIWM + currentCall: 3BgFazRpVlvreh5z9u4cNPVeclXKSQfh-r3x2 bYx4 gateway: url: https://gateway.api.sxczgkj.cn/gate-service/ client: backUrl: https://cashierclient.sxczgkj.cn/cashier-client/notify/notifyPay +logging: + level: + root: error