<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                前言: 自定義菜單能夠幫助公眾號豐富界面,讓用戶更好更快地理解公眾號的功能。 目前菜單創建的權限只有服務號或者是通過認證過的賬號。未認證的訂閱號暫不支持自定義 ? 自定義菜單的賬號樣子如圖: ![](https://box.kancloud.cn/2016-03-07_56dce48491c58.png) ? 【題外話】 這是我申請的測試號,里面有所有的接口權限,怎么申請看下圖 ![](https://box.kancloud.cn/2016-03-07_56dce484b3aa5.jpg) ? 自定義菜單基本介紹: 目前自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單。一級菜單最多4個漢字,二級菜單最多7個漢字,多出來的部分將會以“...”代替。請注意,創建自定義菜單后,由于微信客戶端緩存,需要24小時微信客戶端才會展現出來。建議測試時可以嘗試取消關注公眾賬號后再次關注,則可以看到創建后的效果。 目前自定義菜單接口可實現兩種類型按鈕,如下: ~~~ click: 用戶點擊click類型按鈕后,微信服務器會通過消息接口推送消息類型為event 的結構給開發者(參考消息接口指南),并且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與用戶進行交互; view: 用戶點擊view類型按鈕后,微信客戶端將會打開開發者在按鈕中填寫的url值 (即網頁鏈接),達到打開網頁的目的,建議與網頁授權獲取用戶基本信息接口結合,獲得用戶的登入個人信息。 ~~~ **接口調用請求說明** ? http請求方式:POST(請使用https協議)?[https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN](https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN) **自定義菜單的請求是一個json格式的請求內容** **官網的請求示例** ~~~ { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "type":"click", "name":"歌手簡介", "key":"V1001_TODAY_SINGER" }, { "name":"菜單", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"view", "name":"視頻", "url":"http://v.qq.com/" }, { "type":"click", "name":"贊一下我們", "key":"V1001_GOOD" }] }] } ~~~ **參數說明** ![](https://box.kancloud.cn/2016-03-07_56dce484cc486.jpg) **返回結果** 正確時的返回JSON數據包如下: ~~~ {"errcode":0,"errmsg":"ok"} ~~~ 錯誤時的返回JSON數據包如下(示例為無效菜單名長度): ~~~ {"errcode":40018,"errmsg":"invalid button name size"} ~~~ **通過json格式創建菜單** ? ~~~ package com.ifp.weixin.biz.core.impl; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import com.ifp.weixin.biz.core.MenuService; import com.ifp.weixin.util.WeixinUtil; @Service("menuService") public class MenuServiceImpl implements MenuService { public static Logger log = Logger.getLogger(MenuServiceImpl.class); // 菜單創建(POST) 限100(次/天) public static String MENU_CREATE = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN"; @Override public String CreateMenu(String jsonMenu) { String resultStr = ""; // 調用接口獲取token String token = WeixinUtil.getToken(); if (token != null) { // 調用接口創建菜單 int result = createMenu(jsonMenu, token); // 判斷菜單創建結果 if (0 == result) { resultStr = "菜單創建成功"; log.info(resultStr); } else { resultStr = "菜單創建失敗,錯誤碼:" + result; log.error(resultStr); } } return resultStr; } /** * 創建菜單 * * @param jsonMenu * 菜單的json格式 * @param accessToken * 有效的access_token * @return 0表示成功,其他值表示失敗 */ public static int createMenu(String jsonMenu, String accessToken) { int result = 0; // 拼裝創建菜單的url String url = MENU_CREATE.replace("ACCESS_TOKEN", accessToken); // 調用接口創建菜單 JSONObject jsonObject = WeixinUtil.httpRequest(url, "POST", jsonMenu); if (null != jsonObject) { if (0 != jsonObject.getInt("errcode")) { result = jsonObject.getInt("errcode"); log.error("創建菜單失敗 errcode:" + jsonObject.getInt("errcode") + ",errmsg:" + jsonObject.getString("errmsg")); } } return result; } public static void main(String[] args) { // 這是一個符合菜單的json格式,“\”是轉義符 String jsonMenu = "{\"button\":[{\"name\":\"生活助手\",\"sub_button\":[{\"key\":\"11\",\"name\":\"天氣預報\",\"type\":\"click\"},{\"key\":\"12\",\"name\":\"公交查詢\",\"type\":\"click\"}]},{\"name\":\"音智達\",\"sub_button\":[{\"key\":\"21\",\"name\":\"好東西哦\",\"type\":\"click\"},{\"key\":\"22\",\"name\":\"人臉識別\",\"type\":\"click\"}]},{\"name\":\"更多體驗\",\"sub_button\":[{\"key\":\"33\",\"name\":\"幽默笑話\",\"type\":\"click\"},{\"name\":\"View類型的\",\"type\":\"view\",\"url\":\"http://m.baidu.com\"}]}]}"; MenuServiceImpl impl = new MenuServiceImpl(); impl.CreateMenu(jsonMenu); } } ~~~ ok,運行main方法后,菜單就創建好了, 由于微信會緩存菜單24小時,建議先取消關注,再關注,菜單就會顯示出來了。 (ps:也可以建立菜單實體類,再由實體類轉換成json,也可以實現創建菜單, 我直接用json,是因為第一:簡單,第二:我會開發后臺管理系統,要在后臺管理菜單,傳json方便) ? 可加我的微信公眾號一起討論 微信公眾號:andedaohang 或掃描二維碼 ![](https://box.kancloud.cn/2016-03-07_56dce482f16c7.jpg) 轉載請注明出處:[http://blog.csdn.net/tuposky/article/details/40589321](http://blog.csdn.net/tuposky/article/details/40589321) [![](https://box.kancloud.cn/2016-03-07_56dce484f0a74.png "點擊查看原始大小圖片")](http://dl2.iteye.com/upload/attachment/0093/9846/d7166996-a67c-3544-af97-39cd1c41377e.png) 大小: 117.7 KB [![](https://box.kancloud.cn/2016-03-07_56dce4851112c.jpg "點擊查看原始大小圖片")](http://dl2.iteye.com/upload/attachment/0093/9856/0d7ffb76-6085-35a6-9129-3e13f165a798.jpg) 大小: 61.8 KB [![](https://box.kancloud.cn/2016-03-07_56dce485211b2.jpg "點擊查看原始大小圖片")](http://dl2.iteye.com/upload/attachment/0093/9863/805c8549-b2fb-3cca-96be-349400e30281.jpg) 大小: 48.3 KB [查看圖片附件](#)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看