点此查看微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载
本文目录
1. 前言2. 开发控制器3. 添加IP白名单4. 自定义菜单测试4.1 查询菜单4.2 创建菜单4.3 再次查询4.4 删除菜单5. 小结1. 前言
之前的章节,我们已经搭建了基于Spring Boot的项目wx-server,并引入了微信开发Java SDK----WxJava,后续我们只需要在此项目基础上调用即可轻松完成微信公众平台的各项功能。
本篇我们就来实现下微信自定义菜单功能,通过调用WxMpService相关方法实现即可。
2. 开发控制器
如下代码,我们首先了菜单查询、删除、创建的接口:
/*** 自定义菜单*/@RestControllerpublic class MenuController {@Autowiredprivate 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("");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;}}
3. 添加IP白名单
此时我们尝试调用http://127.0.0.1/wx-server/menuGet
来完成菜单查询,但是系统报错:
错误代码:40164, 错误信息:invalid ip 223.104.190.67
说明我们的IP是不合法的,此时我们需要将IP添加到公众平台的白名单中。
进入【设置与开发】-【基本配置】,设置【IP白名单】即可。
4. 自定义菜单测试
4.1 查询菜单
首先调用查询菜单,由于还未创建菜单,所以控制台提示如下,这说明我们接口是调用成功了。
【请求地址】: https://api./cgi-bin/menu/get?access_token=49_ecqVVg91S1PQDODSveEphL8Wmu8OLBGlUeJGH84jaxUGzr76FZxCrX_fnSn55ZOsgXpMZq-TOyWowydhyV1ycz5JA5cvl_-HZqQ7FIZATYrARGQB7oRKGQU4VzXBboLp4Oj7DJ9N8LOpDbPbMIOdAGAQMS【请求参数】:null【错误信息】:错误代码:46003, 错误信息:不存在的菜单数据,微信原始报文:{"errcode":46003,"errmsg":"menu no exist rid: 615025a8-51f58c96-15164c3a"}
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":"","mediaId":null,"appId":null,"pagePath":null,"subButtons":[]}],"rule":null,"menuId":null},"conditionalMenu":null}
4.4 删除菜单
访问http://127.0.0.1/wx-server/menuDelete
即可删除已创建的菜单。
5. 小结
注意使用WxJava框架后,并不需要维护access_token逻辑了,因为框架已经封装了access_token获取及刷新的逻辑,我们只需要直接调用接口就行了。
可以说,WxJava已经封装到牙齿了,使用后我们开发微信公众平台相关的功能可谓非常简单。