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

相关文章
|
8月前
|
开发者
微信公众平台开发基本配置
微信公众平台开发基本配置
192 0
|
7月前
|
Java API
java进行微信公众号开发
java进行微信公众号开发
176 0
|
8月前
|
人工智能 Python
【Python + 微信】微信公众号开发避坑指南
【Python + 微信】微信公众号开发避坑指南
148 0
|
8月前
|
XML 安全 Java
如何开发微信公众号后台
如何开发微信公众号后台
209 0
|
8月前
|
移动开发 JavaScript
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
349 0
|
8月前
|
XML Go 数据格式
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
461 0
|
小程序 PHP 开发者
微信公众号开发(八)生成带参数二维码,以及将二维码下载至本地
微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~ 用户扫描带场景值(参数)二维码时,可能推送以下两种事件:
468 1
|
XML 移动开发 小程序
微信公众号开发(七)微信h5跳转小程序及小游戏示例
最近公司做活动,需要从h5页面跳转至微信小游戏。 当时接到这个需求的时候,就在想,这玩意能相互跳转么? 后来百度了一下,还真行。
320 1
|
小程序 PHP
微信公众号开发(六)微信支付(发红包、企业支付到零钱)需要证书请求示例
这里最主要的就是curlpost请求的时候需要带上证书。否则请求会失败。
151 0
|
XML JSON 小程序
微信公众号开发(四)获取用户信息
获取用户信息,微信公众号提供了两种方式:
158 0

热门文章

最新文章