1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > springboot-微信公众号开发(自定义菜单)

springboot-微信公众号开发(自定义菜单)

时间:2022-01-10 18:51:57

相关推荐

springboot-微信公众号开发(自定义菜单)

自定义菜单

上一篇:java微信公众开发(原始篇-获取access_token)

上一节已经学习了如何获取access_token,获取来干嘛呢?当然是为了调用微信的各种接口而获取的咯,接下来我们将首次使用我们获取的access_token来调用微信公众号接口—自定义菜单,这也是首次装饰我们的公众号呢。好的废话不多说进入正题,由于个人订阅号自定义菜单接口官方并没有开放,所以我们只能在公众号页面由官方提供的自定义菜单功能里对自己的菜单进行创建咯,不过为了能演示后台开发的自定义菜单接口,我们可以在公众号页面------》开发者工具-------》公众平台测试账号

测试号登录成功以后是这样的:

扫描二维码就可以关注自己的测试公众号,接入测试号的方式跟之前接入正式号的方式是一样的。

进入正题,以下是自定义菜单需要注意的地方

来观察观察官方给出的按钮json格式

通过上述大致就是按钮所需要的成员变量,在model包创建实体类Menu.java

/*** 菜单实体*/public class Menu {private String id;private String name;private String type;private String url;private String key;//省略get和set方法。。。。。}

依旧在WechatConstants.java中将请求URL写入

//自定义创建菜单urlpublic static final String CREATE_MENU_URL = "https://api./cgi-bin/menu/create?access_token=ACCESS_TOKEN";//将access_token填入后得到的自定义创建菜单urlpublic static String getCreate_menu_url(){return CREATE_MENU_URL.replace("ACCESS_TOKEN", AccessTokenThread.getAccessToken().getString("access_token"));}

新建package—》menu----》创建类HandleMenu.java创建,然后按照官方给的json格式我们组装菜单数据,

HandleMenu.java

import com.wx.demo.constants.WechatConstants;import com.wx.demo.model.Menu;import com.wx.demo.utils.WeixinUtil;import net.sf.json.JSONObject;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;//处理菜单类public class HandleMenu {/*** 组装菜单数据*/public static String getMenu(){//第一栏菜单Menu menu1=new Menu();menu1.setId("A");menu1.setName("第一栏");menu1.setType("click");menu1.setKey("A");Menu menu11=new Menu();menu11.setId("A1");menu11.setName("第一栏的第一个");menu11.setType("click");menu11.setKey("A1");Menu menu12=new Menu();menu12.setId("A2");menu12.setName("第一栏的第二个");menu12.setType("click");menu12.setKey("A2");//第二栏Menu menu2=new Menu();menu2.setId("B");menu2.setName("第二栏");menu2.setType("click");menu2.setKey("B");Menu menu21=new Menu();menu21.setId("B1");menu21.setName("第二栏的第一个");menu21.setType("click");menu21.setKey("B1");Menu menu3=new Menu();menu3.setId("C");menu3.setName("第三栏");menu3.setType("view");menu3.setUrl("");//最外一层大括号Map<String, Object> wechatMenuMap = new HashMap<String, Object>();//包装button的ListList<Map<String, Object>> wechatMenuMapList = new ArrayList<Map<String, Object>>();//包装第一栏Map<String, Object> menuMap1 = new HashMap<String, Object>();Map<String, Object> menuMap11 = new HashMap<String, Object>();Map<String, Object> menuMap12 = new HashMap<String, Object>();List<Map<String, Object>> subMenuMapList1 = new ArrayList<Map<String, Object>>();//第一栏第一个menuMap11.put("name",menu11.getName());menuMap11.put("type",menu11.getType());menuMap11.put("key",menu11.getKey());subMenuMapList1.add(menuMap11);//第二栏第二个menuMap12.put("name",menu12.getName());menuMap12.put("type",menu12.getType());menuMap12.put("key",menu12.getKey());subMenuMapList1.add(menuMap12);menuMap1.put("name",menu1.getName());menuMap1.put("sub_button",subMenuMapList1);//包装第二栏Map<String, Object> menuMap2 = new HashMap<String, Object>();Map<String, Object> menuMap21 = new HashMap<String, Object>();List<Map<String, Object>> subMenuMapList2 = new ArrayList<Map<String, Object>>();//第二栏第一个menuMap21.put("name",menu21.getName());menuMap21.put("type",menu21.getType());menuMap21.put("key",menu21.getKey());subMenuMapList2.add(menuMap21);menuMap2.put("name",menu2.getName());menuMap2.put("sub_button",subMenuMapList2);//包装第三栏Map<String, Object> menuMap3 = new HashMap<String, Object>();List<Map<String, Object>> subMenuMapList3 = new ArrayList<Map<String, Object>>();menuMap3.put("name",menu3.getName());menuMap3.put("type",menu3.getType());menuMap3.put("url",menu3.getUrl());menuMap3.put("sub_button",subMenuMapList3);wechatMenuMapList.add(menuMap1);wechatMenuMapList.add(menuMap2);wechatMenuMapList.add(menuMap3);wechatMenuMap.put("button",wechatMenuMapList);//转换成json格式return JSONObject.fromObject(wechatMenuMap).toString();}}

main方法测试

//main方法测试public static void main(String[] args) {//因为是POST请求方式,所以getMenu()创建的json数据放在httpRequest()方法的第三个参数作为参数传递JSONObject post = WeixinUtil.httpRequest(WechatConstants.getCreate_menu_url(), "POST", getMenu());System.out.println(post);}

测试结果:

微信服务器返回这个结果表示自定义菜单已经创建成功。

我们先将刚刚关注的测试公众号取消关注以后再重新关注,就可以看到创建了菜单之后的样子:

本章结束,有疑问或者有建议的小伙伴可以在下方评论区留言。

git源码分享:------》》》戳这里

下一章:java微信公众开发(原始篇-消息管理)–》》》》戳这里

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。