微信开发九 自定义菜单
来源:互联网 发布: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
- 微信开发九 自定义菜单
- 微信开发 -- 自定义菜单
- 微信开发-自定义菜单
- 微信开发--自定义菜单
- 微信自定义菜单开发
- 微信开发自定义菜单
- 微信自定义菜单开发报错
- php微信自定义菜单开发
- 微信公众平台自定义菜单开发
- 微信开发(二)自定义菜单
- 微信开发二三事:自定义菜单
- 微信企业号开发:自定义菜单
- 微信开发(1)自定义菜单
- java微信开发自定义菜单
- nodejs微信开发--设置自定义菜单
- 微信公众平台开发自定义菜单
- 微信开发<三> 自定义菜单
- 微信公众平台开发-自定义菜单
- leetcode-108. Convert Sorted Array to Binary Search Tree
- 弹性分布式数据集(RDD)
- Android 开源项目xUtils3使用教程
- 数字
- VC/MFC动态画线,画圆,画椭圆,画矩形
- 微信开发九 自定义菜单
- Python基本操作
- Android-6.0之PMS的守护进程installd
- ArrayAdapter参数的理解
- PlantSimulation:SimTalk 2.0
- Android 大文件上传时,处理上传进度问题
- Android进阶——属性动画Property Animation详解与应用(二)
- Algorithms Notes (1)
- Redis之lists类型及操作