下面这个类我对fastweixin 框架的简单封装调用,大家可以参考,如果需要QYAPIConfigExt和MainServernSupport,请参考本教程以前几篇文章
应用可以在会话界面底部设置自定义菜单,菜单项可按需设定,并可为其设置响应动作。用户可以通过点击菜单项,收到你设定的消息。企业号支持自定义菜单调起扫一扫、发图片、发地理位置等能力。
菜单分为两类,VIEW和Click,具体可以参考《柳峰微信公众平台开发教程》
本文目标:
1、实现菜单的删除和增加
2、实现微信OAuth验证的对接。
说明:微信OAuth有两种实现一种就是我注释的那段用StringBuilder 拼URL 或者直接调用原框架的OauthAPI 辅助生成URL。
package com.nsjs; import java.awt.List; import java.util.ArrayList; import com.fastwixinextend.QYAPIConfigExt; import com.github.sd4324530.fastweixin.api.OauthAPI; import com.github.sd4324530.fastweixin.api.config.ApiConfig; import com.github.sd4324530.fastweixin.api.entity.Menu; import com.github.sd4324530.fastweixin.api.enums.OauthScope; import com.github.sd4324530.fastweixin.company.api.QYMenuAPI; import com.github.sd4324530.fastweixin.company.api.entity.QYMenu; import com.github.sd4324530.fastweixin.company.api.entity.QYMenuButton; import com.github.sd4324530.fastweixin.company.api.enums.QYMenuType; import com.github.sd4324530.fastweixin.company.api.enums.QYResultType; import com.github.sd4324530.fastweixin.company.api.response.GetQYMenuResponse; public class MenuManager { public QYAPIConfigExt config = null; public QYAPIConfigExt initConfig() { if (config == null) { config = new QYAPIConfigExt(MainServernSupport.getCropId(), MainServernSupport.getAPPSecret(), "http://blog.csdn.net/luozhuang", System.currentTimeMillis()); } return config; } public QYAPIConfigExt initConfig(String CropId, String APPSecret, String AccessToken, long AccessTokenTime) { QYAPIConfigExt config; config = new QYAPIConfigExt(CropId, APPSecret, AccessToken, AccessTokenTime); return config; } public void listMenu() { QYMenuAPI menuAPI = new QYMenuAPI(initConfig()); GetQYMenuResponse response = menuAPI.list(MainServernSupport.getAgentID()); QYMenu menu = response.getMenu(); } public void deleteMenu() { QYMenuAPI menuAPI = new QYMenuAPI(initConfig()); QYResultType resultType = menuAPI.delete(MainServernSupport.getAgentID()); } /** * 定义菜单结构 * * @return */ private String createMenu() { // StringBuilder url = new StringBuilder(); // url.append("https://open.weixin.qq.com/connect/oauth2/authorize?"); // url.append("appid=" + MainServernSupport.getCropId()); // url.append("&redirect_uri=").append("http://blog.csdn.net/luozhuang"); // url.append("&response_type=").append("code"); // url.append("&scope").append("snsapi_base"); // url.append("&state=").append(MainServernSupport.getCropId()); // url.append("#wechat_redirect"); OauthAPI oauthAPI = new OauthAPI(config); String pageUrl = oauthAPI.getOauthPageUrl("http://blog.csdn.net/luozhuang", OauthScope.SNSAPI_BASE, MainServernSupport.getToken()); QYMenuButton btn11 = new QYMenuButton(); btn11.setName("项目1"); btn11.setType(QYMenuType.VIEW); btn11.setUrl(pageUrl); btn11.setKey("项目1"); pageUrl = oauthAPI.getOauthPageUrl("http://blog.csdn.net/luozhuang", OauthScope.SNSAPI_BASE, MainServernSupport.getToken()); QYMenuButton btn12 = new QYMenuButton(); btn12.setName("项目2"); btn12.setType(QYMenuType.VIEW); btn12.setUrl(pageUrl); btn12.setKey("项目2"); pageUrl = oauthAPI.getOauthPageUrl("http://blog.csdn.net/luozhuang", OauthScope.SNSAPI_BASE, MainServernSupport.getToken()); QYMenuButton btn13 = new QYMenuButton(); btn13.setName("项目3"); btn13.setType(QYMenuType.VIEW); btn13.setUrl(pageUrl); btn13.setKey("项目3"); QYMenuButton btn21 = new QYMenuButton(); btn21.setName("项目4"); btn21.setType(QYMenuType.CLICK); btn21.setKey("项目4"); QYMenuButton btn22 = new QYMenuButton(); btn22.setName("项目5"); btn22.setType(QYMenuType.CLICK); btn22.setKey("项目5"); QYMenuButton btn23 = new QYMenuButton(); btn23.setName("项目6"); btn23.setType(QYMenuType.CLICK); btn23.setKey("项目6"); QYMenuButton btn31 = new QYMenuButton(); btn31.setName("报表"); btn31.setType(QYMenuType.CLICK); btn31.setKey("报表"); QYMenuButton btn32 = new QYMenuButton(); btn32.setName("项目8"); btn32.setType(QYMenuType.CLICK); btn32.setKey("项目8"); QYMenuButton btn33 = new QYMenuButton(); btn33.setName("项目9"); btn33.setType(QYMenuType.CLICK); btn33.setKey("项目9"); QYMenuButton mainBtn1 = new QYMenuButton(); mainBtn1.setName("项目11"); ArrayList<QYMenuButton> ListButton = new ArrayList<QYMenuButton>(); ListButton.add(btn11); ListButton.add(btn12); ListButton.add(btn13); mainBtn1.setSubButton(ListButton); QYMenuButton mainBtn2 = new QYMenuButton(); mainBtn2.setName("项目22"); ListButton = new ArrayList<QYMenuButton>(); ListButton.add(btn21); ListButton.add(btn22); ListButton.add(btn23); mainBtn2.setSubButton(ListButton); QYMenuButton mainBtn3 = new QYMenuButton(); mainBtn3.setName("项目33"); mainBtn3.setType(QYMenuType.VIEW); pageUrl = oauthAPI.getOauthPageUrl("http://blog.csdn.net/luozhuang", OauthScope.SNSAPI_BASE, MainServernSupport.getToken()); mainBtn3.setUrl(pageUrl); ListButton = new ArrayList<QYMenuButton>(); ListButton.add(btn31); ListButton.add(btn32); ListButton.add(btn33); mainBtn3.setSubButton(ListButton); QYMenu menu = new QYMenu(); ArrayList<QYMenuButton> MenuButtonList = new ArrayList<QYMenuButton>(); MenuButtonList.add(mainBtn1); MenuButtonList.add(mainBtn2); MenuButtonList.add(mainBtn3); menu.setButton(MenuButtonList); QYMenuAPI menuAPI = new QYMenuAPI(initConfig()); QYResultType resultType = menuAPI.create(menu, MainServernSupport.getAgentID()); return resultType.getDescription(); } public static void main(String[] args) { MenuManager menuManager = new MenuManager(); menuManager.deleteMenu(); menuManager.createMenu(); menuManager.listMenu(); } }