公众号自定义菜单

如果公众号已启用服务器配置,那么自定义菜单就会失效。

但想添加菜单有两种方式:一、先停用服务器配置,随后设置自定义菜单。二、代码实现

下面介绍代码实现方式:

微信开放文档-自定义菜单

按照官方文档编写发送请求格式

我是在测试类种执行的方法

    @Test
    void createMenu() {
        Map<String, Object> gzhMenuCreate = iMpaTUserWechatService.getGzhMenuCreate();
        System.out.println(gzhMenuCreate);
    }
    @Override
    public Map<String, Object> getGzhMenuCreate() {
        String access_token = getGzhAccessToken();
        URI uri = UriComponentsBuilder.fromHttpUrl(gzhMenuCreate)
                .queryParam("access_token", access_token)
                .build()
                .toUri();
        Map<String, Object> menu = getMenu();
        RequestEntity<Map<String, Object>> requestEntity = RequestEntity.post(uri).body(menu);
        ResponseEntity<String> gzhResponse = restTemplate.exchange(requestEntity, String.class);
        if (gzhResponse.getBody() != null) {
            Map<String, Object> resultMap;
            try {
                resultMap = objectMapper.readValue(gzhResponse.getBody(), new TypeReference<Map<String, Object>>() {
                });
            } catch (IOException e) {
                throw new BusinessException("创建菜单失败:" + gzhResponse.getBody());
            }
            Integer errcode = (Integer) resultMap.get("errcode");
            if (!(0 == errcode)) {
                throw new BusinessException("创建菜单失败:" + gzhResponse.getBody());
            }
            return resultMap;
        } else {
            throw new BusinessException("创建菜单失败:" + gzhResponse.getStatusCodeValue());
        }
    }

    @Override
    public Map<String, Object> getMenu() {
        ViewButton btn = new ViewButton();
        btn.setType("miniprogram");
        btn.setName("小程序");
        btn.setKey("rselfmenu_1_0");
        btn.setUrl("http://mp.weixin.qq.com");
        btn.setAppid(appid);
        btn.setPagepath("pages/xxx/xxx");

        ViewButton btn1 = new ViewButton();
        btn1.setType("miniprogram");
        btn1.setName("账号绑定");
        btn1.setKey("rselfmenu_1_1");
        btn1.setUrl("http://mp.weixin.qq.com");
        btn1.setAppid(appid);
        btn1.setPagepath("pages/xxx/xxx");

        ViewButton btn2 = new ViewButton();
        btn2.setType("miniprogram");
        btn2.setName("账号注册");
        btn2.setKey("rselfmenu_1_2");
        btn2.setUrl("http://mp.weixin.qq.com");
        btn2.setAppid(appid);
        btn2.setPagepath("pages/xxx/xxx");


        ComplexButton mainBtn1 = new ComplexButton();
        mainBtn1.setName("测试菜单");
        mainBtn1.setSub_button(new BasicButton[]{btn, btn1, btn2});
       
        Menu menu = new Menu();
        menu.setButton(new BasicButton[]{mainBtn1});
        String jsonString = JSONUtil.toJsonStr(menu);
        System.out.println(jsonString);
        return JSONUtil.toBean(jsonString, Map.class);
    }

用到的对象类

@Setter
@Getter
public class ViewButton extends BasicButton {
    private String type;
    private String name;
    private String key;
    private String url;
    private String appid;
    private String pagepath;

}

@Setter
@Getter
public class ComplexButton extends BasicButton {
    private BasicButton[] sub_button;

}

@Setter
@Getter
public class Menu {
    private BasicButton[] button;
}

@Setter
@Getter
public class BasicButton {
    private String name;
    private String url;
}

返回结果errcode为0代表成功。

获取token在上一个java实现公众号扫码登录和扫码关注(详细)-CSDN博客

此时再看公众号菜单既变了。

公众号自定义菜单查询是指在开发微信公众号应用时,通过使用Java语言进行编程,实现查询公众号自定义菜单功能。 在Java开发中,可以通过微信官方提供的开发接口和SDK来实现公众号自定义菜单的查询功能。首先,我们需要引入相应的Java开发工具包,例如使用微信开放平台提供的Java SDK。 接下来,我们需要通过开发者账号申请成为公众号的开发者,并获取到开发者ID(AppID)和开发者密钥(AppSecret)。通过这些凭证,我们可以通过微信开放平台的接口,获取到公众号的Access Token。Access Token是使用接口调用的凭证,可以通过向微信服务器发送HTTP请求来获取。 获取到Access Token后,我们就可以使用官方提供的自定义菜单查询接口进行查询。根据接口文档的要求,我们可以使用Java的HTTP请求库,例如Apache HttpClient,来向微信服务器发送HTTP请求,将Access Token作为参数传递给查询接口,并接收返回的数据。 查询接口会返回公众号当前设置的自定义菜单的相关信息,包括菜单结构、类型和链接等。 最后,我们可以根据返回的数据进行业务处理,例如将菜单结构展示在前端界面中,或根据菜单类型和链接等实现相应的功能。 综上所述,通过Java语言进行开发,我们可以实现公众号自定义菜单的查询功能,为公众号用户提供更加方便和个性化的服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值