这几天申请了一个企业公众号玩一玩。当咱们想在基于微信平台再次开发时,首先须要解决的是开启开发者模式。php
1.怎样申请企业公众号,请见相关参考文献,网上有不少。html
2.进入开启企业公众号开发者模式时,首先要开启回调模式。java
3.在开启回调模式时,咱们先要在应用中心建立一个应用中心。python
8.当你开启应用的回调模式时,企业号会要求你填写应用的URL、Token、EncodingAESKey三个参数。 URL是企业应用接收企业号推送请求的访问协议和地址,支持http或https协议。 Token可由企业任意填写,用于生成签名。EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。验证URL、Token以及加密的详细处理请参考后续'接收消息时的加解密处理'的章节。企业能够直接使用微信提供的库进行加解密的处理,目前提供的有c++/python/php/java/c#等语言版本。代码提供了解密、加密、验证URL三个接口,可根据自身须要下载 (参见附录的加解密库下载)。项目中的com.qq.weixin.mp.aes中的.java文件就是从官方下载。c++
而后本身再编写一个servlet来接受微信服务器回调时调用的GET方法。项目中是CoreServlet.java。它的GET方法以下:web
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 // 设置编码 5 response.setContentType("text/html;charset=utf-8"); 6 // response.setCharacterEncoding("utf-8"); 7 request.setCharacterEncoding("utf-8"); 8 9 // 企业号的基本信息,配置时填写 10 String sToken = "weixin"; 11 String sCorpID = "sCorpID"; 12 String sEncodingAESKey = "sEnCodingAESKey"; 13 14 try 15 { 16 WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, 17 sCorpID); 18 19 // 解析出url上的参数值以下: 20 21 String sVerifyMsgSig = URLDecoder.decode( 22 request.getParameter("msg_signature"), "utf-8"); 23 String sVerifyTimeStamp = URLDecoder.decode( 24 request.getParameter("timestamp"), "utf-8"); 25 String sVerifyNonce = URLDecoder.decode( 26 request.getParameter("nonce"), "utf-8"); 27 String sVerifyEchoStr = URLDecoder.decode( 28 request.getParameter("echostr"), "utf-8"); 29 30 // String sVerifyMsgSig = 31 // "5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3"; 32 // String sVerifyTimeStamp = "1409659589"; 33 // String sVerifyNonce = "263014780"; 34 // String sVerifyEchoStr = 35 // "P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ=="; 36 37 PrintWriter out = response.getWriter(); 38 String sEchoStr; // 须要返回的明文 39 try 40 { 41 sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, 42 sVerifyNonce, sVerifyEchoStr); 43 System.out.println("verifyurl echostr: " + sEchoStr); 44 // 验证URL成功,将sEchoStr返回 45 out.print(sEchoStr); 46 out.close(); 47 out = null; 48 } 49 catch (Exception e) 50 { 51 e.printStackTrace(); 52 } 53 54 } 55 catch (AesException e1) 56 { 57 e1.printStackTrace(); 58 } 59 }
注意:代码中的sCorpID是你本身企业的sCorpID,sEncodingAESKey和你在输入验证URL时的sEncodingAESKey保持一致。c#
完成以上步骤,而后打成war部署到云服务器上,这样基本就能够了。windows
总结下本身在验证时出现的问题:tomcat
一、myeclipse编译器的jdk和tomcat服务器的jdk不一样,致使项目不能在本地服务器跑Windows=>preference=>Java=>Compiler / windows=>preference=>myeclipse=>servers服务器
二、特别注意的是:jdk版本必须是1.6及以上;须要替换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目录下覆盖原来文件。这里我耽搁了比较久。