java servlet处理微信企业号回调模式
来源:互联网 发布:双十一京东数据 编辑:程序博客网 时间:2024/06/05 01:54
package cn.com.lewis.wx.servlet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.xml.parsers.ParserConfigurationException;import org.xml.sax.SAXException;import cn.com.lewis.wx.bean.AppInfo;import cn.com.lewis.wx.common.WeiXinConfiger;import cn.com.lewis.wx.service.RequestHandler;import com.qq.weixin.mp.aes.AesException;import com.qq.weixin.mp.aes.WXBizMsgCrypt;/** * 微信企业号被动接口监听程序 * */public class WeixinQYHPassiveServlet extends HttpServlet {/** * 自动生成的序列号 */private static final long serialVersionUID = 2690553754896029178L; /** * 校验Token * @param request * @param response */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sVerifyEchoStr = request.getParameter("echostr"); String sEchoStr=null; //需要返回的明文try {AppInfo app = WeiXinConfiger.getAppConfig(request);WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(app.getToken(), app.getAesKey(), app.getCorpCode());String sVerifyMsgSig = request.getParameter("msg_signature");String sVerifyTimeStamp = request.getParameter("timestamp");String sVerifyNonce = request.getParameter("nonce"); sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce, sVerifyEchoStr);} catch (AesException e1) {sEchoStr="ERR: "+e1.getCode()+ "\n\n";e1.printStackTrace();}response.getWriter().print(sEchoStr);response.getWriter().flush();//将校验写入日志String strBackUrl = "http://" + request.getServerName() //服务器地址 + ":" + request.getServerPort() //端口号 + request.getContextPath() //项目名称 + request.getServletPath() //请求页面或其他地址 + "?" + (request.getQueryString()); //参数RequestHandler.logInfo("完整的校验url为 "+strBackUrl); } /** * 解析post提交的数据,并转交给处理程序 */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得请求参数String sReqMsgSig = request.getParameter("msg_signature");String sReqTimeStamp = request.getParameter("timestamp");String sReqNonce = request.getParameter("nonce");//获得post提交的数据BufferedReader br=new BufferedReader(new InputStreamReader(request.getInputStream()));StringBuilder sbuff=new StringBuilder();String tmp=null;while((tmp=br.readLine())!=null){sbuff.append(tmp);}String sReqData = sbuff.toString();String sEchoStr=null;try {AppInfo app = WeiXinConfiger.getAppConfig(request);WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(app.getToken(), app.getAesKey(), app.getCorpCode());String sMsg = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, sReqData);sEchoStr=RequestHandler.doHandle(sMsg,app);sEchoStr = wxcpt.EncryptMsg(sEchoStr, sReqTimeStamp, sReqNonce);} catch (AesException e1) {sEchoStr="ERR: "+e1.getCode()+ "\n\n";e1.printStackTrace();} catch (ParserConfigurationException e) {sEchoStr="ERR: "+AesException.ParseXmlError+ "\n\n";e.printStackTrace();} catch (SAXException e) {sEchoStr="ERR: "+AesException.ParseXmlError+ "\n\n";e.printStackTrace();}response.getWriter().print(sEchoStr); }}
0 0
- java servlet处理微信企业号回调模式
- 微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决
- 微信企业号回调模式配置详解
- php 微信企业号回调模式开发
- 微信公众平台企业号回调模式的URL验证——Java
- 微信公众平台企业号回调模式的URL验证——Java
- 微信企业号回调模式配置详细讲解
- 微信企业号回调模式配置详细讲解
- 微信公众平台企业号回调模式的URL验证
- 微信企业号回调模式配置详细讲解
- java微信企业付款
- 微信企业号三个连接模式
- 企业微信开发者回调模式
- 微信企业号接入JDK6和JDK7及JDK8加解密失败处理(Java)
- 微信企业号管理通讯录-Java
- java微信-企业付款api
- java-微信--企业向个人付款
- java微信-企业付款api
- J2EE 架构下业务组件(BC)实现
- yii2的RESTFUL编程中的一个路由设置问题
- iOS应用内一键拨打电话的2种实现方式
- Objective-C中的CocoaPods教程
- 最短路 Dijkstra 和 Floyd 算法
- java servlet处理微信企业号回调模式
- Android各大发布市场
- 和菜鸟一起学android4.0.3源码之硬件gps简单移植
- 大数求和(hdu 1047)
- ovs vxlan学习
- java基础学习-泛型
- MyEclipse6.0编译后的类无法自动发不到WebRoot/WEB-INF/classes文件夹下(转)
- UITableView
- C# .net 偏移 GIS