微信公众号菜单创建

手把手教会你微信公众平台自定义菜单开发——创建菜单 文档里面是详细教程和代码,不用什么基础都可以看懂,代码复制就可以用,立马解决你创建菜单的问题。这部分是微信公众账号自定义菜单的创建【完整的】。下一次教你高级进阶,内容在文档里底部。 立即下载
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Script.Serialization;
using WeChatBiz;
using WeChatCommon;

namespace WeChat
{
    public partial class Menu : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            #region 获取AccessToken
            //自定义菜单token的获取 是用 下面的两个参数 获取的 不能直接用 公众平台的token
            string to = new WeiXin().getGlobalAccessToken(CommomConst.APPID, CommomConst.SECRET);
            //string to =GetData("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + CommomConst.APPID + "&secret=" + CommomConst.SECRET + "");
            //获取json的token
            //to = to.Substring(17, to.Length - 37);
            #endregion

            //删除菜单
            string delResult = GetData("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + to);

            //预约体验Url
            string reserveTryUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + CommomConst.APPID + "&redirect_uri=" + CommomConst.HTTPURL + "/ReserveTry.aspx&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";

            #region 创建主菜单
            string weixin1 = @" {
             ""button"":[
             {  
                  ""type"":""click"",
                  ""name"":""你好!"",
                  ""key"":""Hello""
              },
              {
                   ""type"":""view"",
                   ""name"":""公司简介"",
                   ""url"":""http://www.4ugood.net""
              },
              {
                   ""name"":""产品介绍"",
                   ""sub_button"":[
                    {
                       ""type"":""click"",
                       ""name"":""产品1"",
                        ""key"":""P1""
                    },
                    {
                       ""type"":""click"",
                       ""name"":""产品2"",
                       ""key"":""P2""
                    }]
               }]
         }
        ";
            string i = GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + to, weixin1);
            #endregion

            #region 创建会员菜单
            //签到Url
            string signUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + CommomConst.APPID + "&redirect_uri=" + CommomConst.HTTPURL + "/Sign.aspx&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
            //创建会员菜单
            string menu1 = "";
            menu1 += "{\n";
            menu1 += "\"button\":[ \n";
            menu1 += "{\n";
            menu1 += "\"type\":\"view\",\n";
            menu1 += "\"name\":\"用户绑定\",\n";
            menu1 += "\"url\":\"" + bindUrl + "\"\n";
            menu1 += "},\n";
            menu1 += "{\n";
            menu1 += "\"type\":\"view\",\n";
            menu1 += "\"name\":\"课程表\",\n";
            menu1 += "\"url\":\"" + CourseUrl + "\"\n";
            menu1 += "},\n";
            menu1 += "{\n";
            menu1 += "\"type\":\"view\",\n";
            menu1 += "\"name\":\"签到\",\n";
            menu1 += "\"url\":\"" + signUrl + "\" \n";
            menu1 += "}";
            menu1 += "],\n";
            menu1 += "\"matchrule\": { \n";
            menu1 += "\"group_id\": \"100\" ";
            menu1 += "}";
            menu1 += "}";

            string menuid1 = GetPage("https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=" + to, menu1);
            #endregion

            ////查询个性菜单
            //string menuid = GetData("https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + to);
            //获取用户分组
            //string groupid = getGroupId(to);
            //{"id":0,"name":"未分组","count":8},
            //{"id":1,"name":"黑名单","count":0},
            //{"id":2,"name":"星标组","count":0},
            //{"id":100,"name":"会员","count":0}, 
        }

        /// <summary>
        /// 获取AccessToken
        /// </summary>
        /// <param name="url"> http请求方式: GET 接口URL: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET </param>
        /// <returns></returns>
        private string GetData(string url)
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
            myRequest.Method = "GET";
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            string content = reader.ReadToEnd();
            reader.Close();
            return content;
        }

        /// <summary>
        /// 菜单创建
        /// </summary>
        /// <param name="posturl"> http请求方式: POST 接口URL: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN </param>
        /// <param name="postData">菜单数据Json</param>
        /// <returns></returns>
        public string GetPage(string posturl, string postData)
        {
            Stream outstream = null;
            Stream instream = null;
            StreamReader sr = null;
            HttpWebResponse response = null;
            HttpWebRequest request = null;
            Encoding encoding = Encoding.UTF8;
            byte[] data = encoding.GetBytes(postData);
            // 准备请求...
            try
            {
                // 设置参数
                request = WebRequest.Create(posturl) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                outstream = request.GetRequestStream();
                outstream.Write(data, 0, data.Length);
                outstream.Close();
                //发送请求并获取相应回应数据
                response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                instream = response.GetResponseStream();
                sr = new StreamReader(instream, encoding);
                //返回结果网页(html)代码
                string content = sr.ReadToEnd();
                string err = string.Empty;
                return content;
            }
            catch (Exception ex)
            {
                string err = ex.Message;
                return string.Empty;
            }
        }

        /// <summary>
        /// 获取所有分组信息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        private string getGroupId(string accessToken)
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + accessToken);
            myRequest.Method = "GET";
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            string content = reader.ReadToEnd();
            reader.Close();
            return content;
        }

        /// <summary>
        /// 查询用户所在分组
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="openid">用户的OpenID</param>
        /// <returns></returns>
        public string GetUserGroupId(string accessToken, string openid)
        {
            string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}", accessToken);

            string result = GetPage(url, "{\"openid\":" + openid + "}");

            JavaScriptSerializer js = new JavaScriptSerializer();
            Dictionary<string, object> list = new Dictionary<string, object>();
            list = js.Deserialize<Dictionary<string, object>>(result);
            if (list.ContainsKey("groupid"))
            {
                return list["groupid"].ToString();
            }
            return "";
        }

    }
}
公众号自定义菜单 公众号自定义菜单,代码只需要换成自己公众号的Appid和Appsecret就可以直接使用了 立即下载

