最近想了解一下微信公眾號的開發(fā),于是就寫了這么一個博客。
我使用了SpringMVC、Spring、MyBatis來構建項目的框架,通過Maven對jar包進行管理。
開發(fā)前你需要做的
-
申請測試賬號

-
服務器接口配置
??公眾號開發(fā)前需要對消息進行驗證,是否來自于服務器,具體驗證過程可以瀏覽微信公眾號開發(fā)文檔,官方也給出了代碼示例。接下來就是接口信息配置,我使用的是一款內網穿透工具 ngrok,好處就是將本機地址映射到外網中,方便于測試使用:


??token值應該與你代碼中設置的token保持一致。填寫好后提交,如果出現(xiàn)配置失敗,多提交兩三次,即可,如果還是失敗,那就要檢查你的代碼了。到這里微信開發(fā)的基本配置算是弄好了。
設置access_token值
??access_token是公眾號的全局唯一接口調用憑據(jù),公眾號調用各接口時都需使用access_token。access_token的有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的access_token失效。這里我使用了SpringMVC里的一個定時器,每兩小時獲取一次access_token的值存入數(shù)據(jù)庫:
/**
* 每兩小時獲取一次access_token值,并將access_token值存入數(shù)據(jù)庫中
*/
@Scheduled(cron = "0 0 */2 * * ?")
public void getAccessToken() throws IOException {
System.out.println("獲取access_token值:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
AccessToken accessToken = CommonUtil.getAccessToken();
System.out.println(accessToken.getAccess_token());
System.out.println(accessToken.getExpires_in());
// 將access_token存入數(shù)據(jù)庫
weChatService.insertAccessToken(accessToken);
}
??以及手動獲取access_token的值:
/**
* 手動獲取access_token值: 如果當前時間與數(shù)據(jù)庫里的最新access_token值的時間相差大于7200秒,則access_token過期,需要重新獲取access_token值,并入庫
* @return
* @throws IOException
*/
public String queryLatestAccessToken() throws IOException {
AccessToken accessToken = weChatService.queryLatestAccessToken();
long curMillis = DateUtil.getCurrentMillis();
long myCustomMillis = DateUtil.getCustomDateMillis(accessToken.getCreate_time());
if ((curMillis - myCustomMillis) / 1000 >= 7200) {
System.out.println("access_token值已過期,重新獲取并入庫......");
accessToken = CommonUtil.getAccessToken();
weChatService.insertAccessToken(accessToken);
}
return accessToken.getAccess_token();
}
功能
??可以對自定義菜單進行創(chuàng)建、刪除、事件推送,創(chuàng)建、刪除、查詢個性化菜單;可以接收普通消息,接收事件推送、被動回復用戶消息。
優(yōu)點
??使用SSM框架,對代碼有很強的復用性和擴展性,并且很穩(wěn)定。后續(xù)增加新的功能,可以直接在現(xiàn)有代碼上進行二次開發(fā)。