练习-微信企业号回调模式

查看微信企业号的官方文档

  • 关于回调模式
  • 关于加解密库与返回码

了解了大概的业务流程,尝试在announcement直接使用,但是一直连接失败,于是决定先写个demo感受一下.网上搜索了一下,找到了许多例子,我参考的是这个: 微信企业号回调模式配置详细讲解,里面说的很详细,有关的重点官方文档也说的很清楚:

java库(2014年9月24日更新,点击下载)
注意事项:
1.com\qq\weixin\mp\aes目录下是用户需要用到的接入企业微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt类封装了用户接入企业微信的三个接口,其它的类文件用户用于实现加解密,用户无须关心。sample.java文件提供了接口的使用示例。
2.WXBizMsgCrypt封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url、接收消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.java文件。
3.请开发者使用jdk1.6或以上的版本。针对org.apache.commons.codec.binary.Base64,需要导入jar包commons-codec-1.9(或comm ons-codec-1.8等其他版本),我们有提供,官方下载地址:
http://commons.apache.org/proper/commons-codec/download_codec.cgi
4.异常java.security.InvalidKeyException:illegal Key Size的解决方案:
在官方网站下载JCE无限制权限策略文件(请到官网下载对应的版本, 例如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目录下覆盖原来文件。

新建web项目

  • 这里附上我的web.xml以及servlet

web.xml



  testWxUrl
  
    index.html
  
    
    WxUrl  
    com.ydq.testWechatUrl.WxUrl  
  
  
    WxUrl  
    /wxurl  
  

servlet

@WebServlet("/WxUrl")
public class WxUrl extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    private String token = "你的token";   
    private String encodingAESKey = "你的key";  
    private String corpId = "你的企业号id"; 
    @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();    
        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;  
        }  
  
        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 {  
    }  
}   

发布到tomcat

  • 由于微信验证url需要公网的ip,那么1.使用你自己的服务器 2.映射一个ip
  • 为了简单测试,这里我选择的是1.使用的软件ngrok,下载后只需要在exe目录下,shift+右键打开命令行,输入ngrok http 80 即可
  • 如下图,forwarding即是外网可以访问的地址了
练习-微信企业号回调模式_第1张图片

企业号回调模式验证

如图填写后,即可成功开启回调模式

练习-微信企业号回调模式_第2张图片

你可能感兴趣的:(练习-微信企业号回调模式)