微信公众号--菜单创建

1、首先需要开通微信公众号

2、获取到公钥私钥

// 用于存放公钥私钥
public class Constant {
    public static String APPID = "AppId";
    public static String SECRET = "微信私钥";
}

3、调用获取token的工具类获取token

/**
     * 获取接口访问凭证
     *
     * @param appid 凭证
     * @param appsecret 密钥
     * @return
     */
    public static AccessToken getToken(String appid, String appsecret) {
        AccessToken token = null;
        String requestUrl = token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
        // 发起GET请求获取凭证
        JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
        if (null != jsonObject) {
            try {
                token = new AccessToken();
                token.setAccessToken(jsonObject.getString("access_token"));
                token.setExpiresIn(jsonObject.getInt("expires_in"));
            } catch (JSONException e) {
                token = null;
                // 获取token失败
                HttpManager.fail("获取token失败 errcode:{} errmsg:{}" + jsonObject.getInt("errcode") + jsonObject.getString("errmsg"));
            }
        }
        return token;
    }

4、controller测试

    /**
     * 创建微信菜单
     */
    @ApiOperation("创建公众号菜单")
    @GetMapping("wxCreateMenu")
    public void wxCreateMenu() {

        AccessToken access_Token = WeChatUtil.getToken(Constant.APPID, Constant.SECRET);
        ViewButton viewButton1 = new ViewButton();
        viewButton1.setName("男装");
        viewButton1.setType("view");
        viewButton1.setUrl("https://www.baidu.com");

        ViewButton viewButton2 = new ViewButton();
        viewButton2.setName("女装");
        viewButton2.setType("view");
        viewButton2.setUrl("https://www.baidu.com");

        
        ViewButton viewButton3 = new ViewButton();
        viewButton3.setName("会员详情");
        viewButton3.setType("view");
        viewButton3.setUrl("https://www.baidu.com");

        //二级菜单创建 
        GroupButton groupButton = new GroupButton();
        groupButton.setName("商品分类");
        groupButton.setSub_button(new Button[]{viewButton1, viewButton2});

        Menu wxMenu = new Menu();
        // 一级菜单创建 
        // 这个工具类在下方
        wxMenu.setButton(new Button[]{groupButton, viewButton3});

        createMenu(wxMenu, access_Token.getAccessToken());
    }

5、调用接口开始执行完成后去微信公众号中查看

菜单创建、删除、查询工具类

public class MenuUtils {


    //1.菜单创建(POST) 限100(次/天)
    public static final String CREATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
    //2.查询菜单数据
    public static final String GET_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";
    //3.删除菜单
    public static final String DELETE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";

    /**
     * 创建菜单
     * @param menu  菜单实例
     * @param accessToken 有效凭证
     */
    public static void createMenu(Menu menu, String accessToken) {
        //1.准备POST请求参数
        String data = JSONObject.fromObject(menu).toString();
        System.out.println("---------------------------创建微信菜单JSON数据---------------------");
        System.out.println(data);

        //2.拼装创建菜单的url
        String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", accessToken);

        //3.发起POST请求,获取返回结果
        String result = WeChatUtil.sendPost(url, data);
        JSONObject jsonObject = JSONObject.fromObject(result);
        System.out.println("---------------------------创建微信菜单返回结果---------------------");
        System.out.println(result);

        if (null != jsonObject) {

            //5.错误消息处理
            if (0 != jsonObject.getInt("errcode")) {
                System.out.println("---------------------------创建微信菜单错误---------------------");
                int errCode = jsonObject.getInt("errcode");
                String errMsg = jsonObject.getString("errmsg");
                throw new IllegalArgumentException("error code:" + errCode + ", error message:" + errMsg);
            } else {
                System.out.println("---------------------------创建微信菜单成功---------------------");
            }
        }
    }


    /**
     * 查询菜单数据
     * @param accessToken 有效凭证
     * @return
     * @throws Exception JSONObject
     */
    public static JSONObject getMenu(String accessToken) {
        //1.获取请求url
        String url = GET_MENU_URL.replace("ACCESS_TOKEN", accessToken);

        //2.发起GET请求,获取返回结果
        String result = WeChatUtil.sendGet(url, "");
        JSONObject jsonObject = JSONObject.fromObject(result);
        System.out.println("---------------------------查询微信菜单返回结果---------------------");
        System.out.println(result);

        //3.解析结果,获取菜单数据
        JSONObject returnJsonObject = null;
        if (null != jsonObject) {
            //4.错误消息处理
            if (0 != jsonObject.getInt("errcode")) {
                System.out.println("---------------------------查询微信菜单错误---------------------");
                int errCode = jsonObject.getInt("errcode");
                String errMsg = jsonObject.getString("errmsg");
                throw new IllegalArgumentException("error code:" + errCode + ", error message:" + errMsg);
                //5.成功获取菜单数据
            } else {
                returnJsonObject = jsonObject;
            }
        }
        return returnJsonObject;
    }


    /**
     * 删除菜单
     * @param accessToken  有效凭证
     * @throws Exception void
     */
    public static void deleteMenu(String accessToken) {
        //1.获取请求url
        String url = DELETE_MENU_URL.replace("ACCESS_TOKEN", accessToken);

        //2.发起GET请求,获取返回结果
        String result = WeChatUtil.sendGet(url, "");
        JSONObject jsonObject = JSONObject.fromObject(result);
        System.out.println("---------------------------删除微信菜单返回结果---------------------");
        System.out.println(result);

        //3.解析结果
        if (null != jsonObject) {
            //4.错误消息处理
            if (0 != jsonObject.getInt("errcode")) {
                System.out.println("---------------------------删除微信菜单错误---------------------");
                int errCode = jsonObject.getInt("errcode");
                String errMsg = jsonObject.getString("errmsg");
                throw new IllegalArgumentException("error code:" + errCode + ", error message:" + errMsg);
                //5.成功删除菜单
            } else {
                System.out.println("---------------------------删除微信菜单成功---------------------");
            }
        }

    }

    public static final String toJSONString(Object object, SerializerFeature... features) {
        SerializeWriter out = new SerializeWriter();

        try {
            JSONSerializer serializer = new JSONSerializer(out);
            for (com.alibaba.fastjson.serializer.SerializerFeature feature : features) {
                serializer.config(feature, true);
            }

            serializer.write(object);

            return out.toString();
        } finally {
            out.close();
        }
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值