1. 前言
之前的章节,我们已经搭建了基于Spring Boot的项目wx-server,并引入了微信开发Java SDK----WxJava,后续我们只需要在此项目基础上调用即可轻松完成微信公众平台的各项功能。
本篇我们就来实现下微信自定义菜单功能,通过调用WxMpService相关方法实现即可。
2. 开发控制器
如下代码,我们首先了菜单查询、删除、创建的接口:
/**
* 自定义菜单
*/
@RestController
public class MenuController {
@Autowired
private WxMpService wxMpService;
/**
* 获取自定义菜单
*/
@RequestMapping("/menuGet")
public WxMpMenu menuGet() throws WxErrorException {
WxMpMenu wxMpMenu = wxMpService.getMenuService().menuGet();
return wxMpMenu;
}
/**
* 删除自定义菜单
*/
@RequestMapping("/menuDelete")
public boolean menuDelete() throws WxErrorException {
wxMpService.getMenuService().menuDelete();
return true;
}
/**
* 创建自定义菜单
*/
@RequestMapping("/menuCreate")
public boolean menuCreate() throws WxErrorException {
// 菜单
List<WxMenuButton> buttons = new ArrayList<WxMenuButton>();
WxMenuButton btn1 = new WxMenuButton();
btn1.setType("click");
btn1.setName("查询城市");
btn1.setKey("QUERY_CITY");
WxMenuButton btn2 = new WxMenuButton();
btn2.setType("view");
btn2.setName("跳转网页");
btn2.setUrl("http://www.csdn.net");
buttons.add(btn1);
buttons.add(btn2);
// 创建
WxMenu wxMenu = new WxMenu();
wxMenu.setButtons(buttons);
String re= wxMpService.getMenuService().menuCreate(wxMenu);
System.out.println(re);
return true;
}
}
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
3. 添加IP白名单
此时我们尝试调用http://127.0.0.1/wx-server/menuGet来完成菜单查询,但是系统报错:
错误代码:40164, 错误信息:invalid ip 223.104.190.67
1
说明我们的IP是不合法的,此时我们需要将IP添加到公众平台的白名单中。
进入【设置与开发】-【基本配置】,设置【IP白名单】即可。
4. 自定义菜单测试
4.1 查询菜单
首先调用查询菜单,由于还未创建菜单,所以控制台提示如下,这说明我们接口是调用成功了。
【请求参数】:null
【错误信息】:错误代码:46003, 错误信息:不存在的菜单数据,微信原始报文:{"errcode":46003,"errmsg":"menu no exist rid: 615025a8-51f58c96-15164c3a"}
1
2
3
4.2 创建菜单
然后,我们先来创建菜单,访问http://127.0.0.1/wx-server/menuCreate,此时网页显示返回值true,说明创建成功。
查看公众号界面如下,我们的创建成功了,创建时候参数的含义请自行查阅微信官方文档吧。
4.3 再次查询
创建菜单成功后,再次调用查询接口,返回数据如下,返回值以JSON数据格式给出了菜单的详细信息。
{"menu":{"buttons":[{"type":"click","name":"查询城市","key":"QUERY_CITY","url":null,"mediaId":null,"appId":null,"pagePath":null,"subButtons":[]},{"type":"view","name":"跳转网页","key":null,"url":"http://www.csdn.net","mediaId":null,"appId":null,"pagePath":null,"subButtons":[]}],"rule":null,"menuId":null},"conditionalMenu":null}
1
4.4 删除菜单
访问http://127.0.0.1/wx-server/menuDelete即可删除已创建的菜单。
5. 小结
注意使用WxJava框架后,并不需要维护access_token逻辑了,因为框架已经封装了access_token获取及刷新的逻辑,我们只需要直接调用接口就行了。
可以说,WxJava已经封装到牙齿了,使用后我们开发微信公众平台相关的功能可谓非常简单。