From 179c4d64313c9b7572778da4aaaf6c6584fe457d Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 20 五月 2025 23:48:08 +0800 Subject: [PATCH] 修改文件上传类型限制 --- springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxMessagePushApi.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 156 insertions(+), 0 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxMessagePushApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxMessagePushApi.java new file mode 100644 index 0000000..eef70f7 --- /dev/null +++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxMessagePushApi.java @@ -0,0 +1,156 @@ +package com.panzhihua.applets.api; + +import java.io.PrintWriter; +import java.security.MessageDigest; +import java.util.Arrays; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.panzhihua.common.utlis.StringUtils; +import com.panzhihua.common.utlis.WxUtil; +import com.panzhihua.common.utlis.WxXCXTempSend; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping("/wx/push/") +public class WxMessagePushApi { + + private String token = "01A9CB2234D7CBD0AC61B75EB1263805"; + + private String url = "www.taobao.com";// 图文跳转地址 + + private String thumbUrl = "https://www.psciio.com//idcard/f986ba3ae7a241d9bce5cb568adec7da.jpg";// 图片地址 + + @Resource + private WxXCXTempSend wxXCXTempSend; + + /** + * 微信接口配置信息认证接口<br> + * 需要正确响应微信发送的Token验证。 加密/校验流程如下:<br> + * 1. 将token、timestamp、nonce三个参数进行字典序排序<br> + * 2. 将三个参数字符串拼接成一个字符串进行sha1加密<br> + * 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 + */ + @RequestMapping("/cgi") + public void cgi(HttpServletRequest request, HttpServletResponse response) { + boolean isGet = request.getMethod().toLowerCase().equals("get"); + // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 + try { + if (isGet) { + String signature = request.getParameter("signature"); + // 时间戳 + String timestamp = request.getParameter("timestamp"); + // 随机数 + String nonce = request.getParameter("nonce"); + // 随机字符串 + String echostr = request.getParameter("echostr"); + log.info("signature = " + signature + " , timestamp = " + timestamp + " , nonce = " + nonce + + " , echostr = " + echostr); + String[] strArray = new String[] {token, timestamp, nonce}; + Arrays.sort(strArray); + StringBuilder sb = new StringBuilder(); + for (String str : strArray) { + sb.append(str); + } + // SHA1签名生成 + MessageDigest md = MessageDigest.getInstance("SHA-1"); + md.update(sb.toString().getBytes()); + byte[] digest = md.digest(); + + StringBuffer hexstr = new StringBuffer(); + String shaHex = ""; + for (int i = 0; i < digest.length; i++) { + shaHex = Integer.toHexString(digest[i] & 0xFF); + if (shaHex.length() < 2) { + hexstr.append(0); + } + hexstr.append(shaHex); + } + + if (hexstr.toString().equals(signature)) { + response.getOutputStream().write(echostr.getBytes()); + } + + } else { + // 进入POST聊天处理 + // 将请求、响应的编码均设置为UTF-8(防止中文乱码) + request.setCharacterEncoding("UTF-8"); + response.setCharacterEncoding("UTF-8"); + // 接收消息并返回消息 + String result = acceptMessage(request, response); + + // 响应消息 + PrintWriter out = response.getWriter(); + out.print(result); + out.close(); + } + } catch (Exception ex) { + log.error("微信帐号接口配置失败!", ex); + ex.printStackTrace(); + } + } + + /** + * 接受到微信接口数据 + * + * @param request + * @param response + * @return + */ + private String acceptMessage(HttpServletRequest request, HttpServletResponse response) { + String respMessage = ""; + String inputLine = ""; + String notityXml = ""; + try { + // 接收数据 + while ((inputLine = request.getReader().readLine()) != null) { + notityXml += inputLine; + } + + // xml请求解析 + JSONObject requestJson = JSON.parseObject(notityXml); + log.info(">>>>>>>>>>>>>" + requestJson.toString()); + // 发送方帐号(open_id) + String fromUserName = requestJson.get("FromUserName").toString(); + // 公众帐号 + String toUserName = requestJson.get("ToUserName").toString(); + // 消息类型 + String msgType = requestJson.get("MsgType").toString(); + // String Event = requestJson.get("Event").toString(); //SCAN 为扫描信息 VIEW 公众号底部点击事件 + log.info("fromUserName = " + fromUserName + " , ToUserName = " + toUserName + " , msgType = " + msgType); + + String access_token = wxXCXTempSend.getAccessToken();// 获取access_token + + // 公众号关注事件消息 + if (msgType.equals("event")) { + // log.info("公众号被关注事件.........."); + } else if (msgType.equals("text")) { + // if(StringUtils.isNotEmpty(access_token)){ + // String mediaId = wxXCXTempSend.getMediaId(access_token);//获取mediaId + // WxUtil.sendKfImagesMessage(fromUserName,access_token,mediaId); + // } + // log.info("公众号接受文字.........."); + } else if (msgType.equals("image")) { + // log.info("公众号接受图片.........."); + } else if (msgType.equals("miniprogrampage")) { + if (StringUtils.isNotEmpty(access_token)) { + String mediaId = wxXCXTempSend.getMediaId(access_token);// 获取mediaId + WxUtil.sendKfImagesMessage(fromUserName, access_token, mediaId); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return respMessage; + } + +} -- Gitblit v1.7.1