From 37061d08c8cd7a5097424d596f8926d9de5cdddf Mon Sep 17 00:00:00 2001 From: zyy <121611808@qq.com> Date: Thu, 6 Aug 2020 22:13:55 +0800 Subject: [PATCH] up --- .idea/compiler.xml | 5 ++ .idea/google-java-format.xml | 6 ++ .idea/misc.xml | 2 +- pom.xml | 21 ++++- .../bsd/say/controller/WechatController.java | 78 ++++++++++++------- 5 files changed, 82 insertions(+), 30 deletions(-) create mode 100644 .idea/google-java-format.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 99890b0..c0dec64 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,4 +10,9 @@ + + + \ No newline at end of file diff --git a/.idea/google-java-format.xml b/.idea/google-java-format.xml new file mode 100644 index 0000000..2aa056d --- /dev/null +++ b/.idea/google-java-format.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 4b661a5..68eaee3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index e90d187..19050fc 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,8 @@ org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE - + + @@ -199,6 +200,24 @@ dom4j 1.6.1 + + + + + + org.apache.directory.studio + org.dom4j.dom4j + 1.6.1 + + + + com.thoughtworks.xstream + xstream + 1.4.8 + + + + diff --git a/src/main/java/com/bsd/say/controller/WechatController.java b/src/main/java/com/bsd/say/controller/WechatController.java index dd3ddf5..10bbfab 100644 --- a/src/main/java/com/bsd/say/controller/WechatController.java +++ b/src/main/java/com/bsd/say/controller/WechatController.java @@ -1,27 +1,18 @@ package com.bsd.say.controller; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.bsd.say.util.HttpRequestUtils; import com.bsd.say.util.LogUtils; -import com.bsd.say.util.ResponseUtil; +import com.bsd.say.util.MessageUtil; import com.bsd.say.util.Xml2MapUtil; import com.bsd.say.util.wechat.AesException; import com.bsd.say.util.wechat.WXBizMsgCrypt; -import com.bsd.say.util.wechat.WeChatUtils; import org.apache.commons.collections.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.dom4j.Document; import org.dom4j.DocumentException; -import org.dom4j.DocumentHelper; -import org.dom4j.Element; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; - import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -31,13 +22,13 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import java.io.StringReader; -import java.util.Calendar; -import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("wechat") public class WechatController { + + @Value("${wechat.aesKey}") private String aesKey; @Value("${wechat.componentToken}") @@ -49,29 +40,55 @@ public class WechatController { @Resource private RedisTemplate redisTemplate; Logger logger = LogUtils.getBussinessLogger(); + + /** * 接收component_verify_ticket 或 authorized事件 */ - @RequestMapping(value = "/getComponentVerifyTicket") + @PostMapping(value = "/getComponentVerifyTicket") @ResponseBody - public void getComponentVerifyTicket(HttpServletRequest request, HttpServletResponse response) throws IOException, AesException, DocumentException { + public void getComponentVerifyTicket(HttpServletRequest request, HttpServletResponse response) throws Exception { String nonce = request.getParameter("nonce"); String timestamp = request.getParameter("timestamp"); String signature = request.getParameter("signature"); String msgSignature = request.getParameter("msg_signature"); // String postData = request.getParameter("postData"); - System.out.println("nonce: " + nonce); - System.out.println("timestamp: " + timestamp); - System.out.println("msgSignature: " + msgSignature); + logger.info("nonce: " + nonce); + logger.info("timestamp: " + timestamp); + logger.info("signature: " + signature); + logger.info("msgSignature: " + msgSignature); + + + + +// Map map= MessageUtil.parseXml(request); + +// System.out.println(map.toString()); + + + + + + + + + + + + + + + + StringBuilder sb = new StringBuilder(); BufferedReader in = request.getReader(); String line; - while((line = in.readLine()) != null) { + while ((line = in.readLine()) != null) { sb.append(line); } String postData = sb.toString(); - System.out.println("postData: " + postData); + logger.info("postData: " + postData); try { //这个类是微信官网提供的解密类,需要用到消息校验Token 消息加密Key和服务平台appid WXBizMsgCrypt pc = new WXBizMsgCrypt(componentToken, @@ -98,9 +115,12 @@ public class WechatController { Map result = Xml2MapUtil.xml2map(xml);// 将xml转为map String componentVerifyTicket = MapUtils.getString(result, "ComponentVerifyTicket"); + + logger.info("----verify ticket--" + componentVerifyTicket); + // 存储平台授权票据,保存ticket String TICKET = componentVerifyTicket; - redisTemplate.opsForValue().set("component_verify_ticket",TICKET); + redisTemplate.opsForValue().set("component_verify_ticket", TICKET); } catch (Exception e) { // log.error(e.getMessage(), e); e.printStackTrace(); @@ -110,20 +130,22 @@ public class WechatController { /** * 工具类:回复微信服务器"文本消息" + * * @param response * @param returnvaleue */ - public void output(HttpServletResponse response,String returnvaleue){ + public void output(HttpServletResponse response, String returnvaleue) { try { PrintWriter pw = response.getWriter(); pw.write(returnvaleue); -// System.out.println("****************returnvaleue***************="+returnvaleue); +// logger.info("****************returnvaleue***************="+returnvaleue); pw.flush(); } catch (IOException e) { e.printStackTrace(); } } -// /** + + // /** // * 处理授权事件的推送 // * // * @param request @@ -160,7 +182,7 @@ public class WechatController { // } // // - @RequestMapping(value="/{appid}/callback",method={RequestMethod.GET,RequestMethod.POST}) + @RequestMapping(value = "/{appid}/callback", method = {RequestMethod.GET, RequestMethod.POST}) public void callBackEvent(HttpServletRequest request, HttpServletResponse response) throws IOException, DocumentException, AesException { // String msgSignature = request.getParameter("msg_signature"); @@ -248,7 +270,7 @@ public class WechatController { // try { // WXBizMsgCrypt pc = new WXBizMsgCrypt(componentToken, aesKey, componentAppId); // returnvaleue = pc.encryptMsg(replyMsg, createTime.toString(), "easemob"); -//// System.out.println("------------------加密后的返回内容 returnvaleue: "+returnvaleue); +//// logger.info("------------------加密后的返回内容 returnvaleue: "+returnvaleue); // } catch (AesException e) { // e.printStackTrace(); // } @@ -269,7 +291,7 @@ public class WechatController { // public void replyApiTextMessage(HttpServletRequest request, HttpServletResponse response, String auth_code, String fromUserName) throws DocumentException, IOException { // String authorization_code = auth_code; // // 得到微信授权成功的消息后,应该立刻进行处理!!相关信息只会在首次授权的时候推送过来 -// System.out.println("------step.1----使用客服消息接口回复粉丝----逻辑开始-------------------------"); +// logger.info("------step.1----使用客服消息接口回复粉丝----逻辑开始-------------------------"); // try { // ApiComponentToken apiComponentToken = new ApiComponentToken(); // apiComponentToken.setComponent_appid(COMPONENT_APPID); @@ -278,9 +300,9 @@ public class WechatController { // apiComponentToken.setComponent_verify_ticket(entity.getTicket()); // String component_access_token = JwThirdAPI.getAccessToken(apiComponentToken); // -// System.out.println("------step.2----使用客服消息接口回复粉丝------- component_access_token = "+component_access_token + "---------authorization_code = "+authorization_code); +// logger.info("------step.2----使用客服消息接口回复粉丝------- component_access_token = "+component_access_token + "---------authorization_code = "+authorization_code); // net.sf.json.JSONObject authorizationInfoJson = JwThirdAPI.getApiQueryAuthInfo(COMPONENT_APPID, authorization_code, component_access_token); -// System.out.println("------step.3----使用客服消息接口回复粉丝-------------- 获取authorizationInfoJson = "+authorizationInfoJson); +// logger.info("------step.3----使用客服消息接口回复粉丝-------------- 获取authorizationInfoJson = "+authorizationInfoJson); // net.sf.json.JSONObject infoJson = authorizationInfoJson.getJSONObject("authorization_info"); // String authorizer_access_token = infoJson.getString("authorizer_access_token"); //