相关推荐

公众号自定义菜单,关键字回复

设置公众号的自定义菜单,以及关键字回复,全亲测,正在使用,php微信菜单源码,对初学者是个很好的帮助!

学习笔记(十二)微信公众号-自定义菜单

微信公众号的自定义菜单相关操作

qq_49111986的博客 3372

微信公众平台菜单创建工具(java版源码)

微信公从平开发者模式菜单创建工具(java)StringMVC +String+Mybatis+mysql+Myeclipse2015,该项目可对微信公众平台菜单进行管理和生成。数据库在src下wechat.sql,该项目为业余时间开发,从中可能很多细节没有处理,可能存在BUG,如遇BUG请自行修改。 该源码仅限于学习,研究,不得用于商业用途。

微信公众号自定义菜单

微信公众号自定义菜单

zlgcg19871223的专栏 1914

微信公众平台完整源码JAVA版

本人亲自研究、整合、开发的完整版全部代码,现在不做平台开发了,给大家学习交流!百分百纯金含量!走过路过不要错过!

逆向工程Python爬虫——国税局发票查验平台

前言 这是一篇含金量很高的干货文章,笔者将手把手带领各位一步一步地实现爬取国家税务总局全国增值税发票查验平台(以下简称“查验平台”)。这个想法诞生在19年初,当时在做一款通过扫描二维码就可以查验发票的小程序。 当时由于笔者学艺尚浅,没办法模拟请求爬取查验平台,所以最终采用的技术方案是通过web自动化测试工具selenium控制浏览器去模拟查验步骤,即使这样,开发过程也是困难重重,不过最后笔者和伙伴们成功实现了整套流程,最后开发出的产品口袋发票夺得了包括2019微信小程序开发大赛赛区三等奖在内的多个奖项。 但

weixin_43102379的博客 1万+

【微信公众号开发】——自定义菜单(实现图片、链接、小程序)功能

【微信公众号开发】——自定义菜单(实现图片、链接、小程序)功能

saonian0929的博客 4222

基于Codex与Skills的学术研究自动化全流程实战指南

