1.首先,我们仍然是访问我们的企业号开发者中心,打开建立连接下的回调模式选项:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F
我们先看看官方文档是如何定义回调模式的:
后续回调企业时都会在请求URL中带上以上参数(echostr除外),校验方式与首次验证URL一致。
在上面的描述中,我们重点关注以下几个内容:
a.企业在获取时需要做urldecode处理。否则验证不成功
b.企业应用对echostr参数界面并原样返回echostr明文(不能加引号,不能带bom头)
c.后续企业号都会在请求URL中带上以上参数(echostr除外),校验方式与手册验证一致。
这3条是我们正常使用回调模式的基础,请大家一定好好理解,关于上述的名词,不是我们本文叙述的中的。各位看官不懂的地方,请自行搜索资料。
到此为止,仅仅是是我们在理论上,描述录如何接入回调模式。下面,我们从代码实现层面,看看如何接入回调模式。
准备工作:
[1].一台能够被外网访问的服务器,没有这个条件的看官可以申请一台百度或者其他的服务器来做为开发使用。
[2].上面我们有提到AES加密,当然这个代码不用我们自己手动来写,仅需要下载下来使用即可。为了稳定性,安全性,建议尽量的从官网下载。
下载地址: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%E4%B8%8E%E8%BF%94%E5%9B%9E%E7%A0%81
[3].再确认一遍我们程序中的基本内容:
a.GET方式捕获请求
b.接受到的数据格式为XML
c.将接收到的密文解密,并且明文回复
好了,写着准备工作完成之后,我们来看看代码实现吧!
注意:
1.下面的实现方式为Servlet简单实现,想要其他实现方式的读者,请自行调整。在这里,我们只是演示基本流程。
2.实例代码中出现的未知类,即为引用的AES包,请读者从上述内容的下载链接,或者前往官网进行下载,下载时,请仔细阅读下载注意事项。
//V型知识库 www.vxzsk.com @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"); // 流 PrintWriter out = response.getWriter(); // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 String result = null; try { WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token,encodingAESKey,corpId); // 验证URL函数 result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr); } catch (AesException e) { e.printStackTrace(); } if (result == null) { // result为空,赋予token,即在上文截图中设置的token result = token; } out.print(result); out.close(); out = null; }
将上面的代码再服务器端启动运行,并且设置正确的访问地址。即可看到已经接入回调模式。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程