首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 微信開發實戰:自定義菜單與個性化菜單完整實現

     編輯:Java 相關知識

核心架構設計

本文系統實現微信公眾平台全部菜單類型:click、view、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、pic_weixin、location_select、media_id、view_limited,並支援個性化菜單按性別、地域、語言、客戶端類型、用戶分組投放。

AccessToken 智能管理

AccessTokenUtils 採用本地文件緩存策略:首次獲取存入文件(token+時間戳),後續讀取判斷是否超過 7200 秒有效期,過期自動刷新。採用 Gson 實現 JSON 與 Bean 雙向轉換,全異常捕獲保證穩定性。

菜單 JSON 結構與 Bean 映射

三層結構解析

  • 一級:button 陣列(1-3 個父按鈕)
  • 二級:父按鈕(含 name、type、key/url/media_id、sub_button)
  • 三級:子按鈕(1-5 個,同父按鈕結構)

Java Bean 體系

// 基礎按鈕屬性
class BaseButton { type, name, key, url, media_id }

// 子按鈕
class SonButton extends BaseButton { }

// 父按鈕:支援單一響應或包含子按鈕列表
class FatherButton extends BaseButton {
    @SerializedName("sub_button")
    List<SonButton> sonButtons;
}

// 整體菜單
class Menu {
    @SerializedName("button")
    List<FatherButton> fatherButtons;
    MatchRule matchrule; // 個性化菜單匹配規則
}

// 個性化匹配規則
class MatchRule {
    group_id, sex, client_platform_type, country, province, city, language
}

自定義菜單創建實現

構建包含三組父按鈕的完整菜單:

  • 父按鈕 1:單一 click 類型(關鍵字回覆)
  • 父按鈕 2:包含 5 個子按鈕(view、掃碼、系統拍照、拍照/相冊)
  • 父按鈕 3:包含 2 個子按鈕(微信相冊、地理位置),media_id 類型需素材庫支持暫未測試

Gson 序列化生成標準 JSON,HTTPS POST 請求發送至 /cgi-bin/menu/create 接口。

個性化菜單實現

僅需兩處修改:
1. 接口地址改為 /cgi-bin/menu/addconditional
2. 構建 MatchRule 設置匹配條件(示例:sex="2" 針對男性用戶),注入 Menu 對象

工程化建議

  • 菜單配置外部化:資料庫存儲菜單結構,後台管理界面動態生成
  • 多環境支持:開發/測試/生產環境隔離 AppID/Secret
  • 錯誤碼處理:完善 errcode/errmsg 解析與重試機制
  • 素材管理整合:media_id 類型菜單需配合素材上傳接口使用

完整項目結構

源碼包含:AccessTokenUtils、Bean 定義、菜單構建邏輯、JUnit 測試用例、依賴管理。提供完整可運行的參考實現,適用於快速接入微信菜單功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved