官方文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html
请注意:自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以“…”代替。
接口类型:post
接口地址:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
自定义菜单分为10种,我这里使用的是view类型,打开网页url。
下面为chick和view的数据格式
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"miniprogram",
"name":"wxa",
"url":"http://mp.weixin.qq.com",
"appid":"wx286b93c14bbf93aa",
"pagepath":"pages/lunar/index"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}
service实现类
@Override
public Object ceateMenu() {
String requestUrl = ceateMenuUrl.replace("ACCESS_TOKEN", getAccessToken());
JSONObject menu = new JSONObject();
JSONArray buttonAry = new JSONArray();
Map map1 = new HashMap<>();
map1.put("type", "click");
map1.put("name", "今日歌曲");
map1.put("key", "V1001_TODAY_MUSIC");
Map map2 = new HashMap<>();
map2.put("name", "菜单");
JSONArray subButtonAry = new JSONArray();
Map subMap1 = new HashMap<>();
subMap1.put("type", "view");
subMap1.put("name", "搜索");
subMap1.put("url", "www.baidu.com");
subButtonAry.add(subMap1);
Map subMap2 = new HashMap<>();
subMap2.put("type", "click");
subMap2.put("name", "赞一下我们");
subMap2.put("key", "V1001_GOOD");
subButtonAry.add(subMap2);
map2.put("sub_button", subButtonAry);
buttonAry.add(map1);
buttonAry.add(map2);
menu.put("button", buttonAry);
String post = HttpClientUtil.post(requestUrl, menu.toString());
Map map = null;
try {
map = objectMapper.readValue(post, Map.class);
} catch (IOException e) {
log.error("公众号异常通知-创建自定义菜单异常", e);
}
if (map.get("errcode") != null || map.get("errmsg") != null) {
String errcode = String.valueOf(map.get("errcode"));
String errmsg = String.valueOf(map.get("errmsg"));
if (!errcode.equals("0")) {
log.error("创建自定义菜单失败:code=" + errcode + "msg=" + errmsg);
return "创建失败";
}
}
return "创建成功";
}
其中的工具类HttpClientUtil去我资源中下载,getAccessToken()获取token的方法去我上一篇文章中查看(二、处理微信服务器发来的消息)



