自定义菜单的创建
一、自定义菜单
自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。自定义菜单最多有三个一级菜单,名字最多4个汉字,课可参考开发
wendanhttps://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
1.1 数据结构分析
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29{ "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" }] }] }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59{ "button": [ { "name": "扫码", "sub_button": [ { "type": "scancode_waitmsg", "name": "扫码带提示", "key": "rselfmenu_0_0", "sub_button": [ ] }, { "type": "scancode_push", "name": "扫码推事件", "key": "rselfmenu_0_1", "sub_button": [ ] } ] }, { "name": "发图", "sub_button": [ { "type": "pic_sysphoto", "name": "系统拍照发图", "key": "rselfmenu_1_0", "sub_button": [ ] }, { "type": "pic_photo_or_album", "name": "拍照或者相册发图", "key": "rselfmenu_1_1", "sub_button": [ ] }, { "type": "pic_weixin", "name": "微信相册发图", "key": "rselfmenu_1_2", "sub_button": [ ] } ] }, { "name": "发送位置", "type": "location_select", "key": "rselfmenu_2_0" }, { "type": "media_id", "name": "图片", "media_id": "MEDIA_ID1" }, { "type": "view_limited", "name": "图文消息", "media_id": "MEDIA_ID2" } ] }
1,2 根据json格式的结构,写对应的bean
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31/** * * 类名称: Button * 类描述: 按钮 * @author yuanjun * 创建时间:2017年12月8日下午8:35:38 */ public class Button { private String name;//菜单标题 private String type;//菜单的响应动作类型 private Button[] sub_button; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Button[] getSub_button() { return sub_button; } public void setSub_button(Button[] sub_button) { this.sub_button = sub_button; } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/** * * 类名称: ClickButton * 类描述: 点击类型 * @author yuanjun * 创建时间:2017年12月8日下午8:38:06 */ public class ClickButton extends Button{ private String key;//菜单KEY值 public String getKey() { return key; } public void setKey(String key) { this.key = key; } }
复制代码
1
2
3
4
5
6
7
8
9public class ViewButton extends Button{ private String url;//网页链接 public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16/** * * 类名称: Menu * 类描述: 菜单 * @author yuanjun * 创建时间:2017年12月8日下午8:40:18 */ public class Menu { private Button[] button; public Button[] getButton() { return button; } public void setButton(Button[] button) { this.button = button; } }
二、调用接口创建自定义菜单(通过测试开发账号)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64import net.sf.json.JSONObject; import com.yuanjun.weixindemo.bean.Button; import com.yuanjun.weixindemo.bean.ClickButton; import com.yuanjun.weixindemo.bean.Menu; import com.yuanjun.weixindemo.bean.ViewButton; /** * * 类名称: MemuUtil * 类描述: 菜单工具 * @author yuanjun * 创建时间:2017年12月8日下午8:42:15 */ public class MenuUtil { private static final String CTRATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN"; /** * 创建菜单 * @param accessToken * @param Menu 菜单json格式字符串 * @return */ public static int createMenu(String accessToken,String Menu){ int result = Integer.MIN_VALUE; String url = CTRATE_MENU_URL.replaceAll("ACCESS_TOKEN", accessToken); JSONObject json = WeiXinUtil.doPoststr(url, Menu); if(json!=null){ //从返回的数据包中取数据{"errcode":0,"errmsg":"ok"} result = json.getInt("errcode"); } return result; } public static String initMenu(){ String result = ""; //创建点击一级菜单 ClickButton button11 = new ClickButton(); button11.setName("往期活动"); button11.setKey("11"); button11.setType("click"); //创建跳转型一级菜单 ViewButton button21 = new ViewButton(); button21.setName("百度一下"); button21.setType("view"); button21.setUrl("https://www.baidu.com"); //创建其他类型的菜单与click型用法一致 ClickButton button31 = new ClickButton(); button31.setName("拍照发图"); button31.setType("pic_photo_or_album"); button31.setKey("31"); ClickButton button32 = new ClickButton(); button32.setName("发送位置"); button32.setKey("32"); button32.setType("location_select"); //封装到一级菜单 Button button = new Button(); button.setName("菜单"); button.setType("click"); button.setSub_button(new Button[]{button31,button32}); //封装菜单 Menu menu = new Menu(); menu.setButton(new Button[]{button11,button21,button}); return JSONObject.fromObject(menu).toString(); } }
2.1 后台测试
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import com.yuanjun.weixindemo.util.MenuUtil; import com.yuanjun.weixindemo.util.WeiXinUtil; public class TestMenu { public static void main(String[] args) { String accessToken = WeiXinUtil.getAccess_Token(); String menu = MenuUtil.initMenu(); System.out.println(menu); int result = MenuUtil.createMenu(accessToken,menu); if(result==0){ System.out.println("菜单创建成功"); }else{ System.out.println("错误码"+result); } } }
三、效果展示
四、出现的问题说明:
复制代码
解决办法:在复制微信的接口URL注意去除空格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in scheme name at index 0: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=fiE7pddrUUtuJbTMjXTUlS8HurXaougM8G1yQK9RkK3T3YrMkKRgegPxBxfNKkdwcat6KsWQVzV--_1V2YuYdyszJXb3B7BJO1fdec-JSZ8ZUBcAHARMT at java.net.URI.create(URI.java:859) at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:73) at com.yuanjun.weixindemo.util.WeiXinUtil.doPoststr(WeiXinUtil.java:68) at com.yuanjun.weixindemo.util.MenuUtil.createMenu(MenuUtil.java:29) at com.yuanjun.weixindemo.TestMenu.main(TestMenu.java:10) Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=fiE7pddrUUtuJbTMjXTUlS8HurXaougM8G1yQK9RkK3T3YrMkKRgegPxBxfNKkdwcat6KsWQVzV--_1V2YuYdyszJXb3B7BJO1fdec-JSZ8ZUBcAHARMT at java.net.URI$Parser.fail(URI.java:2829) at java.net.URI$Parser.checkChars(URI.java:3002) at java.net.URI$Parser.checkChar(URI.java:3012) at java.net.URI$Parser.parse(URI.java:3028) at java.net.URI.<init>(URI.java:595) at java.net.URI.create(URI.java:857) ... 4 more
错误代码:40055
设置VIew的菜单的跳转路径,需要加上http://
五 源码下载,包含消息,图片回复,创建菜单,智能翻译等
http://download.csdn.net/download/shenbug/10152017
最后
以上就是细心小海豚最近收集整理的关于SpringBoot开发微信公众号(五)自定义菜单的创建的全部内容,更多相关SpringBoot开发微信公众号(五)自定义菜单内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复