下面这个类我对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(),
", 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("");
// 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(",
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("",
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(",
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(",
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();
}
}