微信回调模式配置企业服务器URL

来源:互联网 发布:网络编解码器 编辑:程序博客网 时间:2024/04/29 04:06

转载请标明出处,尊重他人劳动成果,谢谢~!
前几天微信推出了企业号,我就进去关注了一下,发现用途大大的多,就顺手整了一个测试号来试试,由于是新出的玩意儿,很多东西有文档也不到一定知道整,我这个配置就花了蛮久才找到失败的原因,最终是借用了浩然哥的服务器,才验证了我的猜想,也就是我们群主说的jec加解密包必须与JDK version一致,下面说说详细的配置吧

首先你需要一个加解密包,这个官方有提供压缩文件的,我贴上地址给大家:

http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8A%A0%E8%A7%A3%E5%AF%86%E5%BA%93%E4%B8%8B%E8%BD%BD%E5%92%8C%E8%BF%94%E5%9B%9E%E7%A0%81

这个连接里面有4个语言的库文件:java\php\python\c#

我的是java的,然后下载一个jar包,不下也无所谓,上面说的4个语言库包里自带了那个jar,也就是  
commons-codec-1.9,

注意:jec包要与环境的JDK版本一致,否则就算替换掉
local_policy.jar和US_export_policy.ja依旧会失败,我开始就是这种情况,请大家一定要注意环境配置的JDK的版本是否与jec一致

Linux java Path  键入命令:which java

Windows java Path :  java -verbose

Linux示例图:

 
 

Windows:

 

下载jec加解密文件之后替换掉原来的文件,注意备份哦,
JCE-7(此为JDK7适用)下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安装了JRE,将两个jar文件放到%JRE_HOME% \lib\security目录下覆盖原来的文件,如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件 

可以用框架,可以用其方式,看自己喜好~

我的应用架构图:




核心配置、核心代码:



public class CoreServlet extends HttpServlet{
private String token = "xxxxxxx";  //可用户自动生成、可自定义,需应用与后台一致
    private String encodingAESKey = "xxxxxxx";  //自动生成密钥
    private String corpId = "xxxxxxx"; //企业号ID  
/**
 * 
 */
private static final long serialVersionUID = 4440739483644821986L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名  
        String msg_signature = request.getParameter("msg_signature");  
        // 时间戳  
        String timestamp = request.getParameter("timestamp");  
        // 随机数  
        String nonce = request.getParameter("nonce");  
        // 随机字符串  
        String echostr = request.getParameter("echostr");  
  
        System.out.println("request=" + request.getRequestURL());  
  
        PrintWriter out = response.getWriter();  
        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败  
        String result = null;  
        try {  
        WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token,encodingAESKey,corpId);  
        result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);  
        } catch (AesException e) {  
            e.printStackTrace();  
        }  
        if (result == null) {  
        result = token;
        }
//        else{
//        result = token;  
        String str = msg_signature+" "+timestamp+" "+nonce+" "+echostr;
        System.out.println("Exception:"+result+" "+ request.getRequestURL()+" "+"FourParames:"+str);
//        }  
        out.print(result);
        out.close();  
        out = null;  
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // 调用核心业务类接收消息、处理消息  
        String respMessage = CoreService.processRequest(request);  
        System.out.println("respMessage=" + respMessage);  
        // 响应消息  
        PrintWriter out = response.getWriter();  
        out.print(respMessage);  
        out.close();  
}

} 

回调配置结果:


转载请标明出处,尊重他人劳动成果,谢谢~!

0 0