微信后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

295 lines
17 KiB

//package com.ynxbd.wx.servlet;
//
//import com.ynxbd.api.utils.MessageUtil;
//import com.ynxbd.api.config.WeChatConfig;
//import org.apache.log4j.Logger;
//import weixin.popular.bean.message.EventMessage;
//import weixin.popular.bean.xmlmessage.XMLMessage;
//import weixin.popular.bean.xmlmessage.XMLNewsMessage;
//import weixin.popular.bean.xmlmessage.XMLNewsMessage.Article;
//import weixin.popular.bean.xmlmessage.XMLTextMessage;
//import weixin.popular.support.ExpireKey;
//import weixin.popular.support.expirekey.DefaultExpireKey;
//import weixin.popular.util.SignatureUtil;
//import weixin.popular.util.StreamUtils;
//import weixin.popular.util.XMLConverUtil;
//
//import javax.servlet.ServletException;
//import javax.servlet.ServletInputStream;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.io.OutputStream;
//import java.io.UnsupportedEncodingException;
//import java.nio.charset.Charset;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//public class DemoServlet2 extends HttpServlet {
// private final static Logger logger = Logger.getLogger(DemoServlet2.class);
//
// // 重复通知过滤
// private final static ExpireKey expireKey = new DefaultExpireKey();
//
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // 验证服务器的有效性
// ServletInputStream inputStream = request.getInputStream();
// ServletOutputStream outputStream = response.getOutputStream();
// String signature = request.getParameter("signature");
// String timestamp = request.getParameter("timestamp");
// String nonce = request.getParameter("nonce");
// String echostr = request.getParameter("echostr");
//
// // 首次请求申请验证,返回echostr
// if (echostr != null) {
// outputStreamWrite(outputStream, echostr);
// return;
// }
//
// // 验证请求签名
// if (!signature.equals(SignatureUtil.generateEventMessageSignature(WeChatConfig.getToken(), timestamp, nonce))) {
// System.out.println("The request signature is invalid");
// return;
// }
//
// if (inputStream != null) {
// // 转换XML
// EventMessage eventMessage = XMLConverUtil.convertToObject(EventMessage.class, inputStream);
// String key = eventMessage.getFromUserName() + "__" + eventMessage.getToUserName() + "__"
// + eventMessage.getMsgId() + "__" + eventMessage.getCreateTime();
// if (expireKey.exists(key)) {
// // 重复通知不作处理
// return;
// } else {
// expireKey.add(key);
// }
//
// // 创建回复
// XMLMessage xmlTextMessage = new XMLTextMessage(eventMessage.getFromUserName(), eventMessage.getToUserName(),
// "你好");
// // 回复
// xmlTextMessage.outputStreamWrite(outputStream);
// return;
// }
// outputStreamWrite(outputStream, "");
// }
//
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("UTF-8");
// response.setCharacterEncoding("UTF-8");
//
// System.out.println("appid:" + WeChatConfig.getAppId());
//
// // 验证服务器的有效性
// ServletInputStream inputStream = request.getInputStream();
// ServletOutputStream outputStream = response.getOutputStream();
// String signature = request.getParameter("signature");
// String timestamp = request.getParameter("timestamp");
// String nonce = request.getParameter("nonce");
// String echostr = request.getParameter("echostr");
//
// // 首次请求申请验证,返回echostr
//// if (echostr != null) {
//// outputStreamWrite(outputStream, echostr);
//// System.out.println("首次验证");
//// return;
//// }
//
//// WxConfig = WxConfig.getInstance();
// // 验证请求签名
//// if (!signature.equals(SignatureUtil.generateEventMessageSignature(WxConfig.getToken(), timestamp, nonce))) {
//// System.out.println("The request signature is invalid");
//// return;
//// }
//
// // PrintWriter out = response.getWriter();
// /*
// * try { Map<String, String> map = MessageUtil.xmlToMap(request); if
// * (map != null) { String toUserName = map.get("ToUserName"); String
// * fromUserName = map.get("FromUserName"); String msgType =
// * map.get("MsgType"); String content = map.get("Content"); String
// * eventType = map.get("Event"); String eventKey = map.get("EventKey");
// * System.out.println("收到消息:toUserName=" + toUserName +
// * ", fromUserName=" + fromUserName + ", msgType=" + msgType +
// * ", content=" + content + ", eventKey=" + eventKey + ", eventType=" +
// * eventType);
// *
// * // [start]华坪县人民医院 if
// * (WxConfig.getAppId().equals("wx18b15dc67fc96f89")) { if (content !=
// * null) { if (content.equals("支付") || content.equals("微信支付") ||
// * content.contains("费")) { Article article = new Article();
// * article.setTitle("微信支付"); article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg"
// * ); article.setDescription(
// * "请点这里进入支付页面,支付您的账单,不用再去排队缴费。如需查看检查结果,请输入“检查”。如需查看化验结果,请输入“化验”。");
// * WxConfig WxConfig = WxConfig.getInstance();
// * article.setUrl(WxConfig.getBaseURL() + "my-pay.jsp"); List<Article>
// * list = new ArrayList<>(); list.add(article); XMLNewsMessage msg = new
// * XMLNewsMessage(fromUserName, toUserName, list);
// * msg.outputStreamWrite(response.getOutputStream()); } else if
// * (content.equals("检查")) { Article article = new Article();
// * article.setTitle("查看检查结果"); article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg"
// * ); article.setDescription(
// * "请点这里查看您的检查结果,如要查看化验结果,请输入“化验”或“检验”。如需缴费,请输入“支付”。"); WxConfig
// * WxConfig = WxConfig.getInstance();
// * article.setUrl(WxConfig.getBaseURL() + "check.jsp"); List<Article>
// * list = new ArrayList<>(); list.add(article); XMLNewsMessage msg = new
// * XMLNewsMessage(fromUserName, toUserName, list);
// * msg.outputStreamWrite(response.getOutputStream()); } else if
// * (content.equals("检验") || content.equals("化验")) { Article article =
// * new Article(); article.setTitle("查看化验结果"); article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg"
// * );
// * article.setDescription("请点这里查看您的化验结果,如要查看检查结果,请输入“检查”。如需缴费,请输入“支付”。")
// * ; WxConfig WxConfig = WxConfig.getInstance();
// * article.setUrl(WxConfig.getBaseURL() + "inspection.jsp");
// * List<Article> list = new ArrayList<>(); list.add(article);
// * XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName,
// * list); msg.outputStreamWrite(response.getOutputStream()); } else if
// * (content.equals("挂号")) { Article article = new Article();
// * article.setTitle("挂号"); article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg"
// * ); article.setDescription("请点这里进入挂号,如要查看检查结果,请输入“检查”。如需缴费,请输入“支付”。");
// * WxConfig WxConfig = WxConfig.getInstance();
// * article.setUrl(WxConfig.getBaseURL() + "reg.jsp"); List<Article> list
// * = new ArrayList<>(); list.add(article); XMLNewsMessage msg = new
// * XMLNewsMessage(fromUserName, toUserName, list);
// * msg.outputStreamWrite(response.getOutputStream()); } } if (msgType !=
// * null) { if (MessageUtil.MESSAGE_EVENT.equals(msgType)) { if
// * (eventKey.equals("MYDDC")) { List<Article> list = new ArrayList<>();
// * Article article = new Article(); article.setTitle("华坪县人民医院患者满意度调查");
// * article.setUrl("http://mp.weixin.qq.com/s/MCswklxDHdmYr3sFP70Xdw");
// * article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/0jg8QrIOHOwYlpPRQDFKpbFQsN2ibtZqcS9H9pqX4nOCzdaAHNiciaZubLF9jiayZJBV8ADxAqL6XdbpdqolJuwJIQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1"
// * ); list.add(article);
// *
// * article = new Article(); article.setTitle("患者满意度调查");
// * article.setUrl("http://mp.weixin.qq.com/s/7l2YsE2Y-XSTWEXN7BJlIQ");
// * article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/0jg8QrIOHOzYGDMbzzyKicXD9QlRA5MdmpGgicibSdY0A4kmgV94qibuKylgRXbMgPb4zGNw9BvWqDXiby1XyFCFCaQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1"
// * ); list.add(article);
// *
// * article = new Article(); article.setTitle("员工满意度调查");
// * article.setUrl("http://mp.weixin.qq.com/s/VyoOCM8FoEZ53ZQC3yX-Yw");
// * article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/0jg8QrIOHOzYGDMbzzyKicXD9QlRA5MdmpF19PW1oFibvCDj60twgfGC556fY3wThlAhIYJsHykiaDIU8h3Igh8Dw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1"
// * ); list.add(article); XMLNewsMessage msg = new
// * XMLNewsMessage(fromUserName, toUserName, list);
// * msg.outputStreamWrite(response.getOutputStream()); } if
// * (MessageUtil.EVENT_SUB.equals(eventType)) { Article article = new
// * Article(); article.setTitle("微信支付使用流程!"); article.setDescription(
// * "首先关注微信公众号“华坪县人民医院”,其次打开公众号,点击“微信支付”,首次需进行身份绑定,按要求输入相关内容,获取账单;最多可以绑定除本人外加4个人,在身份绑定页面,点“添加绑定”"
// * ); List<Article> list = new ArrayList<>(); list.add(article);
// * XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName,
// * list); msg.outputStreamWrite(response.getOutputStream()); } } } } //
// * [end] // [start]巍山县人民医院 else if
// * (WxConfig.getAppId().equals("wx1e30610a28d189a8")) {
// * logger.info("巍山县人民医院收到消息:toUserName=" + toUserName +
// * ", fromUserName=" + fromUserName + ", msgType=" + msgType +
// * ", content=" + content + ", eventKey=" + eventKey + ", eventType=" +
// * eventType); if (msgType != null) { if
// * (MessageUtil.MESSAGE_EVENT.equals(msgType)) { // 满意度 if
// * (eventKey.equals("MYDDC")) { Article article = new Article();
// * article.setTitle("巍山县人民医院患者满意度调查");
// * article.setUrl("https://mp.weixin.qq.com/s/R-tX9YtRRM9Hpw2rMmw2iQ");
// * article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/5kpYU2jcMVicvMfVRATtAKOEjh4A4VvtHmCMKgD9vAfr741FDDEwiccNdj2ZTicBibeeQZfwp6zbaYMI5ubib1TaaeA/640?wx_fmt=jpeg"
// * ); List<Article> list = new ArrayList<>(); list.add(article);
// * XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName,
// * list); msg.outputStreamWrite(response.getOutputStream()); } // 关注 if
// * (MessageUtil.EVENT_SUB.equals(eventType)) { Article article = new
// * Article(); article.setTitle("微信预约挂号开通喽,大家快快用起来!");
// * article.setUrl("http://mp.weixin.qq.com/s/gl_NitQTP6_ZzoV8pwxOcw");
// * article.setPicurl(
// * "http://mmbiz.qpic.cn/mmbiz_jpg/5kpYU2jcMVicNybruqia0dn6kBqiakDlrTgDkweiafibyRl9uK6bkKoiaXib0xktJIywqTDzfe9fHcq5x0gggKkurDicpg/0?wx_fmt=jpeg"
// * ); List<Article> list = new ArrayList<>(); list.add(article);
// * XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName,
// * list); msg.outputStreamWrite(response.getOutputStream()); } } } } //
// * [end] // [start]芒市人民医院 else if
// * (WxConfig.getAppId().equals("wxca97aaeb3c40c0d0")) { if (msgType !=
// * null) { if (MessageUtil.MESSAGE_EVENT.equals(msgType)) { if
// * (MessageUtil.EVENT_SUB.equals(eventType)) { Article article = new
// * Article(); article.setTitle("微信预约挂号开通喽,大家快快用起来!");
// * article.setUrl("https://mp.weixin.qq.com/s/rJF1qBo1-mV5CUdRsi4Z5g");
// * article.setPicurl(
// * "https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg"
// * ); List<Article> list = new ArrayList<>(); list.add(article);
// * XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName,
// * list); msg.outputStreamWrite(response.getOutputStream()); } } } } //
// * [end] } } catch (Exception e) { e.printStackTrace(); }
// */
//
// try {
// String xmlData = StreamUtils.copyToString(request.getInputStream(), Charset.forName("utf-8"));
// Map<String, String> map = XMLConverUtil.convertToMap(xmlData);
// if (map != null) {
// String toUserName = map.get("ToUserName");
// String fromUserName = map.get("FromUserName");
// String msgType = map.get("MsgType");
// String content = map.get("Content");
// String message = "";
// System.out.println("收到消息:toUserName=" + toUserName + ", fromUserName=" + fromUserName + ", msgType="
// + msgType + ", content=" + content);
//
// // 判断请求是否事件类型 event
// if (msgType != null) {
// if (MessageUtil.MESSAGE_EVENT.equals(msgType)) {
// String eventType = map.get("Event");
// // 若是关注事件 subscribe
// if (MessageUtil.EVENT_SUB.equals(eventType)) {
//
// Article article = new Article();
//
// // article.setDescription("首先关注微信公众号“华坪县人民医院”,其次打开公众号,点击“微信支付”,首次需进行身份绑定,按要求输入相关内容,获取账单;最多可以绑定除本人外加4个人,在身份绑定页面,点“添加绑定”");
// // 巍山
// article.setTitle("微信预约挂号开通喽,大家快快用起来!");
// article.setUrl("http://mp.weixin.qq.com/s/gl_NitQTP6_ZzoV8pwxOcw");
// article.setPicurl(
// "http://mmbiz.qpic.cn/mmbiz_jpg/5kpYU2jcMVicNybruqia0dn6kBqiakDlrTgDkweiafibyRl9uK6bkKoiaXib0xktJIywqTDzfe9fHcq5x0gggKkurDicpg/0?wx_fmt=jpeg");
// // 芒市
// // article.setTitle("微信挂号、微信门诊费用支付开通喽,大家快快用起来!");
// // article.setUrl("https://mp.weixin.qq.com/s/rJF1qBo1-mV5CUdRsi4Z5g");
// // article.setPicurl("https://mmbiz.qpic.cn/mmbiz_jpg/RUm4m8SVypy7nVubUuo6KgdlibcduK8l4tWnXrz7VfTO5EYOeDc9hZxR70wTQgX1sYhRR7SeND6426uczdpf1BA/0?wx_fmt=jpeg");
// List<Article> list = new ArrayList<>();
// list.add(article);
// XMLNewsMessage msg = new XMLNewsMessage(fromUserName, toUserName, list);
// msg.outputStreamWrite(response.getOutputStream());
//
// }
// }
// }
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// }
//
// /**
// * 数据流输出
// *
// * @param outputStream
// * @param text
// * @return
// */
// private boolean outputStreamWrite(OutputStream outputStream, String text) {
// try {
// outputStream.write(text.getBytes("utf-8"));
// } catch (UnsupportedEncodingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// return false;
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// return false;
// }
// return true;
// }
//}