微信公衆號要使用微信的消息接口須要配置接收請求的地址,微信全部事件信息都將發送到該接口,好比關注,取消關注,上報地理位置等。可是使用這個有一個前提須要在微信公衆平臺配置地址,而且驗證地址的正確性。如圖須要填寫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工程師