zoukankan      html  css  js  c++  java
  • Springboot开发微信公众号(四)


    1.1 数据结构分析
    {
         "button":[
         {    
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                     "type":"miniprogram",
                     "name":"wxa",
                     "url":"http://mp.weixin.qq.com",
                     "appid":"wx286b93c14bbf93aa",
                     "pagepath":"pages/lunar/index"
                 },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    {
        "button": [
            {
                "name": "扫码", 
                "sub_button": [
                    {
                        "type": "scancode_waitmsg", 
                        "name": "扫码带提示", 
                        "key": "rselfmenu_0_0", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "scancode_push", 
                        "name": "扫码推事件", 
                        "key": "rselfmenu_0_1", 
                        "sub_button": [ ]
                    }
                ]
            }, 
            {
                "name": "发图", 
                "sub_button": [
                    {
                        "type": "pic_sysphoto", 
                        "name": "系统拍照发图", 
                        "key": "rselfmenu_1_0", 
                       "sub_button": [ ]
                     }, 
                    {
                        "type": "pic_photo_or_album", 
                        "name": "拍照或者相册发图", 
                        "key": "rselfmenu_1_1", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "pic_weixin", 
                        "name": "微信相册发图", 
                        "key": "rselfmenu_1_2", 
                        "sub_button": [ ]
                    }
                ]
            }, 
            {
                "name": "发送位置", 
                "type": "location_select", 
                "key": "rselfmenu_2_0"
            },
            {
               "type": "media_id", 
               "name": "图片", 
               "media_id": "MEDIA_ID1"
            }, 
            {
               "type": "view_limited", 
               "name": "图文消息", 
               "media_id": "MEDIA_ID2"
            }
        ]
    }
    1,2 根据json格式的结构,写对应的bean
    /**
     * 
     * 类名称: Button
     * 类描述: 按钮
     * @author yuanjun
     * 创建时间:2017年12月8日下午8:35:38
     */
    public class Button {
        
        private String name;//菜单标题
        
        private String type;//菜单的响应动作类型
        
        private Button[] sub_button;
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        public String getType() {
            return type;
        }
     
        public void setType(String type) {
            this.type = type;
        }
     
        public Button[] getSub_button() {
            return sub_button;
        }
     
        public void setSub_button(Button[] sub_button) {
            this.sub_button = sub_button;
        }
        
        
    }
    /**
     * 
     * 类名称: ClickButton
     * 类描述: 点击类型
     * @author yuanjun
     * 创建时间:2017年12月8日下午8:38:06
     */
    public class ClickButton extends Button{
        
        private String key;//菜单KEY值
     
        public String getKey() {
            return key;
        }
     
        public void setKey(String key) {
            this.key = key;
        }
        
        
        
    }
    public class ViewButton extends Button{
        
        private String url;//网页链接
     
        public String getUrl() {
            return url;
        }
     
        public void setUrl(String url) {
            this.url = url;
        }
        
        
        
        
    }
    /**
     * 
     * 类名称: Menu
     * 类描述: 菜单
     * @author yuanjun
     * 创建时间:2017年12月8日下午8:40:18
     */
    public class Menu {
        
        private Button[] button;
     
        public Button[] getButton() {
            return button;
        }
     
        public void setButton(Button[] button) {
            this.button = button;
        }
        
        
    }
    二、调用接口创建自定义菜单(通过测试开发账号)
    import net.sf.json.JSONObject;
     
    import com.yuanjun.weixindemo.bean.Button;
    import com.yuanjun.weixindemo.bean.ClickButton;
    import com.yuanjun.weixindemo.bean.Menu;
    import com.yuanjun.weixindemo.bean.ViewButton;
     
    /**
     * 
     * 类名称: MemuUtil
     * 类描述: 菜单工具
     * @author yuanjun
     * 创建时间:2017年12月8日下午8:42:15
     */
    public class MenuUtil {
        
        private static final String CTRATE_MENU_URL  = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
        /**
         * 创建菜单
         * @param accessToken 
         * @param Menu 菜单json格式字符串
         * @return
         */
        public static int createMenu(String accessToken,String Menu){
            int result = Integer.MIN_VALUE;
            String url = CTRATE_MENU_URL.replaceAll("ACCESS_TOKEN", accessToken);
            JSONObject json = WeiXinUtil.doPoststr(url, Menu);
            if(json!=null){
                //从返回的数据包中取数据{"errcode":0,"errmsg":"ok"}
                result = json.getInt("errcode");
            }
            return result;
        }
        
        public static String initMenu(){
            String result = "";
            //创建点击一级菜单
            ClickButton button11 = new ClickButton();
            button11.setName("往期活动");
            button11.setKey("11");
            button11.setType("click");
            
            //创建跳转型一级菜单
            ViewButton button21 = new ViewButton();
            button21.setName("百度一下");
            button21.setType("view");
            button21.setUrl("https://www.baidu.com");
            
            //创建其他类型的菜单与click型用法一致
            ClickButton button31 = new ClickButton();
            button31.setName("拍照发图");
            button31.setType("pic_photo_or_album");
            button31.setKey("31");
            
            ClickButton button32 = new ClickButton();
            button32.setName("发送位置");
            button32.setKey("32");
            button32.setType("location_select");
            
            //封装到一级菜单
            Button button = new Button();
            button.setName("菜单");
            button.setType("click");
            button.setSub_button(new Button[]{button31,button32});
            
            //封装菜单
            Menu menu = new Menu();
            menu.setButton(new Button[]{button11,button21,button});
            return JSONObject.fromObject(menu).toString();
        }
    }
    2.1 后台测试
    import com.yuanjun.weixindemo.util.MenuUtil;
    import com.yuanjun.weixindemo.util.WeiXinUtil;
     
    public class TestMenu {
        public static void main(String[] args) {
            String accessToken  = WeiXinUtil.getAccess_Token();
            String menu = MenuUtil.initMenu();
            System.out.println(menu);
            int result = MenuUtil.createMenu(accessToken,menu);
            if(result==0){
                System.out.println("菜单创建成功");
            }else{
                System.out.println("错误码"+result);
            }
        }
    }

    参考https://blog.csdn.net/shenbug/article/details/78755297

    希望能交流更多技术,关注小白的微信公众号吧。
    !希望能交流更多技术,关注小白的微信公众号吧
     

    小白技术社
  • 相关阅读:
    Win10找不到gpedit.msc解决方法
    分类问题的评价指标
    配置Sublime的C/C++编译环境(无脑入门)
    bilibili1024安全挑战赛(Q1-Q5)
    Cmder的安装与配置
    DockerStack 实战
    docker-swarm实战
    docker-compose实战
    docker网络(二)
    docker网络(一)
  • 原文地址:https://www.cnblogs.com/xbjss/p/13326696.html
Copyright © 2011-2022 走看看