Java--對接微信第四篇之初始化底部選單
阿新 • • 發佈:2018-11-09
第一步、新建一些實體類:
Menu>Button>ComplexButton>CommonButton
/**
* 選單
*/
public class Menu {
private Button[] button;
public Button[] getButton() {
return button;
}
public void setButton(Button[] button) {
this.button = button;
}
}
/** * 按鈕的基類 */ public class Button { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
/**
* 複雜按鈕(父按鈕)
*/
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;
}
}
/** * 普通按鈕(子按鈕) */ public class CommonButton extends Button { private String type; private String key; private String url; 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 String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
第二步、寫組裝選單方法:
其中, 1、btn.setType("view"):是點選按鈕實現跳轉Url地址 2、btn.setType("click"):是點選按鈕實現對應key值的不同處理(由你自己定義做什麼事情) 比如: if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) { // 事件KEY值,與建立自定義選單時指定的KEY值對應 String eventKey = map.get("EventKey"); if (eventKey.equals("21")) { logger.info("--學業方面選單項被點選---openid===="+fromUserName); message = MessageUtil.textMsg(toUserName, fromUserName, "學業方面選單項被點選!"); } else if (eventKey.equals("22")) { message = MessageUtil.textMsg(toUserName, fromUserName, "健康方面選單項被點選!"); } else if (eventKey.equals("23")) { message = MessageUtil.textMsg(toUserName, fromUserName, "就業方面選單項被點選!"); } else if (eventKey.equals("24")) { message = MessageUtil.textMsg(toUserName, fromUserName, "社交方面選單項被點選!"); } else if (eventKey.equals("25")) { message = MessageUtil.textMsg(toUserName, fromUserName, "情感方面選單項被點選!"); } else if (eventKey.equals("31")) { message = MessageUtil.textMsg(toUserName, fromUserName, "家庭方面選單項被點選!"); } else if (eventKey.equals("32")) { message = MessageUtil.textMsg(toUserName, fromUserName, "經濟方面選單項被點選!"); } else if (eventKey.equals("33")) { message = MessageUtil.textMsg(toUserName, fromUserName, "幽默笑話選單項被點選!"); } } 但是,我這裡全部是type=view,也就是點選按鈕實現url跳轉的,所以這個沒有用到。
/**
* 組裝選單資料
* @return
*/
private static Menu getMenu() {
String redirect_uri = "http://www.你的伺服器回撥地址.com/op/open/openArticle";
CommonButton btn11 = new CommonButton();
btn11.setName("官方網站");
btn11.setType("view");
btn11.setKey("11");
btn11.setUrl("https://www.baidu.com");
CommonButton btn12 = new CommonButton();
btn12.setName("教師入口");
btn12.setType("view");
btn12.setKey("12");
btn12.setUrl("https://www.baidu.com");
CommonButton btn13 = new CommonButton();
btn13.setName("管理入口");
btn13.setType("view");
btn13.setKey("13");
btn13.setUrl("https://www.baidu.com");
CommonButton btn21 = new CommonButton();
btn21.setName("學業方面");
btn21.setType("view");
btn21.setKey("21");
btn21.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=1&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn22 = new CommonButton();
btn22.setName("健康方面");
btn22.setType("view");
btn22.setKey("22");
btn22.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=2&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn23 = new CommonButton();
btn23.setName("就業方面");
btn23.setType("view");
btn23.setKey("23");
btn23.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=3&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn24 = new CommonButton();
btn24.setName("社交方面");
btn24.setType("view");
btn24.setKey("24");
btn24.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=5&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn25 = new CommonButton();
btn25.setName("情感方面");
btn25.setType("view");
btn25.setKey("25");
btn25.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=6&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn31 = new CommonButton();
btn31.setName("家庭方面");
btn31.setType("view");
btn31.setKey("31");
btn31.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=7&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
CommonButton btn32 = new CommonButton();
btn32.setName("經濟方面");
btn32.setType("view");
btn32.setKey("32");
btn32.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=4&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
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[] { btn21, btn22, btn23, btn24, btn25 });
ComplexButton mainBtn3 = new ComplexButton();
mainBtn3.setName("更多體驗");
mainBtn3.setSub_button(new CommonButton[] { btn31, btn32 });
Menu menu = new Menu();
menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });
return menu;
}
/**
* 建立選單
* @param access_token
* @param menuJson 選單json 資料
* @return
*/
public static BaseResult menuCreate(String access_token, String menuJson){
HttpUriRequest httpUriRequest = RequestBuilder.post()
.setHeader(jsonHeader).setUri(BASE_URI+"/cgi-bin/menu/create")
.addParameter("access_token", access_token)
.setEntity(new StringEntity(menuJson,Charset.forName("utf-8"))).build();
return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class);
}
/**
* 建立選單
* @param access_token
* @param menu
* @return
*/
public static BaseResult menuCreate(String access_token,Menu menu){
String str = JsonUtil.toJSONString(menu);
return menuCreate(access_token,str);
}
最後、寫個main方法測試一下:
public static void main(String[] args) {
// 呼叫介面建立選單
BaseResult res = MenuAPI.menuCreate(你的access_token,MenuAPI.getMenu());
System.out.println(res);
}
返回"ok"表示選單生成成功!
去你的微信公眾號就可以看到效果啦
效果圖: