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

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

http://blog.csdn.net/luozhuang/article/list/1
标签: 微信企业号柳峰微信公众平台菜单
1525人阅读 评论(0) 收藏 举报
分类:
 本文针对《微信公众平台应用开发:方法、技巧与案例》 一书中示例和代码不适用于微信企业号的情况进行修改。
 


 修改原因:


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


  修改方法:


  修改MenuUtil类

  


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




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


  1. /** 
  2.  * 自定义菜单工具类 
  3.  * 
  4.  * @author liufeng 
  5.  * @date 2013-10-17 
  6.  */  
  7. public class MenuUtil {  
  8.   
  9.   
  10.     // 菜单创建(POST)  
  11.     public final static String menu_create_url =  
  12.         "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";  
  13.     // 菜单查询(GET)  
  14.     public final static String menu_get_url =  
  15.         "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";  
  16.     // 菜单删除(GET)  
  17.     public final static String menu_delete_url =  
  18.         "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";  
  19.   
  20.     //企业号  
  21.     // 菜单创建(POST)  
  22.     public final static String Enterpmenu_create_url =  
  23.         "https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&agentid=AGENTID";  
  24.     // 菜单查询(GET)  
  25.     public final static String Enterpmenu_get_url =  
  26.         "https://qyapi.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN&agentid=AGENTID";  
  27.     // 菜单删除(GET)  
  28.     public final static String Enterpmenu_delete_url =  
  29.         "https://qyapi.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN&agentid=AGENTID";  
  30.   
  31.     /** 
  32.      * 创建菜单 
  33.      * 
  34.      * @param menu 菜单实例 
  35.      * @param accessToken 凭证 
  36.      * @return true成功 false失败 
  37.      */  
  38.     public static boolean createMenu(Menu menu, String accessToken) {  
  39.         boolean result = false;  
  40.         String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);  
  41.         // 将菜单对象转换成json字符串  
  42.         String jsonMenu = JSONObject.fromObject(menu).toString();  
  43.         // 发起POST请求创建菜单  
  44.         JSONObject jsonObject = CommonUtil.httpsRequest(url, "POST", jsonMenu);  
  45.   
  46.         if (null != jsonObject) {  
  47.             int errorCode = jsonObject.getInt("errcode");  
  48.             String errorMsg = jsonObject.getString("errmsg");  
  49.             if (0 == errorCode) {  
  50.                 result = true;  
  51.             } else {  
  52.                 result = false;  
  53.                 MyLog.writelogfile("创建菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);  
  54.             }  
  55.         }  
  56.   
  57.         return result;  
  58.     }  
  59.   
  60.     /** 
  61.      * 查询菜单 
  62.      * 
  63.      * @param accessToken 凭证 
  64.      * @return 
  65.      */  
  66.     public static String getMenu(String accessToken) {  
  67.         String result = null;  
  68.         String requestUrl = menu_get_url.replace("ACCESS_TOKEN", accessToken);  
  69.         // 发起GET请求查询菜单  
  70.         JSONObject jsonObject =  
  71.             CommonUtil.httpsRequest(requestUrl, "GET"null);  
  72.   
  73.         if (null != jsonObject) {  
  74.             result = jsonObject.toString();  
  75.         }  
  76.         return result;  
  77.     }  
  78.   
  79.     /** 
  80.      * 删除菜单 
  81.      * 
  82.      * @param accessToken 凭证 
  83.      * @return true成功 false失败 
  84.      */  
  85.     public static boolean deleteMenu(String accessToken) {  
  86.         boolean result = false;  
  87.         String requestUrl =  
  88.             menu_delete_url.replace("ACCESS_TOKEN", accessToken);  
  89.         // 发起GET请求删除菜单  
  90.         JSONObject jsonObject =  
  91.             CommonUtil.httpsRequest(requestUrl, "GET"null);  
  92.   
  93.         if (null != jsonObject) {  
  94.             int errorCode = jsonObject.getInt("errcode");  
  95.             String errorMsg = jsonObject.getString("errmsg");  
  96.             if (0 == errorCode) {  
  97.                 result = true;  
  98.             } else {  
  99.                 result = false;  
  100.                 MyLog.writelogfile("删除菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);  
  101.             }  
  102.         }  
  103.         return result;  
  104.     }  
  105.   
  106.   
  107.     /** 
  108.      * 创建菜单 
  109.      * 
  110.      * @param menu 菜单实例 
  111.      * @param accessToken 凭证 
  112.      * @param Agentid 企业应用的id,整型。可在应用的设置页面查看 
  113.      * @return true成功 false失败 
  114.      */  
  115.     public static boolean createMenu(Menu menu, String accessToken,  
  116.                                      String Agentid) {  
  117.         boolean result = false;  
  118.         String url = Enterpmenu_create_url.replace("ACCESS_TOKEN", accessToken);  
  119.         url = url.replace("AGENTID", Agentid);  
  120.         // 将菜单对象转换成json字符串  
  121.         String jsonMenu = JSONObject.fromObject(menu).toString();  
  122.         // 发起POST请求创建菜单  
  123.         JSONObject jsonObject = CommonUtil.httpsRequest(url, "POST", jsonMenu);  
  124.   
  125.         if (null != jsonObject) {  
  126.             int errorCode = jsonObject.getInt("errcode");  
  127.             String errorMsg = jsonObject.getString("errmsg");  
  128.             if (0 == errorCode) {  
  129.                 result = true;  
  130.             } else {  
  131.                 result = false;  
  132.                 MyLog.writelogfile("创建菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);  
  133.             }  
  134.         }  
  135.   
  136.         return result;  
  137.     }  
  138.   
  139.     /** 
  140.      * 查询菜单 
  141.      * 
  142.      * @param accessToken 凭证 
  143.      * @param Agentid 企业应用的id,整型。可在应用的设置页面查看 
  144.      * @return 
  145.      */  
  146.     public static String getMenu(String accessToken, String Agentid) {  
  147.         String result = null;  
  148.         String requestUrl = Enterpmenu_get_url.replace("ACCESS_TOKEN", accessToken);  
  149.         requestUrl = requestUrl.replace("AGENTID", Agentid);  
  150.         // 发起GET请求查询菜单  
  151.         JSONObject jsonObject =  
  152.             CommonUtil.httpsRequest(requestUrl, "GET"null);  
  153.   
  154.         if (null != jsonObject) {  
  155.             result = jsonObject.toString();  
  156.         }  
  157.         return result;  
  158.     }  
  159.   
  160.     /** 
  161.      * 删除菜单 
  162.      * 
  163.      * @param accessToken 凭证 
  164.      * @param Agentid 企业应用的id,整型。可在应用的设置页面查看 
  165.      * @return true成功 false失败 
  166.      */  
  167.     public static boolean deleteMenu(String accessToken, String Agentid) {  
  168.         boolean result = false;  
  169.         String requestUrl =  
  170.             Enterpmenu_delete_url.replace("ACCESS_TOKEN", accessToken);  
  171.         requestUrl = requestUrl.replace("AGENTID", Agentid);  
  172.         // 发起GET请求删除菜单  
  173.         JSONObject jsonObject =  
  174.             CommonUtil.httpsRequest(requestUrl, "GET"null);  
  175.   
  176.         if (null != jsonObject) {  
  177.             int errorCode = jsonObject.getInt("errcode");  
  178.             String errorMsg = jsonObject.getString("errmsg");  
  179.             if (0 == errorCode) {  
  180.                 result = true;  
  181.             } else {  
  182.                 result = false;  
  183.                 MyLog.writelogfile("删除菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);  
  184.             }  
  185.         }  
  186.         return result;  
  187.     }  
  188. }  

 使用:
  1. /** 
  2.  * 菜单管理器类 
  3.  * 
  4.  * @author liufeng 
  5.  * @date 2013-10-17 
  6.  */  
  7. public class MenuManager {  
  8.   
  9.     /** 
  10.      * 定义菜单结构 
  11.      * 
  12.      * @return 
  13.      */  
  14.     private static Menu getMenu() {  
  15.         ClickButton btn11 = new ClickButton();  
  16.         btn11.setName("主页面");  
  17.         btn11.setType("click");  
  18.         btn11.setKey("主页面");  
  19.   
  20.         ClickButton btn12 = new ClickButton();  
  21.         btn12.setName("登录");  
  22.         btn12.setType("click");  
  23.         btn12.setKey("登录");  
  24.   
  25.         ClickButton btn13 = new ClickButton();  
  26.         btn13.setName("上报地点");  
  27.         btn13.setType("click");  
  28.         btn13.setKey("上报地点");  
  29.   
  30.         ClickButton btn21 = new ClickButton();  
  31.         btn21.setName("项目4");  
  32.         btn21.setType("click");  
  33.         btn21.setKey("项目4");  
  34.   
  35.         ClickButton btn22 = new ClickButton();  
  36.         btn22.setName("项目5");  
  37.         btn22.setType("click");  
  38.         btn22.setKey("项目5");  
  39.   
  40.         ClickButton btn23 = new ClickButton();  
  41.         btn23.setName("项目6");  
  42.         btn23.setType("click");  
  43.         btn23.setKey("项目6");  
  44.   
  45.   
  46.         ClickButton btn31 = new ClickButton();  
  47.         btn31.setName("报表");  
  48.         btn31.setType("click");  
  49.         btn31.setKey("报表");  
  50.   
  51.         ClickButton btn32 = new ClickButton();  
  52.         btn32.setName("项目8");  
  53.         btn32.setType("click");  
  54.         btn32.setKey("项目8");  
  55.   
  56.         ClickButton btn33 = new ClickButton();  
  57.         btn33.setName("项目9");  
  58.         btn33.setType("click");  
  59.         btn33.setKey("项目9");  
  60.   
  61.   
  62.         ComplexButton mainBtn1 = new ComplexButton();  
  63.         mainBtn1.setName("系统设置");  
  64.         mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13 });  
  65.   
  66.         ComplexButton mainBtn2 = new ComplexButton();  
  67.         mainBtn2.setName("业务处理");  
  68.         mainBtn2.setSub_button(new Button[] { btn21, btn22, btn23 });  
  69.   
  70.         ComplexButton mainBtn3 = new ComplexButton();  
  71.         mainBtn3.setName("报表");  
  72.         mainBtn3.setSub_button(new Button[] { btn31, btn32, btn33 });  
  73.   
  74.         Menu menu = new Menu();  
  75.         menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });  
  76.   
  77.         return menu;  
  78.     }  
  79.   
  80.     public static void main(String[] args) {  
  81.         // 第三方用户唯一凭证,企业用 企业号的CorpID  
  82.         String appId = "luozhuang";  
  83.         // 第三方用户唯一凭证密钥 企业号在 管理员权限设置里面  
  84.         String appSecret ="luozhuang";  
  85.         ///启动开发接入:分级管理员必须先用CorpID和其所在管理组的Secret来换取Access_Token,之后才能调用企业号相关接口。  
  86.   
  87.         // 3,系统管理员是没有Secret的。在同一个管理组的所有分级管理员共享一个Secret。 Secret是企业号后台的重要参数,这相当于调用接口的权限密码。 使用所在管理组的Secret,分级管理员可以  
  88.         // 调用接口获取凭证  
  89.         Token token;  
  90.         token = new Token();  
  91.        
  92.         if (token == null) {  
  93.             token = CommonUtil.EntergetToken(appId, appSecret);  
  94.         }  
  95.         if (null != token) {  
  96.             // 创建菜单  
  97.             boolean result =  
  98.                 MenuUtil.createMenu(getMenu(), token.getAccessToken(), "9");  
  99.   
  100.             // 判断菜单创建结果  
  101.             if (result)  
  102.                 MyLog.writelogfile("菜单创建成功!");  
  103.             else  
  104.                 MyLog.writelogfile("菜单创建失败!");  
  105.         }  
  106.     }  
  107. }  

 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值