还在为海量文献下载、整理、阅读和综述写作而头疼吗?面对堆积如山的PDF,你是否感到无从下手?从选题、文献检索、到写作、绘图、润色,再到应对AI检测和审稿意见,学术研究的每一步都充满挑战。本文将为你带来一套堪称“王炸组合”的解决方案: Codex + Skills 。这不是简单的工具介绍,而是一套从零开始,覆盖学术研究全流程的保姆级实战教程。我们将手把手教你如何安装、配置,并利用强大的Skills(技能)自动化处理文献下载管理、高效撰写综述、生成专业图表、智能润色降重,直至应对审稿。无论你是科研新手还是希望提

weixin_29041195的博客 763

个人设置微信公众号自定义菜单的初级经验

前言:这是一个初级经验贴,因为一位社区网友不太会弄自定义菜单,整理一篇文章给他说明一下,顺便备份。 以我自己的个人公众号为例(没啥内容,纯开发测试用,是个人订阅号) 1,自定义菜单的管理位置 首先登录公众号管理平台(https://mp.weixin.qq.com),在左侧找到功能-》自定义菜单,点击打开。 2,自定义菜单的分类和名字 底部可以设置3个一级菜单(图示是“少儿英语”、“小程序”、“学开发”),一级菜单名字不能超过4个汉字或8个字母; 每个一级菜单可以最多增加5个二级菜单(图示是“学开发”、“

开源世界 4401

合肥工业大学操作系统实验9

依据操作系统课程所介绍的页面置换算法与动态内存分配的原理,本实验的目的是掌握OPT、FIFO、LRU、LFU、Clock等页面置换算法;掌握可用空间表及分配方法;掌握边界标识法以及伙伴系统的内存分配方法和回收方法。从而深入理解操作系统的内存管理。从而加深对教材上页面置换算法与动态内存分配的理解。

Martin-share的博客 1094

RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)II

承接上文《RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)I》,继续PN7150 NFC模块的整体适配。本文主要介绍包括HDI实现层、框架层以及设备适配层的代码修改思路。具体包括vendor_adaptor、hdi_service等;以及foundation下的frameworks、services等。此外还包括相关三方库libnfc-nci在鸿蒙平台的移植和适配。需要注意的是,当前nfc适配只是基于作者手上的RK3568平台以及相关OpenHarmony3.2的代码。

Martian_Jonas的博客 1360

微信公众号菜单教程

