服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 一日一技:微信开发自定义菜单

一日一技:微信开发自定义菜单

2021-03-04 23:44UP技术控conan5566 编程技术

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。一般情况下,不管是创建或者修改菜单,使用 "cgi-bin/menu/create这个接口即可。

 一日一技:微信开发自定义菜单

概述

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。

文档定义

接口调用请求说明

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

click和view的请求示例

     "button":[ 

     {   

          "type":"click"

          "name":"今日歌曲"

          "key":"V1001_TODAY_MUSIC" 

      }, 

      { 

           "name":"菜单"

           "sub_button":[ 

           {   

               "type":"view"

               "name":"搜索"

               "url":"http://www.soso.com/" 

            }, 

            { 

                 "type":"miniprogram"

                 "name":"wxa"

                 "url":"http://mp.weixin.qq.com"

                 "appid":"wx286b93c14bbf93aa"

                 "pagepath":"pages/lunar/index" 

             }, 

            { 

               "type":"click"

               "name":"赞一下我们"

               "key":"V1001_GOOD" 

            }] 

       }] 

 } 

实现方式

1、定义菜单json文档

  "button": [ 

 

    { 

      "name""运营提升"

      "sub_button": [ 

        { 

          "type""view"

          "name""免费试用"

          "url""https://acc.bqool.cn/freetrial" 

        }, 

        { 

          "type""view"

          "name""新 AI调价"

          "url""https://www.bqool.cn/products/repricing-central/" 

        }, 

        { 

          "type""view"

          "name""热 卖家酷"

          "url""https://www.bqool.cn/bigcentral/" 

        }, 

 

        { 

          "type""view"

          "name""热 选品酷"

          "url""https://www.bqool.cn/products/chrome-extension/" 

        }, 

        { 

          "type""view"

          "name""更多产品.."

          "url""https://www.bqool.cn/" 

        } 

      ] 

    }, 

    { 

      "name""酷仔部落"

      "sub_button": [ 

        { 

          "type""view"

          "name""限时福利"

          "url""https://mp.weixin.qq.com/mp/video?__biz=MzIzMjc1NTY3MQ==&mid=100007240&sn=04973c15f924fc78a78fec50cd75d706&vid=wxv_1500216251938308102&idx=1&vidsn=a27a0d1d9503802f9f9095534d4d2507&fromid=1&xtrack=1&scene=0&subscene=10000&clicktime=1600054770&enterid=1600054770#wechat_redirect" 

        }, 

        { 

          "type""view"

          "name""成功案例"

          "url""https://www.bqool.cn/user-stories/" 

        }, 

        { 

          "type""view"

          "name""教学视频"

          "url""https://www.bqool.cn/video-tutorial/" 

        }, 

        { 

          "type""view"

          "name""部落文章"

          "url""https://mp.weixin.qq.com/mp/homepage?__biz=MzIzMjc1NTY3MQ==&hid=1&sn=db4536a338f0e128ce2e5db089f381e1&scene=18" 

        } 

 

      ] 

    }, 

    { 

      "name""权益中心"

      "sub_button": [ 

        { 

          "type""view"

          "name""签到抽奖"

          "url""http://u135069.s.24hwpro.com/web/game/game_id/1220189859" 

        }, 

        { 

          "type""view"

          "name""商务合作"

          "url""https://h5.eqxiul.com/ls/EyOfmUXk" 

        }, 

        { 

          "type""view"

          "name""电商服务"

          "url""https://www.bqool.cn/seller-services/" 

        }, 

        { 

          "type""view"

          "name""联系酷仔"

          "url""https://admin.qidian.qq.com/template/blue/mp/menu/qr-code-jump.html?linkType=0&env=ol&kfuin=2852161981&fid=95&key=71d05b6c5e0a545f0be22ec831f9d7af&cate=1&type=16&ftype=1&_type=wpa&qidian=true" 

        } 

      ] 

    } 

  ] 

2、读取json文件

/// <summary> 

        /// 自定义菜单 

        /// </summary> 

        /// <param name="OPENID"></param> 

        /// <param name="template_id"></param> 

        /// <returns></returns

        [BQoolException] 

        [HttpPost] 

        public ApiResult CustomMenus(string CustomMenusPwd) 

        { 

            if (!string.IsNullOrWhiteSpace(CustomMenusPwd) && CustomMenusPwd.Trim() == MvcTools.GetAppSetting("WeixinCustomMenus")) 

            { 

                CustomMenusParam param = new CustomMenusParam() { Account = "sys", UpdateUser = "sys" }; 

                param.Jsonstr = WeiXinHelper.ReadAccess(HttpRuntime.AppDomainAppPath.ToString() + "/App_Data/WeChat/Custom_Menus.json"); 

                ApiResult result = _weChatAlertsService.CustomMenus(param, AppId, Appsecret); 

                return result; 

            } 

            else 

            { 

                return new ApiResult() { Success = false, Code = ApiResultCode.InvalidError, ErrorMessage = ApiResultCode.ErrorMessages[ApiResultCode.InvalidError] }; 

            } 

        } 

3、post提交数据到微信服务器

private static Tuple<WxBaseInfo, string, string> CustomMenus(string AppId, string Appsecret, string jsonstr, bool isResh) 

        { 

            var accessToken = TryGetAccessToken(AppId, Appsecret, isResh); 

            string url = APIConfig.Custom_Menus(accessToken); 

            string str = APIConfig.CreatePostHttpResponse(url, jsonstr); 

            _logger.Debug("自定义菜单\r\n" + "输入:" + url + "\r\n" + jsonstr + "\r\n输出:" + str); 

            return new Tuple<WxBaseInfo, string, string>(JsonConvert.DeserializeObject<WxBaseInfo>(str), url, jsonstr); 

        } 

public static string WEIXIN_URL = "https://api.weixin.qq.com/"

 

        public static string Custom_Menus(string token) 

        { 

            return String.Format(WEIXIN_URL + "cgi-bin/menu/create?access_token={0}", token); 

        } 

备注:一般情况下,不管是创建或者修改菜单,使用 "cgi-bin/menu/create这个接口即可。

延伸 · 阅读

精彩推荐
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22