方法一:不開啟開發模式,直接在自定義菜單中跳轉到網頁,適用於流量較小的公眾號。
方法二:開啟開發者模式,關閉自帶的自定義菜單和消息回復,接入自己開發的應用
1、接入校驗:創建servlet,在doGet()中進行校驗,校驗成功表示微信和當前應用接入成功
2、響應用戶發送的消息:在servlet的doPost()中進行響應xml消息,xml消息有以下屬性:
FromUserName,ToUserName,MsgType,Content
其中MsgType又分event,text,voice,video,link,location,subscribe等等類型,系統需要先根據MsgType類型來進行響應
3、通過appId和secretId獲取accessToken,用於調用微信的接口。token有效時間一般為2小時。
1)可以開啟線程用thread.sleep(2000)來不斷獲取token放到靜態字段里,要用的時候到靜態字段里取即可
2)將token、過期時間保存到redis等數據庫中,用的時候取出,然后判斷是否過期,過期則重新獲取。
3、創建自定義菜單
組裝自定義菜單(json),通過post請求將自定義菜單連帶accessToken發送到微信接口。菜單創建
交互圖:

以下是acessToken設計偽代碼:
class WxServlet extends HttpServlet{ doGet(){//接入校驗} doPost(){//響應消息} init(){ WxUtil.createMenu(); } } class AcessToken{ pivate String token; private String expires; //getter setter } class WxUtil{ void createMenu(){ //獲取acessToken getAcessToken(); //組裝菜單(json)發送post請求到微信服務器,創建成功 } String getAcessToken(){ //校驗token是否過期,過期重新獲取,否則用數據庫中的數據 AcessToken t= getAcessTokenFromDb(); if(checkExpires(t.exprise)) return t.token; else return getAcessTokenFromWx().token; } AcessToken getAcessTokenFromDb(){} AcessToken getAcessTokenFromWx(){ //通過微信接口請求acessToken,保存到數據庫 saveToken2Db(t); //返回token } void saveToken2Db(t){ //將token保存到數據庫或內存中 } }