用Servlet开启企业微信通用开发配置详解

官方文档地址:http://qydev.weixin.qq.com/wiki/index.php?title=回调模式;

  URL配置的就是请求路径,我们要做的就是在后台处理这个请求,话不多说,上代码:

package com.ornos.net.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.URLEncoder;
import java.security.NoSuchAlgorithmException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import com.qq.weixin.mp.aes.AesException;
import com.qq.weixin.mp.aes.WXBizMsgCrypt;

/**
 * @author Gsc
 * @category 企业微信通用开发配置
 */
public class QyWeixinServlet extends HttpServlet {

    Logger log = Logger.getLogger(QyWeixinServlet.class);
    
    // 企业微信通用开发配置GET请求处理
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        
        String token = "你的token值";
        String encodingAesKey = "你的encodingAesKey值";
        String corpId= "你的corpId值";
            // 微信加密签名
            String msg_signature = req.getParameter("msg_signature");
            // 时间戳
            String timestamp = req.getParameter("timestamp");
            // 随机数
            String nonce = req.getParameter("nonce");
            // 加密的随机字符串
            String echostr = req.getParameter("echostr");
            System.out.println("微信加密签名的值是:"+msg_signature);
            System.out.println("时间戳的值是:"+timestamp);
            System.out.println("随机数的值是:"+nonce);
            System.out.println("加密随机字符串:"+echostr);
            System.out.println("=============调试===================");
            log.debug("微信加密签名的值是:"+msg_signature);
            log.debug("时间戳的值是:"+timestamp);
            log.debug("随机数的值是:"+nonce);
            log.debug("加密随机字符串:"+echostr);
            
            try {
                Writer w = resp.getWriter();
                WXBizMsgCrypt crypt = new WXBizMsgCrypt(token, encodingAesKey, corpId);
                                //校验请求返回echostr解密后的值
                String echoStr = crypt.VerifyURL(msg_signature, timestamp, nonce, echostr);
                w.write(echoStr);
                w.flush();
                w.close();
                req.getRequestDispatcher("/index.html").forward(req, resp);
            } catch (AesException | IOException | ServletException e) {
                e.printStackTrace();
            }
            
    }

    // 处理微信其他的请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/jf/index.html").forward(req, resp);
        super.doPost(req, resp);
    }

}
                    
View Code

Servlet的代码就是上述部分,其实缕清了思路就没啥问题,简单的很

校验并解密echostr的参数用的方法是用官方的,下载地址:http://qydev.weixin.qq.com/wiki/index.php?title=加解密库下载与返回码;

其实这个东西最麻烦的东西已经被官方写了,我们只用做最简单的工作就行了,没什么难度。

最后源代码下载地址附上:http://download.csdn.net/download/crazilyer/10219188;

posted @ 2018-01-23 10:40  IT暴君  阅读(386)  评论(0)    收藏  举报