当前位置: 首页 > 工具软件 > fastweixin > 使用案例 >

【fastweixin框架教程7】微信企业号自定义菜单接口开发

邹书
2023-12-01

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

    }

}

 类似资料: