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

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

    小白技术社
  • 相关阅读:
    iOS 苹果开发证书失效的解决方案(Failed to locate or generate matching signing assets)
    iOS NSArray数组过滤
    App Store2016年最新审核规则
    iOS 根据字符串数目,自定义Label等控件的高度
    iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案
    Entity FrameWork 增删查改的本质
    EF容器---代理类对象
    Entity FrameWork 延迟加载本质(二)
    Entity FrameWork 延迟加载的本质(一)
    Entity FrameWork 增删查改
  • 原文地址:https://www.cnblogs.com/xbjss/p/13326696.html
Copyright © 2011-2022 走看看