对于微信企业号,我相信很多人都不陌生了,今天跟大家一起来探讨一下用java怎么去实现微信企业号回调模式配置。
为什么需要开启回调模式?
对于这点,我相信官方文档中说得比我更清楚,但是我还是想大家熟悉一下什么是回调模式,说白了就是当你有一个属于自己的企业应用,通过用户关注这个微信企业号,希望用户发送的消息或者用户触发的事件都推送到你这个企业应用中处理,此时的你就会用到回调模式,只有开发人员开启了回调模式之后才能正式使用官方提供的一些接口对数据进行处理
那么想要完成开启回调模式,我们需要先注意以下几点:
1. 必须使用外网能够访问得到的URL(不能是本地服务器)
2. JDK版本必须要1.7以上
3. jec加解密包必须与JDKversion一致
4. 微信企业号开启回调模式默认只支持80或443端口
以上几点是开启回调模式之前需要知道的一些基本情况,接下来,我将会为大家详细讲解如何开启企业号的回调模式
1. 第一步:下载官方的加解密包,根据自己的开发语言下载不同的加解密包,这个官方有提供压缩文件的,下载地址如下:
http://qydev.weixin.qq.com/wiki/index.php?title=加解密库下载和返回码
2. 第二步:下载一个jar包,其实不下也无所谓,因为下载了官方的加解密包会包含了这个jar,也就是 commons-codec-1.9。
需要注意的是:jec包要与环境的JDK版本一致
另附上如何查看jDK版本
Linux java Path 键入命令:which java
Windows java Path : java -verbose
Linux示例图:
Windows示例图:
通过cmd控制台输入:java –version即可查看
3 第三步:替换文件(很重要的一步)
将下载之后的jec加解密文件替换掉原来的jdk里面的文件(注意备份原来的替换文件,以防万一),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目录下覆盖原来文件
通过以上的步骤之后,就可以开始进行我们的代码编写了
1. 新建web项目,这个大家很熟悉的啦,这不说了
2. 导入我们刚刚下载的加解密包到新建的项目中
3. Web.xml的配置文件如下:
WXServlet
com.weixin.servlet.WXServlet
WXServlet
/WXServlet
4. WXServlet.class核心操作文件
public class WXServlet 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;
}
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 {
// 调用核心业务类接收消息、处理消息
}
}
5. 编写完核心代码之后,去到微信企业号应用的回调模式,填写完信息之后点击提交,如无意外,你将会很开心看到这个页面
回调配置结果:
好了,以上就是开启回调模式的所有步骤,只要你细心耐心的去走完每一个步骤,我相信问题不大的,,祝你好运。