微信公众号要使用微信的消息接口须要配置接收请求的地址,微信全部事件信息都将发送到该接口,好比关注,取消关注,上报地理位置等。可是使用这个有一个前提须要在微信公众平台配置地址,而且验证地址的正确性。如图须要填写url和token。其中token为任意字符串html
网络环境准备java
因为这个地址须要被微信可以访问到而且市80或者443端因此在本地开发时咱们将作以下准备(我我的方式,其它方式也能够实现)nginx
1 准备nginx(也能够不许备nginx,直接经过natapp 穿透到咱们的springboot上)web
2 准备内网穿透工具,我使用的是 https://natapp.cn (natapp官网有使用说明,以前买的是九块钱一年仍是一个月)spring
开始配置环境json
将nginx配置添加以下代理(个人springboot使用的8080端口,无上下文),127.0.0.1/api/portal 就代理到 127.0.0.1:8080上面了api
location /api/portal/ { proxy_pass http://127.0.0.1:8080/; }
将 natapp 穿透到本机的127.0.0.1:80 ,穿透时咱们能够自定义一个二级域名 最后的获得一个 http://xxx.natapp4.cc -> 127.0.0.1:80 ,访问 http://xxxx.natapp4.cc 就代理到咱们本地的nginx上了。springboot
最终获得 访问 http://xxxx.natapp4.cc/api/portal 就到了我本地的 127.0.0.1:8080 上面了。微信
接收微信事件接口准备网络
import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 接收微信事件推送接口 * get 和 post 方法访问路径必定要一致。 */ @RestController @RequestMapping("weixinCallBack") public class WeiXinCallbackController { /** * 验证地址的正确性 * 必定要使用【get】方式 * * @param request * @return */ @GetMapping(value = "/callBack") public String callBack(HttpServletRequest request) { String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); return echostr; } /** * 接收消息推送 * 必定要使用【post】方式 * 貌似有些接口给的是json,有些接口给的是xml * * @param request * @param resp * @param s * @return */ @PostMapping(value = "/callBack") public Boolean callBack(HttpServletRequest request, HttpServletResponse resp, @RequestBody String s) { System.out.println(s); // xml 格式的 或者 json 格式的字符串 // 业务逻辑处理 // .... // 返回给微信,果真没有返回微信会重试几回 return true; } }
测试
启动准备好本地网络穿透,启动好接收微信推送的接口后。
1 将咱们的接口地址配置到接口信息配置的url 填入 http://xxxx.natapp4.cc/api/portal/weixinCallBack/callBack。并提交
2 开始测试了,直接在微信公众平台接口调试工具上测试或者经过在手机微信上操做【取消/关注】测试号来测试
微信公众平台接口调试工具测试方法如图(截图选的json可是我实际上选的是xml)
填写必填信息 提交便可在咱们本地接收到微信事件推送的消息(如下就是 本地springboot工程中@PostMapping(value = "/callBack") 接收到的参数)
<xml> <URL><![CDATA[http://xxxxxx.natapp4.cc/api/portal/weixinCallBack/callBack]]></URL> <ToUserName><![CDATA[aa]]></ToUserName> <FromUserName><![CDATA[324324324]]></FromUserName> <CreateTime>1234567</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[safdsfEwrewh哈哈]]></Content> <MsgId>1234567890000000000000000000</MsgId> </xml>
至此 springboot微信公众号接口配置信息接入完成,具体的接收到xml 或者json以后的业务逻辑处理 均可以作了。
基础点就是按照微信文档配置接口,编码本地代码,难点在于本地网络与微信的打通。
本文同步发表于:https://www.l2jiabo.com 佳波IT学习分享网
欢迎你们一块儿交流IT技术 2742389525@qq.com 一个2015年入坑的无聊的java工程师