1. 程式人生 > >Java--對接微信第四篇之初始化底部選單

Java--對接微信第四篇之初始化底部選單

第一步、新建一些實體類:

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"表示選單生成成功!
去你的微信公眾號就可以看到效果啦

效果圖: