wechat-0030,微信公众号,自定义菜单

demo:https://github.com/wenrongyao/wechat-demo

摘要:微信公众号的自定义菜单,包括菜单的增删查,自定义菜单事件推送

资源贴:

获取accesstoken:https://blog.csdn.net/wrongyao/article/details/80276888

接收事件推送:https://blog.csdn.net/wrongyao/article/details/86496549

一般业务需求:将微信公众号的管理功能集成到自己的系统中,在自己的系统中管理菜单来代替登录微信后台;这个模块基本就是拼凑数据,调用微信接口。

1、 新增自定义菜单

官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

1.1 接口说明

1.1.1 接口:http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

关于accessToken的获取和管理在资源贴中

1.1.2 请求数据,json格式

格式:

参数说明:

1.2 举例说明

在实际项目中开发的时候,如果前后端使用json格式做交互的话,可以直接使用前端的json数据作为请求数据,后台系统不用重新构建,如果需要后台构建,可以参考demo中基于gson的实体类封装

如果是前端生成json格式,那就很简单了,直接通过请求工具类,将json数据传到微信服务器即可

 public String addMenus(String menuStr) {
        String url = CREATE_MENU_URL.replace("{ACCESS_TOKEN}", Constant.ACCESS_TOKEN);
        String jsonStr = HttpRequest.post(url, menuStr, null, Constant.ContentType.APPLICATION_JSON, false);
        return jsonStr;
    }

menuStr为前端构建好的json格式数据 如:

menuStr:{"button":[{"name":"今日歌曲","type":"click","key":"V1001_TODAY_MUSIC"},{"sub_button":[{"name":"搜索","type":"view","url":"https://www.baidu.com"},{"name":"NBA","type":"view","url":"https://www.hupu.com"}],"name":"菜单"}]}

这个数据也可以后台生成,demo中有所有的工具类,代码细节也可以看demo。

// 今日歌曲
        BaseButton musicBtn = new BaseButton("今日歌曲", "click", "V1001_TODAY_MUSIC", null);

        // 搜索
        BaseButton searchBtn = new BaseButton("搜索", "view", null, "https://www.baidu.com");
        // NBA
        BaseButton nbaBtn = new BaseButton("NBA", "view", null, "https://www.hupu.com");
        TwoMenu twoMenu = new TwoMenu("菜单");
        twoMenu.getBaseButtons().add(searchBtn);
        twoMenu.getBaseButtons().add(nbaBtn);

        OneMenu menu = new OneMenu();
        menu.getButton().add(musicBtn);
        menu.getButton().add(twoMenu);
        System.out.println(GsonUtil.toJson(menu));

1.3 结果

另外:菜单的删除和查询基本就是调接口,这边就不写了,具体在demo中也有,需要的可以查看。

2、自定义菜单事件推送

关于接收微信事件的推送基本都是一样的,根据msgType和event区分事件类型做相应处理。详见资源贴

通过event_key区分具体事件

对测试菜单中的今日歌曲点击事件响应,点击今日歌曲按钮,简单响应文本信息

else if (event.equals(Constant.Event.CLICK)) {
                        String eventKey = map.get("EventKey");
                        if (eventKey.equals("V1001_TODAY_MUSIC")) {
                            result = msgService.returnText(map, "今日歌曲如下:");
                        }
                    }

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值