微信开发九 自定义菜单

来源:互联网 发布:ubuntu语言包下载慢 编辑:程序博客网 时间:2024/06/01 09:00

本例中有些引用的类与方法不做过多介绍,之后会提供完整源码下载,请自行查看。

本篇根据开发者文档-自定义菜单编写。请对照查看,一些传入与返回参数就不过多介绍。地址为:https://mp.weixin.qq.com/wiki/5/0d8acdd6d4433c877fbea938a2f133cd.html


/* * 自定义菜单 * https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013&token=&lang=zh_CN */public class CustomMenu {    private List<Button> button; //一级菜单数组,个数应为1~3个    public List<Button> getButton() {        if(button == null) button = new ArrayList<Button>();        return button;    }    public void setButton(List<Button> button) {        this.button = button;    }    public class Button {        private String type ;           //必须。菜单的响应动作类型        private String name ;           //必须。菜单标题,不超过16个字节,子菜单不超过60个字节        private String key ;            //click等点击类型必须  菜单KEY值,用于消息接口推送,不超过128字节        private String url ;            //view类型必须      网页链接,用户点击菜单可打开链接,不超过1024字节        private String media_id ;       //media_id类型和view_limited类型必须       调用新增永久素材接口返回的合法media_id        private List<SubButton> sub_button = new ArrayList<SubButton>(); //二级菜单数组,个数应为1~5个        public String getType() {            return type;        }        public void setType(String type) {            this.type = type;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getKey() {            return key;        }        public void setKey(String key) {            this.key = key;        }        public String getUrl() {            return url;        }        public void setUrl(String url) {            this.url = url;        }        public String getMedia_id() {            return media_id;        }        public void setMedia_id(String media_id) {            this.media_id = media_id;        }        public List<SubButton> getSub_button() {            return sub_button;        }        public void setSub_button(List<SubButton> sub_button) {            this.sub_button = sub_button;        }        public class SubButton {            private String type ;           //必须。菜单的响应动作类型            private String name ;           //必须。菜单标题,不超过16个字节,子菜单不超过60个字节            private String key ;            //click等点击类型必须  菜单KEY值,用于消息接口推送,不超过128字节            private String url ;            //view类型必须      网页链接,用户点击菜单可打开链接,不超过1024字节            private String media_id ;       //media_id类型和view_limited类型必须       调用新增永久素材接口返回的合法media_id            public String getType() {                return type;            }            public void setType(String type) {                this.type = type;            }            public String getName() {                return name;            }            public void setName(String name) {                this.name = name;            }            public String getKey() {                return key;            }            public void setKey(String key) {                this.key = key;            }            public String getUrl() {                return url;            }            public void setUrl(String url) {                this.url = url;            }            public String getMedia_id() {                return media_id;            }            public void setMedia_id(String media_id) {                this.media_id = media_id;            }        }    }}
public interface MenuService {    //创建自定义菜单    public String createCustomMenu(CustomMenu customMenu);    //查询自定义菜单    public String getCustomMenu();    //删除自定义菜单    public String deleteCustomMenu();    //创建个性化菜单    public String addConditional(PersonaliseMenu personaliseMenu);    //删除个性化菜单    public String delConditional(PersonaliseMenu personaliseMenu);    //测试个性化菜单匹配结果    public String testConditional(PersonaliseMenu personaliseMenu);}
@Service("menuService")public class MenuServiceImpl implements MenuService {    private static final Logger logger = Logger.getLogger(MenuServiceImpl.class);    @Override    public String createCustomMenu(CustomMenu customMenu) {        logger.info("==========createCustomMenu===========");        String url = WeChatInterface.CREATE_CUSTOM_MENU.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return JsonUtil.getResp(url, "POST", new Gson().toJson(customMenu));    }    @Override    public String getCustomMenu() {        logger.info("==========getCustomMenu===========");        String url = WeChatInterface.GET_CUSTOM_MENU.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return HttpUtil.getStringByGet(url);    }    @Override    public String deleteCustomMenu() {        logger.info("==========deleteCustomMenu===========");        String url = WeChatInterface.DELETE_CUSTOM_MENU.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return HttpUtil.getStringByGet(url);    }    @Override    public String addConditional(PersonaliseMenu personaliseMenu) {        logger.info("==========addConditional===========");        String url = WeChatInterface.ADD_CONDITIONAL.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return JsonUtil.getResp(url, "POST", new Gson().toJson(personaliseMenu));    }    @Override    public String delConditional(PersonaliseMenu personaliseMenu) {        logger.info("==========delConditional===========");        String url = WeChatInterface.DELETE_CONDITIONAL.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return JsonUtil.getResp(url, "POST", new Gson().toJson(personaliseMenu));    }    @Override    public String testConditional(PersonaliseMenu personaliseMenu) {        logger.info("==========testConditional===========");        String url = WeChatInterface.TEST_CONDITIONAL.replace("ACCESS_TOKEN", WeChatCertificate.WECHAT_ACCESSTOKEN);        return JsonUtil.getResp(url, "POST", new Gson().toJson(personaliseMenu));    }}
@RunWith(SpringJUnit4ClassRunner.class)        // 表示继承了 SpringJUnit4ClassRunner 类@ContextConfiguration("classpath:spring-mybatis.xml")public class TestWXCustomMenu {    @Resource       private MenuService menuService;//  @Test    public void createCustomMenu() {        //click类型必须带Key。view类型必须带Url。        CustomMenu customMenu = new CustomMenu();        CustomMenu.Button button1 = customMenu.new Button();        button1.setType("click");        button1.setName("按钮1");        button1.setKey("ID10010");        CustomMenu.Button button2 = customMenu.new Button();        button2.setType("click");        button2.setName("按钮2");        button2.setKey("ID10020");        CustomMenu.Button button3 = customMenu.new Button();        button3.setName("菜单");        CustomMenu.Button.SubButton subButton1 = button3.new SubButton();        subButton1.setType("view");        subButton1.setName("百度");        subButton1.setUrl("http://www.baidu.com/");        CustomMenu.Button.SubButton subButton2 = button3.new SubButton();        subButton2.setType("view");        subButton2.setName("好123");        subButton2.setUrl("http://www.hao123.com/");        CustomMenu.Button.SubButton subButton3 = button3.new SubButton();        subButton3.setType("view");        subButton3.setName("微信JS-SDK测试");        subButton3.setUrl("http://115.28.174.212/WeChat/wx/testWXJS");        button3.getSub_button().add(subButton1);        button3.getSub_button().add(subButton2);        button3.getSub_button().add(subButton3);        customMenu.getButton().add(button1);        customMenu.getButton().add(button2);        customMenu.getButton().add(button3);      System.out.println(">>>"+menuService.createCustomMenu(customMenu));    }    @Test    public void getCustomMenu() {        System.out.println(">>>"+menuService.getCustomMenu());    }//  @Test    public void deleteCustomMenu() {        System.out.println(">>>"+menuService.deleteCustomMenu());    }//  @Test    public void addConditional() {        //click类型必须带Key。view类型必须带Url。        PersonaliseMenu personaliseMenu = new PersonaliseMenu();        PersonaliseMenu.Button button1 = personaliseMenu.new Button();        button1.setType("click");        button1.setName("点击按钮1");        button1.setKey("ID10010");        PersonaliseMenu.Button button2 = personaliseMenu.new Button();        button2.setType("click");        button2.setName("点击按钮2");        button2.setKey("ID10020");        PersonaliseMenu.Button button3 = personaliseMenu.new Button();        button3.setName("菜单");        PersonaliseMenu.Button.SubButton subButton1 = button3.new SubButton();        subButton1.setType("view");        subButton1.setName("百度");        subButton1.setUrl("http://www.baidu.com/");        PersonaliseMenu.Button.SubButton subButton2 = button3.new SubButton();        subButton2.setType("view");        subButton2.setName("好123");        subButton2.setUrl("http://www.hao123.com/");        button3.getSub_button().add(subButton1);        button3.getSub_button().add(subButton2);        personaliseMenu.getButton().add(button1);        personaliseMenu.getButton().add(button2);        personaliseMenu.getButton().add(button3);        //以下信息由 用户标签管理接口获取        PersonaliseMenu.MatchRule matchRule = personaliseMenu.new MatchRule();         matchRule.setTag_id("101");        matchRule.setSex(PersonaliseMenu.MAN);        matchRule.setClient_platform_type(PersonaliseMenu.OTHERS);        matchRule.setCountry("中国");        matchRule.setProvince("广东");        matchRule.setCity("广州");        matchRule.setLanguage("zh_CN");        personaliseMenu.setMatchRule(matchRule);      System.out.println(">>>"+menuService.addConditional(personaliseMenu));    }//  @Test    public void delConditional() {        PersonaliseMenu personaliseMenu = new PersonaliseMenu();        personaliseMenu.setMenuid("433270469");      System.out.println(">>>"+menuService.delConditional(personaliseMenu));    }//  @Test    public void testConditional() {        PersonaliseMenu personaliseMenu = new PersonaliseMenu();        personaliseMenu.setUser_id(WeChatCertificate.OPENID1);      System.out.println(">>>"+menuService.testConditional(personaliseMenu));    }}
0 0
原创粉丝点击