转载请标明出处,尊重他人劳动成果,谢谢~!
前几天微信推出了企业号,我就进去关注了一下,发现用途大大的多,就顺手整了一个测试号来试试,由于是新出的玩意儿,很多东西有文档也不到一定知道整,我这个配置就花了蛮久才找到失败的原因,最终是借用了浩然哥的服务器,才验证了我的猜想,也就是我们群主说的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示例图:
![](http://static.oschina.net/uploads/img/201505/18222639_VTbd.jpg)
Windows:
下载jec加解密文件之后替换掉原来的文件,注意备份哦, JCE-7(此为JDK7适用)下载地址:
首先你需要一个加解密包,这个官方有提供压缩文件的,我贴上地址给大家:
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示例图:
![](http://static.oschina.net/uploads/img/201505/18222639_VTbd.jpg)
Windows:
![](http://static.oschina.net/uploads/img/201505/18222639_ZcUG.jpg)
下载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目录下覆盖原来文件
可以用框架,可以用其方式,看自己喜好~
我的应用架构图:
核心配置、核心代码:
}
回调配置结果:
![](http://static.oschina.net/uploads/img/201505/18222639_1VSv.jpg)
可以用框架,可以用其方式,看自己喜好~
我的应用架构图:
![](http://static.oschina.net/uploads/img/201505/18222639_MZAO.jpg)
核心配置、核心代码:
![](http://static.oschina.net/uploads/img/201505/18222639_4SyO.jpg)
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();
}
回调配置结果:
![](http://static.oschina.net/uploads/img/201505/18222639_1VSv.jpg)
转载请标明出处,尊重他人劳动成果,谢谢~!