歡迎留言、轉(zhuǎn)發(fā)、
項(xiàng)目源碼參考地址 點(diǎn)我點(diǎn)我--歡迎Start
前幾篇文章已講完如何導(dǎo)入項(xiàng)目,如何啟動(dòng)配置項(xiàng)目,如何成為開(kāi)發(fā)者,重源碼分析消息是如何交互(如果前四項(xiàng)不是很清楚可以看這里 極速開(kāi)發(fā)微信公眾號(hào)。這篇文章就來(lái)講講如果實(shí)現(xiàn)自定義菜單
實(shí)現(xiàn)自定義菜單有兩種方式
1、編輯模式
2、開(kāi)發(fā)模式
編輯模式就很簡(jiǎn)單了就不贅述了......
開(kāi)發(fā)模式實(shí)現(xiàn)自定義菜單
1、使用微信公眾平臺(tái)接口調(diào)試工具實(shí)現(xiàn)
2、使用官方提供的接口實(shí)現(xiàn)
前期準(zhǔn)備
注意:
1、目前訂閱號(hào)
只能使用編輯模式而且不能添加超鏈接,微信認(rèn)證之后才可以使用開(kāi)發(fā)模式。
2、編輯模式與開(kāi)發(fā)模式不能同時(shí)開(kāi)啟
3、生成的菜單不會(huì)立即顯示(隔天),如果想立即看到效果可以取消關(guān)注再關(guān)注
添加插件
K8WTIEI86W9W5XERD`MRD{6.png
使用微信公眾平臺(tái)接口調(diào)試工具實(shí)現(xiàn)
自定義菜單-接口調(diào)試工具.png
可以看到需要兩個(gè)參數(shù)而且都是必填 access_token
?body
有人要問(wèn),這兩個(gè)參數(shù)如何獲取呢?
body
其實(shí)就是要生成菜單的JSON對(duì)象
官方有提供一個(gè)栗子可以參考。
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "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" }] }] }
access_token
的獲取如下圖
自定義菜單-獲取access_token.png
使用官方提供的接口實(shí)現(xiàn)
初次了解微信自定義菜單的同學(xué)建議先看看官方的文檔3遍
在Jfinal-weixin
中有封裝菜單的創(chuàng)建、查詢、刪除、以及個(gè)性化菜單的創(chuàng)建、查詢、刪除、測(cè)試個(gè)性化菜單匹配結(jié)果
自定義菜單-菜單封裝的接口.png
那么問(wèn)題來(lái)了,封裝好了如何使用呢?
以下是提供封裝的接口
//查詢自定義菜單 public static ApiResult getMenu() { String jsonResult = HttpUtils.get(getMenu + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); } //創(chuàng)建自定義菜單 public static ApiResult createMenu(String jsonStr) { String jsonResult = HttpUtils.post(createMenu + AccessTokenApi.getAccessTokenStr(), jsonStr); return new ApiResult(jsonResult); } //刪除自定義菜單 public static ApiResult deleteMenu() { String jsonResult = HttpUtils.get(deleteMenuUrl + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); } //創(chuàng)建個(gè)性化自定義菜單 public static ApiResult addConditional(String jsonStr) { String jsonResult = HttpUtils.post(addConditionalUrl + AccessTokenApi.getAccessTokenStr(), jsonStr); return new ApiResult(jsonResult); } //刪除個(gè)性化自定義菜單 public static ApiResult delConditional(String menuid) { HashMap params = new HashMap(); params.put("menuid", menuid); String url = delConditionalUrl + AccessTokenApi.getAccessTokenStr(); String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params)); return new ApiResult(jsonResult); } //測(cè)試個(gè)性化菜單匹配結(jié)果 public static ApiResult tryMatch(String userId) { HashMap params = new HashMap(); params.put("user_id", userId); String url = tryMatchUrl + AccessTokenApi.getAccessTokenStr(); String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params)); return new ApiResult(jsonResult); } public static ApiResult getCurrentSelfMenuInfo() { String jsonResult = HttpUtils.get(getCurrentSelfMenuInfoUrl + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); }
在開(kāi)源項(xiàng)目weixin_guide中com.javen.weixin.menu.MenuManager
類中提供了詳細(xì)使用的Demo
public static void main(String[] args) { // 將菜單對(duì)象轉(zhuǎn)換成json字符串 String jsonMenu = JsonKit.toJson(getTestMenu()).toString(); System.out.println(jsonMenu); ApiConfig ac = new ApiConfig(); // 配置微信 API 相關(guān)常量 請(qǐng)使用你自己公眾號(hào)的 ac.setAppId("wx614c453e0d1dcd12"); ac.setAppSecret("19a02e4927d346484fc70327970457f9"); // ac.setAppId(PropKit.get("appId")); // ac.setAppSecret(PropKit.get("appSecret")); ApiConfigKit.setThreadLocalApiConfig(ac); //創(chuàng)建菜單 ApiResult apiResult=MenuApi.createMenu(jsonMenu); System.out.println(apiResult.getJson()); }
可以看到main方法中調(diào)用了MenuApi.createMenu(jsonMenu)
那jsonMenu
從何而來(lái)呢?
其實(shí)這里是將自定義菜單的實(shí)體對(duì)象轉(zhuǎn)化為了JSON
String jsonMenu = JsonKit.toJson(getTestMenu()).toString();
菜單的封裝
/** * 組裝菜單數(shù)據(jù) * * @return */ private static Menu getTestMenu() { ClickButton btn11 = new ClickButton(); btn11.setName("微信相冊(cè)發(fā)圖"); btn11.setType("pic_weixin"); btn11.setKey("rselfmenu_1_1"); ClickButton btn12 = new ClickButton(); btn12.setName("拍照或者相冊(cè)發(fā)圖"); btn12.setType("pic_photo_or_album"); btn12.setKey("rselfmenu_1_2");; ClickButton btn13 = new ClickButton(); btn13.setName("系統(tǒng)拍照發(fā)圖"); btn13.setType("pic_sysphoto"); btn13.setKey("rselfmenu_1_3"); ClickButton btn21 = new ClickButton(); btn21.setName("掃碼帶提示"); btn21.setType("scancode_waitmsg"); btn21.setKey("rselfmenu_2_1");; ClickButton btn22 = new ClickButton(); btn22.setName("掃碼推事件"); btn22.setType("scancode_push"); btn22.setKey("rselfmenu_2_2");; ViewButton btn23 = new ViewButton(); btn23.setName("我的設(shè)備"); btn23.setType("view"); btn23.setUrl("https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"); ViewButton btn31 = new ViewButton(); btn31.setName("微社區(qū)"); btn31.setType("view"); btn31.setUrl("http://whsf.tunnel.mobi/whsf/msg/wsq"); ClickButton btn32 = new ClickButton(); btn32.setName("發(fā)送位置"); btn32.setType("location_select"); btn32.setKey("rselfmenu_3_2"); //http://tencent://message/?uin=572839485&Site=在線咨詢&Menu=yes //http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes ViewButton btn33 = new ViewButton(); btn33.setName("在線咨詢"); btn33.setType("view"); btn33.setUrl("http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"); ViewButton btn34 = new ViewButton(); btn34.setName("我的博客"); btn34.setType("view"); btn34.setUrl("http://www.cnblogs.com/zyw-205520"); ClickButton btn35 = new ClickButton(); btn35.setName("點(diǎn)擊事件"); btn35.setType("click"); btn35.setKey("rselfmenu_3_5"); ComButton mainBtn1 = new ComButton(); mainBtn1.setName("發(fā)圖"); mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13}); ComButton mainBtn2 = new ComButton(); mainBtn2.setName("掃碼"); mainBtn2.setSub_button(new Button[] { btn21, btn22 ,btn23}); ComButton mainBtn3 = new ComButton(); mainBtn3.setName("個(gè)人中心"); mainBtn3.setSub_button(new Button[] { btn31, btn32, btn33, btn34 ,btn35 }); /** * 這是公眾號(hào)xiaoqrobot目前的菜單結(jié)構(gòu),每個(gè)一級(jí)菜單都有二級(jí)菜單項(xiàng)<br> * * 在某個(gè)一級(jí)菜單下沒(méi)有二級(jí)菜單的情況,menu該如何定義呢?<br> * 比如,第三個(gè)一級(jí)菜單項(xiàng)不是“更多體驗(yàn)”,而直接是“幽默笑話”,那么menu應(yīng)該這樣定義:<br> * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); */ Menu menu = new Menu(); menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 }); return menu; }
執(zhí)行main方法會(huì)輸出生成菜單的JSON以及響應(yīng)的狀態(tài)
生成菜單的JSON:{"button":[{"sub_button":[{"name":"微信相冊(cè)發(fā)圖","type":"pic_weixin","key":"rselfmenu_1_1"},{"name":"拍照或者相冊(cè)發(fā)圖","type":"pic_photo_or_album","key":"rselfmenu_1_2"},{"name":"系統(tǒng)拍照發(fā)圖","type":"pic_sysphoto","key":"rselfmenu_1_3"}],"name":"發(fā)圖","type":null},{"sub_button":[{"name":"掃碼帶提示","type":"scancode_waitmsg","key":"rselfmenu_2_1"},{"name":"掃碼推事件","type":"scancode_push","key":"rselfmenu_2_2"},{"name":"我的設(shè)備","type":"view","url":"https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"}],"name":"掃碼","type":null},{"sub_button":[{"name":"微社區(qū)","type":"view","url":"http://whsf.tunnel.mobi/whsf/msg/wsq"},{"name":"發(fā)送位置","type":"location_select","key":"rselfmenu_3_2"},{"name":"在線咨詢","type":"view","url":"http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"},{"name":"我的博客","type":"view","url":"http://www.cnblogs.com/zyw-205520"},{"name":"點(diǎn)擊事件","type":"click","key":"rselfmenu_3_5"}],"name":"個(gè)人中心","type":null}],"matchrule":null} 響應(yīng)的狀態(tài): {"errcode":0,"errmsg":"ok"}
以上是生成自定義菜單的全過(guò)程。
【相關(guān)推薦】
3.?微信人脈王v3.4.5高級(jí)商業(yè)版 微信魔方源碼
Atas ialah kandungan terperinci 分享微信公眾號(hào)開(kāi)發(fā)自定義菜單實(shí)例教程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan web dan pengaturcaraan sisi pelayan, terutamanya dalam pembangunan WeChat. Hari ini, semakin banyak syarikat dan pembangun mula menggunakan PHP untuk pembangunan WeChat kerana ia telah menjadi bahasa pembangunan yang benar-benar mudah dipelajari dan mudah digunakan. Dalam pembangunan WeChat, penyulitan dan penyahsulitan mesej merupakan isu yang sangat penting kerana ia melibatkan keselamatan data. Untuk mesej tanpa kaedah penyulitan dan penyahsulitan, penggodam boleh mendapatkan data dengan mudah, menimbulkan ancaman kepada pengguna.

Cara menulis fungsi menu tersuai untuk sistem CMS dalam Python Apabila membangun dan mereka bentuk CMS (sistem pengurusan kandungan), fungsi menu tersuai adalah bahagian yang sangat penting. Ia membolehkan pengguna menyesuaikan menu mengikut keperluan dan pilihan mereka untuk akses pantas kepada pelbagai ciri dan halaman. Dalam artikel ini, kami akan menulis sistem CMS mudah menggunakan Python dan menambah fungsi menu tersuai. Pertama, kita perlu mencipta kelas menu untuk menyimpan dan mengurus maklumat item menu. Setiap item menu mengandungi nama dan laluan halaman yang sepadan

Dalam pembangunan akaun awam WeChat, fungsi pengundian sering digunakan. Fungsi undian ialah cara yang bagus untuk pengguna mengambil bahagian dalam interaksi dengan pantas, dan ia juga merupakan alat penting untuk mengadakan acara dan meninjau pendapat. Artikel ini akan memperkenalkan anda cara menggunakan PHP untuk melaksanakan fungsi undian WeChat. Dapatkan kebenaran akaun rasmi WeChat Pertama, anda perlu mendapatkan kebenaran akaun rasmi WeChat. Pada platform awam WeChat, anda perlu mengkonfigurasi alamat API akaun awam WeChat, akaun rasmi dan token yang sepadan dengan akaun awam. Dalam proses pembangunan kami menggunakan bahasa PHP, kami perlu menggunakan PH yang disediakan secara rasmi oleh WeChat

Dengan populariti WeChat, semakin banyak syarikat mula menggunakannya sebagai alat pemasaran. Fungsi pemesejan kumpulan WeChat ialah salah satu cara penting bagi perusahaan untuk menjalankan pemasaran WeChat. Walau bagaimanapun, jika anda hanya bergantung pada penghantaran manual, ia adalah tugas yang sangat memakan masa dan susah payah untuk pemasar. Oleh itu, adalah amat penting untuk membangunkan alat pemesejan massa WeChat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan alat penghantaran massa WeChat. 1. Kerja penyediaan Untuk membangunkan alat pemesejan massa WeChat, kita perlu menguasai perkara teknikal berikut: Pengetahuan asas PHP WeChat alat pembangunan platform awam: Sub

WeChat kini merupakan salah satu platform sosial dengan pangkalan pengguna terbesar di dunia Dengan populariti Internet mudah alih, semakin banyak syarikat mula menyedari kepentingan pemasaran WeChat. Apabila menjalankan pemasaran WeChat, perkhidmatan pelanggan adalah bahagian yang penting. Untuk mengurus tetingkap sembang perkhidmatan pelanggan dengan lebih baik, kami boleh menggunakan bahasa PHP untuk pembangunan WeChat. 1. Pengenalan kepada pembangunan PHP WeChat PHP ialah bahasa skrip bahagian pelayan sumber terbuka yang digunakan secara meluas dalam bidang pembangunan Web. Digabungkan dengan antara muka pembangunan yang disediakan oleh platform awam WeChat, kami boleh menggunakan bahasa PHP untuk menjalankan WeChat

Dalam pembangunan akaun awam WeChat, pengurusan tag pengguna ialah fungsi yang sangat penting, yang membolehkan pembangun memahami dan mengurus pengguna mereka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengurusan teg pengguna WeChat. 1. Dapatkan openid pengguna WeChat Sebelum menggunakan fungsi pengurusan tag pengguna WeChat, kita perlu mendapatkan openid pengguna terlebih dahulu. Dalam pembangunan akaun awam WeChat, adalah amalan biasa untuk mendapatkan openid melalui kebenaran pengguna. Selepas kebenaran pengguna selesai, kami boleh mendapatkan pengguna melalui kod berikut

Memandangkan WeChat menjadi alat komunikasi yang semakin penting dalam kehidupan orang ramai, fungsi pemesejan tangkasnya digemari oleh sebilangan besar perusahaan dan individu. Bagi perusahaan, membangunkan WeChat menjadi platform pemasaran telah menjadi trend, dan kepentingan pembangunan WeChat secara beransur-ansur menjadi lebih menonjol. Antaranya, fungsi penghantaran kumpulan lebih banyak digunakan Jadi, sebagai pengaturcara PHP, bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan? Berikut akan memberi anda pengenalan ringkas. 1. Memahami pengetahuan pembangunan yang berkaitan dengan akaun awam WeChat Sebelum memahami cara melaksanakan rekod penghantaran mesej kumpulan, I

Cara menggunakan PHP untuk membangunkan akaun awam WeChat Akaun awam WeChat telah menjadi saluran penting untuk promosi dan interaksi bagi banyak syarikat, dan PHP, sebagai bahasa Web yang biasa digunakan, juga boleh digunakan untuk membangunkan akaun awam WeChat. Artikel ini akan memperkenalkan langkah khusus untuk menggunakan PHP untuk membangunkan akaun awam WeChat. Langkah 1: Dapatkan akaun pembangun akaun rasmi WeChat Sebelum memulakan pembangunan akaun rasmi WeChat, anda perlu memohon akaun pembangun akaun rasmi WeChat. Untuk proses pendaftaran khusus, sila rujuk laman web rasmi platform awam WeChat
