您的位置:首页 > 移动开发 > 微信开发

微信公众号开发 自定义菜单创建

2018-01-02 14:50 661 查看
接口调用请求说明

http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

正确时的返回JSON数据包如下:

{"errcode":0,"errmsg":"ok"}


错误时的返回JSON数据包如下(示例为无效菜单名长度):

{"errcode":40018,"errmsg":"invalid button name size"}


基于常识,我们知道微信公众号菜单有3层,如图:



菜单中还有按钮,按钮点开还有菜单,菜单点开中还有按钮

建立菜单pojo类:

菜单类:

public class Menu {
private Button[] button;

public Button[] getButton() {
return button;
}

public void setButton(Button[] button) {
this.button = button;
}
}


按钮基类:

/*
* 所属:menu
* 描述:项目下的基类
*/
public class Button {
private String name;//所有一级菜单、二级菜单都共有一个相同的属性,那就是name

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}


二级菜单(包含按钮):

public class CommonButton extends Button {
private String type;
private String key;

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}
}


一级菜单(包含按钮,点击后出现上拉框):

public class ComplexButton extends Button {
private Button[] sub_button;

public Button[] getSub_button() {
return sub_button;
}

public void setSub_button(Button[] sub_button) {
this.sub_button = sub_button;
}

}


按钮点击事件pojo:

/*
参数                           描述
ToUserName                 开发者 微信号
FromUserName               发送方帐号(一个OpenID)
CreateTime                 消息创建时间 (整型)
MsgType                    消息类型,event
Event                      事件类型,CLICK
EventKey                   事件KEY值,与自定义菜单接口中KEY值对应
* */
public
ab08
class MenuClick extends Message {
private String Event;
private String EventKey;

public String getEvent() {
return Event;
}

public void setEvent(String event) {
Event = event;
}

public String getEventKey() {
return EventKey;
}

public void setEventKey(String eventKey) {
EventKey = eventKey;
}

}


实例化菜单模板

private static Menu getMenu() {
CommonButton btn11 = new CommonButton();
btn11.setName("授权邀请");
btn11.setType("click");
btn11.setKey("11");

CommonButton btn12 = new CommonButton();
btn12.setName("信息查询");
btn12.setType("click");
btn12.setKey("12");

CommonButton btn13 = new CommonButton();
btn13.setName("漏洞搜索");
btn13.setType("click");
btn13.setKey("13");

CommonButton btn31 = new CommonButton();
btn31.setName("天气查询");
btn31.setType("click");
btn31.setKey("31");

CommonButton btn32 = new CommonButton();
btn32.setName("电影排行榜");
btn32.setType("click");
btn32.setKey("32");

CommonButton btn33 = new CommonButton();
btn33.setName("幽默笑话");
btn33.setType("click");
btn33.setKey("33");

/**
* 微信: mainBtn1,mainBtn2底部的2个一级菜单。
*/

ComplexButton mainBtn1 = new ComplexButton();
mainBtn1.setName("工作助手");
// 一级下有多个子菜单
mainBtn1.setSub_button(new CommonButton[] { btn11, btn12, btn13 });

ComplexButton mainBtn2 = new ComplexButton();
mainBtn2.setName("生活管家");
mainBtn2.setSub_button(new CommonButton[] { btn31, btn32, btn33 });

/**
* 封装整个菜单
*/
Menu menu = new Menu();
menu.setButton(new Button[] { mainBtn1,  mainBtn2 });

return menu;
}


拿到access_token向微信发请求要求创建菜单:

public static int CreateMenu(Menu menu,String accessToken)
{
int result=0;
String url=menu_create_url.replace("ACCESS_TOKEN", accessToken);
String jsonMenu=JSONObject.fromObject(menu).toString();
JSONObject jsonObject=InterfaceUtil.httpRequest(url, "POST", jsonMenu);
if (null!=jsonObject) {
if (0!=jsonObject.getInt("errcode")) {
result=jsonObject.getInt("errcode");
System.out.println("创建失败!");
}
}
return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: