zoukankan      html  css  js  c++  java
  • 柳峰微信公众平台开发教程企业号改动篇(企业菜单篇)

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


     改动原因:


      企业号操作的链接不一样,企业号存在多个应用,因此须要支持程序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是企业号后台的重要參数。这相当于调用接口的权限password。 使用所在管理组的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("菜单创建失败!

    "); } } }



  • 相关阅读:
    Processing编程【2】
    哈工大锐捷网络处理问题
    processing编程【1】
    verilog入门知识【2】
    数字电路与逻辑设计知识清单【一】
    四位密码锁*电子密码锁的设计
    verilog入门知识【1】
    【Android】入门的一些知识。
    Andriod 入门
    关于Hibernate和Strtus2的xml提示问题
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7157783.html
Copyright © 2011-2022 走看看