/** * 处理微信发来的请求 * * @param request * @return */ @Override public String processRequest(HttpServletRequest request) { String respMessage = null; // 默认返回的文本消息内容 String respContent = "请求处理异常,请稍候尝试!"; // xml请求解析 Map<String, String> requestMap = null; try { requestMap = MsgUtil.parseXml(request); } catch (Exception e) { e.printStackTrace(); } // 公众帐号 String fromUserName = requestMap.get("FromUserName"); // 发送方帐号(open_id) String toUserName = requestMap.get("ToUserName"); // 消息类型 String msgType = requestMap.get("MsgType"); // 消息内容 String msgContent = requestMap.get("Content"); // 回复文本消息 TextMessage textMessage = new TextMessage(); textMessage.setToUserName(fromUserName); textMessage.setFromUserName(toUserName); textMessage.setCreateTime(new Date().getTime()); textMessage.setMsgType(ConstStr.RESP_MESSAGE_TYPE_TEXT); textMessage.setFuncFlag(0); // 文本消息 if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_TEXT)) { // respContent = "您发送的是文本消息!"; respContent = msgContent; } // 图片消息 else if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_IMAGE)) { respContent = "您发送的是图片消息!"; } // 地理位置消息 else if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_LOCATION)) { respContent = "您发送的是地理位置消息!"; } // 链接消息 else if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_LINK)) { respContent = "您发送的是链接消息!"; } // 音频消息 else if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_VOICE)) { respContent = "您发送的是音频消息!"; } // 事件推送 else if (msgType.equals(ConstStr.REQ_MESSAGE_TYPE_EVENT)) { // 事件类型 String eventType = requestMap.get("Event"); // 订阅 if (eventType.equals(ConstStr.EVENT_TYPE_SUBSCRIBE)) { respContent = "谢谢您的关注!"; } // 取消订阅 else if (eventType.equals(ConstStr.EVENT_TYPE_UNSUBSCRIBE)) { // TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息 } // 自定义菜单点击事件 else if (eventType.equals(ConstStr.EVENT_TYPE_CLICK)) { // 事件KEY值,与创建自定义菜单时指定的KEY值对应 String eventKey = requestMap.get("EventKey"); if (eventKey.equals("11")) { respMessage = msgService.createCreditsQueryNewsMessage(fromUserName, toUserName); } else if (eventKey.equals("12")) { respMessage = msgService.createCreditsExchangeNewsMessage(fromUserName, toUserName); return respMessage; } else if (eventKey.equals("14")) { respMessage = msgService.createAboutUsNewsMessage(fromUserName, toUserName); return respMessage; } else if (eventKey.equals("21")) { respMessage = msgService.createBusinessNewsMessage(fromUserName, toUserName); return respMessage; } else if (eventKey.equals("22")) { respMessage = msgService.createNetWorkNewsMessage(fromUserName, toUserName); return respMessage; } else if (eventKey.equals("24")) { respMessage = msgService.createFinancialProductsNewsMessage(fromUserName, toUserName); return respMessage; } else if (eventKey.equals("31")) { respMessage = msgService.createActivityNewsMessage(fromUserName, toUserName); return respMessage; } else { textMessage.setContent(respContent); respMessage = MsgUtil.textMessageToXml(textMessage); return respMessage; } } } textMessage.setContent(respContent); respMessage = MsgUtil.textMessageToXml(textMessage); return respMessage; }