趋于愈来愈多的社交需求,使得微信公众平台开放了许多可接入、定制的个性化接口,例如:消息的收发管理、素材管理等等。html
本文是基于你已有公众号或者微信公众测试号的状况下进行介绍的。git
首先说一下要用到的主要工具。github
这里关于springMVC的搭建就再也不赘述,由于每一个人搭建的方式也不尽相同,本文是使用的注解的方式来搭建的。spring
1.使用微信号登陆微信公众测试号(公众测试号登录地址)浏览器
咱们看到这里要求填写对接咱们使用springMVC搭建的服务地址,从开发的角度来说,即便咱们有一台服务器,咱们也不能每写一段代码都发布到服务器中测试一下吧?安全
2.使用QQ浏览器微信调试工具进行本地调试服务器
那刚好QQ浏览器的一个插件帮咱们解决了这个问题(该插件可在QQ浏览器的应用中心经过搜索“微信调试工具”找到),而且提供了两种不一样的接入方式来调试公众平台的接口,以下图所示:微信
咱们选择服务器端调试。微信公众平台
这里的绑定服务咱们能够填写咱们本地所启动的服务,例如个人服务监听的是8889端口,那么我能够直接填写8889,点击启动后会获得一个可供他人访问的外部地址,以下图所示:框架
3.在服务中验证服务绑定逻辑
接下来咱们在本地的服务中新建一个控制器来接收服务器的配置请求并予以回应完成服务的绑定和验证(请注意这里咱们是用的是springMVC注解形式搭建的服务),以下图所示:
这里咱们使用了fastweixin的工具库,控制器直接继承了库中的WeixinControllerSupport,稍后咱们将重写当中的某些方法进行服务绑定与消息收发,代码以下:
/** * 重写服务绑定. * * @param request http请求 * @param response http响应 */ @Override public void bindServer(HttpServletRequest request, HttpServletResponse response) { SignValiUtil signValiUtil = new SignValiUtil(); // 验证微信签名 if (signValiUtil.validSignature(request.getParameter("signature"), request.getParameter("timestamp"), request.getParameter("nonce"), weChatConf)) { // 执行绑定返回 super.bindServer(request, response); LogPool.wechatLogger.info("执行微信第三方服务地址绑定:{}", "成功"); } else { LogPool.wechatLogger.info("执行微信第三方服务地址绑定:{}", "失败"); } }
这里的验证逻辑稍后再细说,或者你们能够直接移步这里了解具体怎么作的验证微信验证服务地址有效性
到这里咱们建立好了验证的ctrl,也就是说在图1中的URL咱们能够大胆的填写如下地址了:
那么Token又是什么呢?官方是给咱们这么解释的
Token可由开发者能够任意填写,用做生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。
那至于你把token放在服务中什么地方,就由读者本身决定了,我这里是使用了properties存储而且在服务启动时自动读取加载到某个类模型中。
这里咱们填好了Token,在服务中咱们也重写了服务绑定的验证逻辑,先不着急点提交,咱们来了解一下服务验证时怎么完成的。
微信的服务器在验证的时候会请求咱们所填写的URL,其中带有如下四个参数:
接着咱们的bindServer方法作了如下几个动做(官方文档中是有的):
在3执行确认一致后就能够返回微信给咱们的echostr字符串了(固然有的同窗说能够直接返回echostr,固然也能够,fastweixin的内部默认就是这么作的,可是出于安全性考虑仍是验证一下吧)。
接着,咱们启动服务。点击提交。
验证配置成功后以下图所示:
这个时候你能够重写一下WeixinControllerSupport中的handleTextMsg方法并在控制台打印一下。
接着,扫描关注公众测试号中为咱们提供的测试号的二维码,尝试给公众号发一条消息,你会在控制台看到消息的具体内容。
至此,你的服务已经绑定成功了!
PS:具体其余接口的使用请移步微信公众平台开发文档