微信公众号菜单教程 登录微信公众平台官网(https://mp.weixin.qq.com/) 点击侧边栏的功能-自定义菜单 鼠标选中单个菜单后可以编辑选中菜单内容,选中发送消息后,如果用户在使用中点击公众号的菜单,公众号会自动回复之前设置的内容。 单击自建图文进入图文消息编辑界面,按照提示输入内容,上方的控件可以插入图片视频等内容,还能编辑文字格式等。左键选中左侧标题再点击图片-本地上传能上传封面 编辑完成点击保存能够保存到素材库 回到之前的菜单编辑界面,点击从素材库选择

smjmouse的博客 1421

【异常】OpenClaw LLM请求超时故障全链路排查与解决方案 LLM request timed out. 网络连接超时了

摘要: OpenClaw LLM请求超时故障是高频网络交互问题,表现为客户端在预设时间内未收到服务端响应。根因分为四类:客户端配置缺陷(如超时阈值不合理)、网络链路异常(防火墙拦截等)、服务端问题(限流/宕机)及硬件瓶颈(算力不足)。解决方案分三步: 通用排查:检查网络连通性、关闭防火墙/代理校验,调整超时阈值至60-300秒; 分场景修复:云端API需核对密钥/限流规则,本地部署需验证服务状态与硬件资源; 兜底方案:重启程序、更新版本或更换服务端点,结合日志精准定位。修复后不影响OpenClaw数据完整性

奶爸的编程之路,也就一周冷个三天 2058

微信公众号的自定义菜单的创建

微信是我们经常使用的app,可以给我们提供诸多便利,为了实现公众号的功能多样性和便利性,微信公众号有自定义菜单的接口设置,本文主要讲述微信公众号自定义菜单的介绍和多种方法创建自定义菜单(python、java、Apippost)。

m0_57979876的博客 1900

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2050

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

wechat-python-sdk自定义菜单开发教程:创建交互式微信公众号菜单的终极指南

wechat-python-sdk是微信公众平台Python开发包,为开发者提供了创建自定义菜单的强大功能。本文将详细介绍如何使用这个Python SDK快速构建交互式微信公众号菜单,让你的公众号拥有更好的用户体验和功能扩展性。😊 ## 📋 为什么需要自定义菜单? 微信公众号自定义菜单是提升用户体验的关键功能,它允许用户通过点击菜单快速访问核心功能,减少操作步骤,提高用户粘性。使用wech

gitblog_00977的博客 514

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python创建微信公众号菜单

1.获取access_token 微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html import requests appid = "你的公众号appid" secret = "你的公众号secret" url = "https://api.weix...

小诸葛的博客 1106

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

微信公众号创建菜单

在自己的服务器上搭建微信公众号: 也就是接口的一些调用而已类:使用说明: (1)选择合适的接口。 (2)系统会生成该接口的参数表,您可以直接在文本框内填入对应的参数值。(红色星号表示该字段必填) (3)点击检查问题按钮,即可得到相应的调试信息。 今天讨论的是如何在自己的公众号上添加菜单: 自定义菜单的接口说明文档如下: https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html

nbxuwentao的博客 848

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

微信公众号开发 - 创建菜单

完整代码请访问github:https://github.com/liaozq0426/wx.git 在上篇文章中完成了菜单、按钮bean的封装,现在来实现微信公众号菜单的创建 向wx_cfg配置表中插入若干菜单记录 INSERT INTO `wx_cfg` (`id`, `type`, `name`, `value`, `parent_id`, `sort`, `platform`, `wx...

u012693016的博客 1068

微信公众号创建菜单报错40016

微信公众号创建菜单报错40016 今天帮连锁处理公众号链接的时候,我通过接口将连锁的公众号菜单链接返回回来,然后处理一个跳转链接,本来想着是手到擒来的事,没想到突然给我抛出一个错误,打了我一个措手不及,但是问题不大经过我仔细的对比文档终于找出了问题所在,下面把这些找错的过程记录一下,也算是为自己提个醒。 首先贴上我从接口中取出的菜单链接 从线上接口中将链接取出之后,通过在线json解析格式化和过...

ln_6am的博客 2708

微信公众号开发(二)——创建菜单

官方文档https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html 公众号的菜单,是通过微信提供的记录,以POST方式,将JSON串通过BODY提交给服务器处理的,接口如下: https://api.weixin.qq.com/cgi-bin/menu/cre...

bdmh的专栏 2305

微信公众号自动回复及创建菜单开发

小弟我是做android开发的,新版本H5 需求要微信公众号开发,后台人员不够,无奈 老大嫌弃 移动端事情太少,就分配给我了. 前期准备  1.外网 因为微信公众号开发在后台配置的url 只支持外网 并且是端口80或者443 的,所以准备下载一个花生壳,进行内网穿透(如果你有自己的服务器,当我没说)。在花生壳 进行内网穿透,新增映射,选择映射类型HTTP80  固定端口   ,完成: 2...

shh152的博客 1338

微信公众号——自定义菜单的创建

自定义菜单创建微信公众号官方文档 1、自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。 开启自定义菜单后,公众号界面如图所示: 注意: 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。 创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profil...

zuihongyan518的博客 1275

微信公众号开发以及代码菜单创建

1.第一次开发微信公众号难免有点激动  顺便说一下我是java后台的    ~后面的朋友挥挥手好吗!!!!。 2.相信大家看了微信的官方文档以后都会默默的在心里说那么一句  麻辣个鸡的  第一次看文档都是这样的,微信的文档忽略了很多细节,这会让各位江湖朋友自己给自己挖巨大的坑,我也掉进了坑里。下面是我总结的经验,佛说:独乐乐   不如众乐乐,下面是详细配置: a.申请公众号

qq_35917359的博客 2926
上一篇: 邮件发送验证码
下一篇: Flash在线拍照
draling
博客等级 码龄18年 40粉丝 68原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值