微信公众平台开发(6)--实现自定义菜单

简介: 本文目录1. 前言2. 开发控制器3. 添加IP白名单4. 自定义菜单测试4.1 查询菜单4.2 创建菜单4.3 再次查询4.4 删除菜单5. 小结

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 查询菜单

首先调用查询菜单,由于还未创建菜单,所以控制台提示如下,这说明我们接口是调用成功了。


【请求地址】: https://api.weixin.qq.com/cgi-bin/menu/get?access_token=49_ecqVVg91S1PQDODSveEphL8Wmu8OLBGlUeJGH84jaxUGzr76FZxCrX_fnSn55ZOsgXpMZq-TOyWowydhyV1ycz5JA5cvl_-HZqQ7FIZATYrARGQB7oRKGQU4VzXBboLp4Oj7DJ9N8LOpDbPbMIOdAGAQMS

【请求参数】: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已经封装到牙齿了,使用后我们开发微信公众平台相关的功能可谓非常简单。

相关文章
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
开发者
微信公众平台开发基本配置
微信公众平台开发基本配置
666 0
|
Go
【微信公众号】基于golang的公众号开发基本配置
【微信公众号】基于golang的公众号开发基本配置
419 0
|
Java API
java进行微信公众号开发
java进行微信公众号开发
353 0
|
人工智能 Python
【Python + 微信】微信公众号开发避坑指南
【Python + 微信】微信公众号开发避坑指南
527 0
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
491 0
|
XML 数据格式 Python
【超详细!】Python微信公众号开发(2)
【超详细!】Python微信公众号开发(2)
554 0
|
XML 安全 Java
如何开发微信公众号后台
如何开发微信公众号后台
594 0
|
移动开发 JavaScript
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
1493 0
|
XML Go 数据格式
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
1002 0

热门文章

最新文章

下一篇
开通oss服务