【微信公众号】如何设置微信公众号测试号自定义菜单(java)

由于测试号不能像公众号那样直接设置自定义菜单,这个时候就需要自己编写代码了。

整个项目是使用springboot编写了,运行后需要访问localhost/menu查看结果。项目下载git地址如下:

github: https://github.com/smile-yan/weixin-menu-setting/

首先需要导入WxJava的jar包,

        <!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-mp -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>3.3.0</version>
        </dependency>

但是借助WxJava SDK,非常容易实现。代码如下:

package cn.smileyan.weixin.controller;

import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.menu.WxMenu;
import me.chanjar.weixin.common.bean.menu.WxMenuButton;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author smileyan
 * 其中appid与appsecret是读取application.yml中的数据
 */
@RestController
public class MenuController {

    @Value("${wechat.appid}")
    private String appid;
    @Value("${wechat.appsecret}")
    private String appsecret;

    @RequestMapping("/menu")
    private String setMenu() {
        // 1.根据appid和appsecret和回调地址配置微信授权
        WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage();
        wxMpConfigStorage.setAppId(appid);
        wxMpConfigStorage.setSecret(appsecret);
        WxMpServiceImpl wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxMpConfigStorage);

        /**
         *  2. 设置按钮
         *  menu对象是总的按钮,button是具体的按钮
         */
        WxMenu menu = new WxMenu();
        WxMenuButton button1 = new WxMenuButton();
        button1.setType(WxConsts.MenuButtonType.VIEW);
        button1.setName("泛舟网络");
        button1.setUrl("https://www.smileyan.cn/movie/login/login");

        WxMenuButton button2 = new WxMenuButton();
        button2.setType(WxConsts.MenuButtonType.VIEW);
        button2.setName("影院");
        button2.setUrl("https://www.smileyan.cn/movie/login/welcome");

        // 3. 添加到menu
        menu.getButtons().add(button1);
        menu.getButtons().add(button2);
        String result = menu.toJson().toString();
        System.out.println(result);

        // 根据运行结果返回相应的字符串
        try {
            wxMpService.getMenuService().menuCreate(result);
            return "SUCCESS"+" "+result;
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        return "FAILURE"+result;
    }
}

接着我们需要打开浏览器访问localhost/menu,如果返回值是SUCCESS...说明成功了就可以看到效果了,但是需要注意有时候微信公众号不会更新这么快,有时候需要我们取消关注,然后再次关注,才能看到自定义菜单。

如果返回值有FAILURE,说明失败了,需要检查是否哪个地方出错了。特别注意:如果是url的话,不能含有空格,并且对应的setType需要时view。

感谢Wechat-Group为我们提供这么好用的工具!

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页