柳峰微信公众平台开发教程企业号修改篇(企业菜单篇)

 本文针对《微信公众平台应用开发:方法、技巧与案例》 一书中示例和代码不适用于微信企业号的情况进行修改。
 


 修改原因:


  企业号操作的链接不一样,企业号存在多个应用,因此需要支持程序ID问题


  修改方法:


  修改MenuUtil类

  


  注意事项: 使用本文代码,需要先参考我的上一篇文章,获得Access_Token的代码




  关键示例代码:(注意不是全部完整代码,这涉及到log之类云云。。)



/**
 * 自定义菜单工具类
 *
 * @author liufeng
 * @date 2013-10-17
 */
public class MenuUtil {


    // 菜单创建(POST)
    public final static String menu_create_url =
        "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
    // 菜单查询(GET)
    public final static String menu_get_url =
        "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";
    // 菜单删除(GET)
    public final static String menu_delete_url =
        "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";

    //企业号
    // 菜单创建(POST)
    public final static String Enterpmenu_create_url =
        "https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&agentid=AGENTID";
    // 菜单查询(GET)
    public final static String Enterpmenu_get_url =
        "https://qyapi.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN&agentid=AGENTID";
    // 菜单删除(GET)
    public final static String Enterpmenu_delete_url =
        "https://qyapi.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN&agentid=AGENTID";

    /**
     * 创建菜单
     *
     * @param menu 菜单实例
     * @param accessToken 凭证
     * @return true成功 false失败
     */
    public static boolean createMenu(Menu menu, String accessToken) {
        boolean result = false;
        String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
        // 将菜单对象转换成json字符串
        String jsonMenu = JSONObject.fromObject(menu).toString();
        // 发起POST请求创建菜单
        JSONObject jsonObject = CommonUtil.httpsRequest(url, "POST", jsonMenu);

        if (null != jsonObject) {
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
            if (0 == errorCode) {
                result = true;
            } else {
                result = false;
                MyLog.writelogfile("创建菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
            }
        }

        return result;
    }

    /**
     * 查询菜单
     *
     * @param accessToken 凭证
     * @return
     */
    public static String getMenu(String accessToken) {
        String result = null;
        String requestUrl = menu_get_url.replace("ACCESS_TOKEN", accessToken);
        // 发起GET请求查询菜单
        JSONObject jsonObject =
            CommonUtil.httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            result = jsonObject.toString();
        }
        return result;
    }

    /**
     * 删除菜单
     *
     * @param accessToken 凭证
     * @return true成功 false失败
     */
    public static boolean deleteMenu(String accessToken) {
        boolean result = false;
        String requestUrl =
            menu_delete_url.replace("ACCESS_TOKEN", accessToken);
        // 发起GET请求删除菜单
        JSONObject jsonObject =
            CommonUtil.httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
            if (0 == errorCode) {
                result = true;
            } else {
                result = false;
                MyLog.writelogfile("删除菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
            }
        }
        return result;
    }


    /**
     * 创建菜单
     *
     * @param menu 菜单实例
     * @param accessToken 凭证
     * @param Agentid 企业应用的id,整型。可在应用的设置页面查看
     * @return true成功 false失败
     */
    public static boolean createMenu(Menu menu, String accessToken,
                                     String Agentid) {
        boolean result = false;
        String url = Enterpmenu_create_url.replace("ACCESS_TOKEN", accessToken);
        url = url.replace("AGENTID", Agentid);
        // 将菜单对象转换成json字符串
        String jsonMenu = JSONObject.fromObject(menu).toString();
        // 发起POST请求创建菜单
        JSONObject jsonObject = CommonUtil.httpsRequest(url, "POST", jsonMenu);

        if (null != jsonObject) {
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
            if (0 == errorCode) {
                result = true;
            } else {
                result = false;
                MyLog.writelogfile("创建菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
            }
        }

        return result;
    }

    /**
     * 查询菜单
     *
     * @param accessToken 凭证
     * @param Agentid 企业应用的id,整型。可在应用的设置页面查看
     * @return
     */
    public static String getMenu(String accessToken, String Agentid) {
        String result = null;
        String requestUrl = Enterpmenu_get_url.replace("ACCESS_TOKEN", accessToken);
        requestUrl = requestUrl.replace("AGENTID", Agentid);
        // 发起GET请求查询菜单
        JSONObject jsonObject =
            CommonUtil.httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            result = jsonObject.toString();
        }
        return result;
    }

