???? ???? ?? ?????.
???? ?? ?? ?? ??? ??? ?? ?????--??? ?????
?? ???? ????? ???? ??? ?? ??????. ?? ????? ???? ??, ???? ?? ??, ?? ?? ?? ???? ?? ???? ??(?? ? ?? ??? ???? ?? ?? ??? ?? WeChat ?? ??? ??? ??? ? ????. ? ????? ??? ?? ?????. ??? ?? ?? ??
??? ?? ??? ???? ??? ? ??? ????
1. ?? ??
2. ?? ??
?? ??? ?? ?????. ??? ??? ??? ?????...
??? ?? ?? ??? ?? ?? ??
1. WeChat ?? ??? ????? ??? ??? ???? ??
2. ?? ?????? ???? ??
?? ??
???? ????:
1. ??訂閱號(hào)
?? ??? ??? ? ???, ?? ??? WeChat ?? ??? ??? ? ????. ??>2. ????? ????? ??? ? ? ????
3. ??? ??? ??(???) ???? ????. ?? ??? ?? ???? ???? ??? ???. ??
access_token
body
?? ??? ???? ??? body
???? ??????. ??? JSON對(duì)象
{ "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
Custom menu-get access_token.png
?? ?? ??? ?? ??? ???? ????? 3? ????? ????
??? ???? ??? ??, ??, ??? ?????
?? ??? ?? ?? ???Jfinal-weixin
?? ??-?? ??? ?????.png
???? ???? ??? ????.
//查詢自定義菜單 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); }
????????
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()); }
???? ???? weixin_guide ???
? ??
? ??? ??
com.javen.weixin.menu.MenuManager
?? ???? ?? ? ? ????. ??? ??? ??? JSON??
MenuApi.createMenu(jsonMenu)
jsonMenu
/** * 組裝菜單數(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í)菜單下沒有二級(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; }
?? ???? ??? ??? JSON? ?? ??
生成菜單的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"}?? ??? ?? ??? ???? ?? ?????.
String jsonMenu = JsonKit.toJson(getTestMenu()).toString();
[?? ??]
1.
?? ???? ??? ???? ???? Weizhichuang T+ ?? ?? ????3. WeChat People Network v3.4.5 ?? ???? ?? WeChat ??? ?? ?? ??
? ??? WeChat ?? ??? ?? ??? ?? ??? ?? ?? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP? ? ?? ? ?? ? ?????, ?? WeChat ??? ?? ???? ?? ?? ???? ?????. ??? ?? ? ?? ??? ???? WeChat ??? PHP? ???? ???? ????. PHP? ??? ?? ???? ?? ?? ???? ?????. WeChat ???? ??? ??? ? ???? ??? ??? ???? ?? ??? ?? ??? ?????. ??? ? ??? ??? ?? ???? ?? ??? ?? ???? ??? ? ?? ????? ??? ? ? ????.

Python?? CMS ???? ??? ?? ?? ??? ???? ?? CMS(??? ?? ???)? ???? ??? ? ??? ?? ?? ??? ?? ??? ?????. ?? ?? ???? ??? ??? ???? ??? ???? ? ??? ??? ???? ?? ??? ??? ??? ? ????. ? ????? Python? ???? ??? CMS ???? ???? ??? ?? ?? ??? ?????. ?? ?? ?? ??? ???? ???? ?? ?? ???? ???? ???. ? ?? ???? ??? ?? ??? ??? ???? ????.

WeChat ?? ??? ??? ? ?? ??? ?? ?????. ?? ??? ????? ?? ??? ??? ??? ? ?? ?? ????, ??? ?? ? ?? ??? ?? ??? ????? ???. ? ????? PHP? ???? WeChat ?? ??? ???? ??? ?????. WeChat ?? ?? ??? ???? ?? WeChat ?? ?? ??? ??? ???. WeChat ?? ?????? WeChat ?? ??, ?? ?? ? ?? ??? ???? ??? API ??? ???? ???. PHP ??? ???? ???? ???? WeChat?? ????? ???? PH? ???? ???.

WeChat? ??? ?? ?? ? ?? ??? WeChat? ??? ??? ???? ??????. WeChat ?? ??? ??? ??? WeChat ???? ???? ??? ?? ? ?????. ??? ?? ???? ????? ??? ?????? ?? ??? ?? ??? ?? ?????. ??? WeChat ?? ??? ??? ???? ?? ?? ?????. ? ????? PHP? ???? WeChat ?? ??? ??? ???? ??? ?????. 1. ?? ?? WeChat ?? ??? ??? ????? ?? ?? ??? ???? ???. PHP WeChat ?? ??? ??? ?? ?? ?? ?? ??: Sub

WeChat? ?? ???? ?? ? ??? ??? ??? ?? ??? ? ?????. ??? ???? ??? ?? ?? ? ?? ???? WeChat ???? ???? ??? ??????. WeChat ???? ??? ? ?? ???? ??? ?????. ?? ??? ?? ?? ? ? ???? ?? WeChat ??? PHP ??? ??? ? ????. 1. PHP ?? WeChat ?? PHP? ? ?? ???? ?? ???? ?? ?? ?? ? ???? ?????. WeChat ?? ????? ???? ?? ?????? ???? PHP ??? ???? WeChat? ??? ? ????.

WeChat ?? ?? ???? ??? ?? ??? ???? ???? ? ? ???? ??? ? ??? ?? ?? ??? ?????. ? ????? PHP? ???? WeChat ??? ?? ?? ??? ???? ??? ?????. 1. WeChat ???? openid? ?????. WeChat ??? ?? ?? ??? ???? ?? ?? ???? openid? ???? ???. WeChat ?? ??? ??? ? ??? ??? ?? openid? ?? ?? ???? ?????. ??? ??? ???? ?? ??? ?? ???? ?? ? ????.

WeChat? ???? ??? ?? ? ??? ?????? ??? ???, WeChat? ??? ??? ??? ?? ??? ??? ??? ??? ?? ????. ??? ?? WeChat? ??? ????? ???? ?? ??? ??? ???? WeChat ??? ???? ?? ?? ???? ????. ? ? ?? ?? ??? ?? ?? ?????. ???? PHP ??????? ?? ??? ?? ??? ??? ???? ???? ??? ??? ?????. 1. WeChat ?? ??? ??? ?? ??? ?????. ?? ??? ?? ??? ???? ??? ?????.

PHP? ???? WeChat ?? ??? ???? ?? WeChat ?? ??? ?? ??? ?? ? ?? ??? ?? ??? ??? ????, ????? ???? ? ??? PHP? ???? WeChat ?? ??? ??? ?? ????. ? ????? PHP? ???? WeChat ?? ??? ???? ???? ??? ?????. 1??: WeChat ?? ??? ??? ??? ????. WeChat ?? ?? ??? ???? ?? WeChat ?? ??? ??? ??? ???? ???. ???? ?? ??? WeChat ?? ??? ?? ????? ?????.
