微信企业号回调模式配置详解

前几天微信推出了企业号,我就进去关注了一下,发现用途大大的多,就顺手整了一个测试号来试试,由于是新出的玩意儿,很多东西有文档也不到一定知道整,我这个配置就花了蛮久才找到失败的原因,最终是借用了浩然哥的服务器,才验证了我的猜想,也就是我们群主说的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 javaPath :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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值