09-公众号菜单管理

自定义菜单管理

公众号底部会显示菜单栏,这些菜单栏可以在微信公众平台后台管理,也可以使用公众平台提供的接口进行管理,调用 POST 方法把菜单的 JSON 文本推送到微信服务器即可。

接口说明

文档地址:

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

自定义菜单规则:

  • 最多包括 3 个一级菜单,每个一级菜单最多包含 5 个二级菜单
  • 一级菜单最多 4 个汉字,二级菜单最多 7 个汉字,多出来的部分以”…”代替
  • 自定义菜单接口可实现多种类型按钮:click、view 等

HTTP 请求方式:POST(请使用 https 协议)

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

每次创建或修改菜单时,需要把完整的菜单结构全部发送过去。

添加 MenuCreateHandle

public class MenuCreateHandle : WeiXinHandlerBase, IWeiXinHandler
{
    private string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}";

    public T DoGet<T>(params string[] param) where T : class
    {
        throw new NotImplementedException();
    }

    public T DoPost<T>(params string[] param) where T : class
    {
        var uploadUrl = string.Format(url, accessTokenInfo.access_token);
        // view表示网页类型,click表示点击类型,miniprogram表示小程序类型
        var firstButton = new List<object>();
        firstButton.Add(new { type = "click", name = "课程", key = "V1001_TODAY_MUSIC" });

        var secondButton = new List<object>();
        secondButton.Add(new { type = "view", name = "管理后台", url = "http://www.bamn.cn" });
        secondButton.Add(new { type = "click", name = "赞一下我们", key = "V1001_GOOD" });

        firstButton.Add(new { type = "click", name = "管理", sub_button = secondButton });

        var input = new { button = firstButton };
        var json = JsonHelper.SerializeObject(input);
        var resultjson = HtmlHelper.HttpPost(uploadUrl, json);
        var output = JsonHelper.DeserializeJsonToObject<T>(resultjson);
        return output;
    }
}Code language: HTML, XML (xml)

控制器中调用

public ActionResult CreateMenu()
{
    var result = new MenuCreateHandle().DoPost<dynamic>();
    return Json(result);
}Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注