    /**
     * 删除菜单
     *
     * @param accessToken 凭证
     * @param Agentid 企业应用的id,整型。可在应用的设置页面查看
     * @return true成功 false失败
     */
    public static boolean deleteMenu(String accessToken, String Agentid) {
        boolean result = false;
        String requestUrl =
            Enterpmenu_delete_url.replace("ACCESS_TOKEN", accessToken);
        requestUrl = requestUrl.replace("AGENTID", Agentid);
        // 发起GET请求删除菜单
        JSONObject jsonObject =
            CommonUtil.httpsRequest(requestUrl, "GET", null);

        if (null != jsonObject) {
            int errorCode = jsonObject.getInt("errcode");
            String errorMsg = jsonObject.getString("errmsg");
            if (0 == errorCode) {
                result = true;
            } else {
                result = false;
                MyLog.writelogfile("删除菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
            }
        }
        return result;
    }
}

 使用:


/**
 * 菜单管理器类
 *
 * @author liufeng
 * @date 2013-10-17
 */
public class MenuManager {

    /**
     * 定义菜单结构
     *
     * @return
     */
    private static Menu getMenu() {
        ClickButton btn11 = new ClickButton();
        btn11.setName("主页面");
        btn11.setType("click");
        btn11.setKey("主页面");

        ClickButton btn12 = new ClickButton();
        btn12.setName("登录");
        btn12.setType("click");
        btn12.setKey("登录");

        ClickButton btn13 = new ClickButton();
        btn13.setName("上报地点");
        btn13.setType("click");
        btn13.setKey("上报地点");

        ClickButton btn21 = new ClickButton();
        btn21.setName("项目4");
        btn21.setType("click");
        btn21.setKey("项目4");

        ClickButton btn22 = new ClickButton();
        btn22.setName("项目5");
        btn22.setType("click");
        btn22.setKey("项目5");

        ClickButton btn23 = new ClickButton();
        btn23.setName("项目6");
        btn23.setType("click");
        btn23.setKey("项目6");


        ClickButton btn31 = new ClickButton();
        btn31.setName("报表");
        btn31.setType("click");
        btn31.setKey("报表");

        ClickButton btn32 = new ClickButton();
        btn32.setName("项目8");
        btn32.setType("click");
        btn32.setKey("项目8");

        ClickButton btn33 = new ClickButton();
        btn33.setName("项目9");
        btn33.setType("click");
        btn33.setKey("项目9");


        ComplexButton mainBtn1 = new ComplexButton();
        mainBtn1.setName("系统设置");
        mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13 });

        ComplexButton mainBtn2 = new ComplexButton();
        mainBtn2.setName("业务处理");
        mainBtn2.setSub_button(new Button[] { btn21, btn22, btn23 });

        ComplexButton mainBtn3 = new ComplexButton();
        mainBtn3.setName("报表");
        mainBtn3.setSub_button(new Button[] { btn31, btn32, btn33 });

        Menu menu = new Menu();
        menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });

        return menu;
    }

    public static void main(String[] args) {
        // 第三方用户唯一凭证,企业用 企业号的CorpID
        String appId = "luozhuang";
        // 第三方用户唯一凭证密钥 企业号在 管理员权限设置里面
        String appSecret ="luozhuang";
        ///启动开发接入:分级管理员必须先用CorpID和其所在管理组的Secret来换取Access_Token,之后才能调用企业号相关接口。

        // 3,系统管理员是没有Secret的。在同一个管理组的所有分级管理员共享一个Secret。 Secret是企业号后台的重要参数,这相当于调用接口的权限密码。 使用所在管理组的Secret,分级管理员可以
        // 调用接口获取凭证
        Token token;
        token = new Token();
     
        if (token == null) {
            token = CommonUtil.EntergetToken(appId, appSecret);
        }
        if (null != token) {
            // 创建菜单
            boolean result =
                MenuUtil.createMenu(getMenu(), token.getAccessToken(), "9");

            // 判断菜单创建结果
            if (result)
                MyLog.writelogfile("菜单创建成功!");
            else
                MyLog.writelogfile("菜单创建失败!");
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值