95992828九五至尊2

支付微信门户及使用

二月 4th, 2019  |  882828九五至尊手机版

有一段时间没有随着微信的宗旨继续介绍其中的效能模块了,那段时光来,微信也做了无数的更动改动,针对这么些特色我周到审核了须臾间有关的微信公众号和集团号的接口,对原始的微信API和系统管理做了完美的换代,本小说以及背后的随笔就是按照那么些工作上的下结论,以期把微信涉及的成效模块,都使用C#贯彻的章程来介绍。本小说主要介绍微信公众号的个性化菜单的落实,纵然眼下微信公众号和公司号已经在功效上类似一致,不过在小卖部号上还不曾个性化菜单的相干接口。

有一段时间没有随着微信的主旨继续介绍其中的成效模块了,那段时日来,微信也做了成百上千的成形改动,针对那几个特征我周详核查了一下荣辱与共的微信公众号和商社号的接口,对原来的微信API和系统管理做了一揽子的翻新,本小说以及背后的小说就是根据这些工作上的下结论,以期把微信涉及的功用模块,都使用C#心想事成的章程来介绍。本随笔首要介绍微信公众号的个性化菜单的贯彻,就算近来微信公众号和合营社号已经在作用上看似一致,不过在商家号上还没有个性化菜单的连锁接口。

1、个性化菜单介绍

大家先理解一下个性化菜单的介绍,依照官方的资料,如下介绍。

为了帮忙公众号完毕灵活的事务运营,微信公众平台新增了个性化菜单接口,开发者可以经过该接口,让公众号的不比用户群体看到不均等的自定义菜单。该接口开放给已表达订阅号和已注脚服务号。

开发者能够因此以下标准来安装用户阅览的食谱:

1、用户分组(开发者的业务需求可以借助用户分组来完成)
2、性别
3、手机操作系统
4、地区(用户在微信客户端设置的地区)
5、语言(用户在微信客户端设置的语言)

个性化菜单接口表明:

1、个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上。
2、菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
3、普通公众号的个性化菜单的新增接口每日限制次数为2000次,删除接口也是2000次,测试个性化菜单匹配结果接口为20000次
4、出于安全考虑,一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接
5、创建个性化菜单之前必须先创建默认菜单(默认菜单是指使用普通自定义菜单创建接口创建的菜单)。如果删除默认菜单,个性化菜单也会全部删除

个性化菜单匹配规则表明:

当公众号创建多个个性化菜单时,将按照发布顺序,由新到旧逐一匹配,直到用户信息与matchrule相符合。如果全部个性化菜单都没有匹配成功,则返回默认菜单。
例如公众号先后发布了默认菜单,个性化菜单1,个性化菜单2,个性化菜单3。那么当用户进入公众号页面时,将从个性化菜单3开始匹配,如果个性化菜单3匹配成功,则直接返回个性化菜单3,否则继续尝试匹配个性化菜单2,直到成功匹配到一个菜单。
根据上述匹配规则,为了避免菜单生效时间的混淆,决定不予提供个性化菜单编辑API,开发者需要更新菜单时,需将完整配置重新发布一轮。

除正常的默许菜单外,个性化菜单提供了下边多少个处理操作。

1 制造个性化菜单

2 删除个性化菜单

3 测试个性化菜单匹配结果

4 查询个性化菜单

5 删除所有菜单

个性化自定义菜单作用,是指集团可以按照粉丝的分组、性别、手机操作系统,甚至地区,来分别显示公众号的食谱。

比如说,一家健身会所的公众号,将自定义菜单按照粉丝性别进行了分离设置。男性粉丝进入公众号会展示男生们相比感兴趣菜单内容,跆拳道、搏击等;要是女性粉丝,则会显得瑜伽、舞蹈、防身术等女性粉丝感兴趣的菜谱课程等。

图片 1

 

1、个性化菜单介绍

俺们先了然一下个性化菜单的牵线,依照官方的材料,如下介绍。

为了帮衬群众号完成灵活的事务运营,微信公众平台新增了个性化菜单接口,开发者可以透过该接口,让公众号的两样用户群体看到不均等的自定义菜单。该接口开放给已阐明订阅号和已讲明服务号。

开发者能够由此以下原则来安装用户观望的食谱:

1、用户分组(开发者的业务需求可以借助用户分组来完成)
2、性别
3、手机操作系统
4、地区(用户在微信客户端设置的地区)
5、语言(用户在微信客户端设置的语言)

个性化菜单接口表明:

1、个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上。
2、菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
3、普通公众号的个性化菜单的新增接口每日限制次数为2000次,删除接口也是2000次,测试个性化菜单匹配结果接口为20000次
4、出于安全考虑,一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接
5、创建个性化菜单之前必须先创建默认菜单(默认菜单是指使用普通自定义菜单创建接口创建的菜单)。如果删除默认菜单,个性化菜单也会全部删除

个性化菜单匹配规则表达:

当公众号创建多个个性化菜单时,将按照发布顺序,由新到旧逐一匹配,直到用户信息与matchrule相符合。如果全部个性化菜单都没有匹配成功,则返回默认菜单。
例如公众号先后发布了默认菜单,个性化菜单1,个性化菜单2,个性化菜单3。那么当用户进入公众号页面时,将从个性化菜单3开始匹配,如果个性化菜单3匹配成功,则直接返回个性化菜单3,否则继续尝试匹配个性化菜单2,直到成功匹配到一个菜单。
根据上述匹配规则,为了避免菜单生效时间的混淆,决定不予提供个性化菜单编辑API,开发者需要更新菜单时,需将完整配置重新发布一轮。

除正常的默许菜单外,个性化菜单提供了上边多少个处理操作。

1 创立个性化菜单

2 删除个性化菜单

3 测试个性化菜单匹配结果

4 查询个性化菜单

5 删除所有菜单

个性化自定义菜单成效,是指公司可以依照粉丝的分组、性别、手机操作系统,甚至地区,来分别突显公众号的食谱。

比如说,一家健身会所的公众号,将自定义菜单根据粉丝性别举行了分离设置。男性粉丝进入公众号会突显男生们相比较感兴趣菜单内容,跆拳道、搏击等;如果女性粉丝,则会显得瑜伽、舞蹈、防身术等女性粉丝感兴趣的菜单课程等。

图片 2

 

2、个性化菜单的C#统筹处理

微信的菜系是微信处理中很紧要的一环,因为它是微信给用户输入体验主要的一环,也是很直观的界面彰显之一,菜单的来得就是急需大家苦思苦想来精简的界面元素了,由于菜单的第一以及效率的丰硕性,我在事先好几篇小说专门介绍了菜单的各个处理。

在《C#支付微信门户及使用(6)–微信门户菜单的田间管理操作》、《C#开发微信门户及运用(9)-微信门户菜单管理及提交到微信服务器》、《C#付出微信门户及应用(11)–微信菜单的三种突显方法介绍》、《C#付出微信门户及选取(20)-微信集团号的菜系管理》分别对有关的菜谱有过介绍,有要求可以参见精通一下。

菜单模块,在微信公众号和集团号,它们都可以共用一个模子,由此大家把这个情节都位于微信共用模块里面,包含它的实体类音讯(如菜单模块),就算有些地点,部分字段内容没有,不过大家可以经过实体类的JSON标识来拓展处理,从而完毕相比较弹性化的实体类音信承载。

如下标识代码所示。

    /// <summary>
    /// 菜单基本信息(公众号、企业号公用,其他部分一样)
    /// </summary>
    public class MenuJson : BaseJsonResult
    {
        /// <summary>
        /// 按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 按钮类型(click或view)
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string type { get; set; }

        /// <summary>
        /// 按钮KEY值,用于消息接口(event类型)推送,不超过128字节
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string key { get; set; }

        /// <summary>
        /// 网页链接,用户点击按钮可打开链接,不超过256字节
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string url { get; set; }

        /// <summary>
        /// media_id类型和view_limited类型必须,调用新增永久素材接口返回的合法media_id
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string media_id { get; set; }

        /// <summary>
        /// 子按钮数组,按钮个数应为2~5个
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public List<MenuJson> sub_button { get; set; }

下边那几个实体类是菜单音信的根基新闻,大家需求从那个基础上伸张出来多少个实体类,方便在创设,获取菜单音讯的时候举行音讯变换,如下多少个类图的设计所示。

图片 3

通过那多少个类的关联,大家就足以适应所有的默许菜单和个性化菜单,以及店堂号的菜系音讯转换处理了,通过JSON转换为相应的实体类,完毕信息的强类型处理。

中间大家菜单处理的API已毕类代码如下所示。

    /// <summary>
    /// 菜单的相关操作
    /// </summary>
    public class MenuApi : IMenuApi

那般我们在IMenuApi的底子上增添多少个个性化的接口。

        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        string CreateConditionalMenu(string accessToken, MenuListJson menuJson);

        /// <summary>
        /// 根据菜单ID删除个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuid">菜单ID</param>
        /// <returns></returns>
        CommonResult DeleteConditionalMenu(string accessToken, string menuid);

        /// <summary>
        /// 测试个性化菜单匹配结果
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        MenuListJson TryMatchConditionalMenu(string accessToken, string user_id);

然后在MenuApi兑现类里面完毕相关的逻辑处理即可。

下边是创制个性化菜单的接口表明。

2、个性化菜单的C#设计处理

微信的菜系是微信处理中很重点的一环,因为它是微信给用户输入体验主要的一环,也是很直观的界面展现之一,菜单的来得就是须要我们搜索枯肠来精简的界面元素了,由于菜单的根本以及效率的丰硕性,我在从前好几篇随笔专门介绍了菜单的种种处理。

在《C#支出微信门户及利用(6)–微信门户菜单的军事管制操作》、《C#开发微信门户及使用(9)-微信门户菜单管理及提交到微信服务器》、《C#付出微信门户及利用(11)–微信菜单的二种显示方式介绍》、《C#支出微信门户及应用(20)-微信集团号的菜单管理》分别对相关的菜谱有过介绍,有亟待可以参见领会一下。

食谱模块,在微信公众号和供销社号,它们都足以共用一个模型,因而大家把那么些情节都置身微信共用模块里面,包罗它的实体类音信(如菜单模块),即便有点地方,部分字段内容并未,然则我们可以通过实体类的JSON标识来举行拍卖,从而完结相比弹性化的实体类信息承载。

正如标识代码所示。

    /// <summary>
    /// 菜单基本信息(公众号、企业号公用,其他部分一样)
    /// </summary>
    public class MenuJson : BaseJsonResult
    {
        /// <summary>
        /// 按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 按钮类型(click或view)
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string type { get; set; }

        /// <summary>
        /// 按钮KEY值,用于消息接口(event类型)推送,不超过128字节
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string key { get; set; }

        /// <summary>
        /// 网页链接,用户点击按钮可打开链接,不超过256字节
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string url { get; set; }

        /// <summary>
        /// media_id类型和view_limited类型必须,调用新增永久素材接口返回的合法media_id
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public string media_id { get; set; }

        /// <summary>
        /// 子按钮数组,按钮个数应为2~5个
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        public List<MenuJson> sub_button { get; set; }

地点那些实体类是菜单信息的根底音讯,大家需要从这一个基础上扩大出来多少个实体类,方便在打造,获取菜单音讯的时候进行音讯转换,如下多少个类图的宏图所示。

图片 4

因此那多少个类的涉及,我们就可以适应所有的默许菜单和个性化菜单,以及公司号的菜单信息变换处理了,通过JSON转换为对应的实体类,完毕新闻的强类型处理。

其间大家菜单处理的API达成类代码如下所示。

    /// <summary>
    /// 菜单的相关操作
    /// </summary>
    public class MenuApi : IMenuApi

诸如此类我们在IMenuApi的基本功上平添多少个个性化的接口。

        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        string CreateConditionalMenu(string accessToken, MenuListJson menuJson);

        /// <summary>
        /// 根据菜单ID删除个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuid">菜单ID</param>
        /// <returns></returns>
        CommonResult DeleteConditionalMenu(string accessToken, string menuid);

        /// <summary>
        /// 测试个性化菜单匹配结果
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        MenuListJson TryMatchConditionalMenu(string accessToken, string user_id);

接下来在MenuApi完成类里面完成相关的逻辑处理即可。

下边是开创个性化菜单的接口表明。

始建个性化菜单

http请求格局:POST(请使用https协议)

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

请求示例

{
    "button":[
    {   
        "type":"click",
        "name":"今日歌曲",
        "key":"V1001_TODAY_MUSIC" 
    },
    { 
        "name":"菜单",
        "sub_button":[
        {   
            "type":"view",
            "name":"搜索",
            "url":"http://www.soso.com/"
        },
        {
            "type":"view",
            "name":"视频",
            "url":"http://v.qq.com/"
        },
        {
            "type":"click",
            "name":"赞一下我们",
            "key":"V1001_GOOD"
        }]
 }],
"matchrule":{
  "group_id":"2",
  "sex":"1",
  "country":"中国",
  "province":"广东",
  "city":"广州",
  "client_platform_type":"2"
  "language":"zh_CN"
  }
}

里面地点的信息,转换为大家的实体类对象消息就是之类所示。

MenuListJson menuJson

它API再次来到结果如下所示。

{
    "menuid":"208379533"
}

为了承载这么些信息,大家须要定义一个实体类来承载这几个音信。

    /// <summary>
    /// 返回MenuId的结果
    /// </summary>
    public class MenuIdResult
    {       
        /// <summary>
        /// 菜单的ID
        /// </summary>
        public string menuid { get; set; }
    }

末尾大家的API接口只要求得到里面的菜谱ID值,字符串类型的就足以了,API具体已毕代码如下所示。

        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        public string CreateConditionalMenu(string accessToken, MenuListJson menuJson)
        {
            string result = "";
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}", accessToken);
            //matchrule不能为空
            ArgumentValidation.CheckForNullReference(menuJson.matchrule, "matchrule");

            string postData = menuJson.ToJson();
            MenuIdResult list = JsonHelper<MenuIdResult>.ConvertJson(url, postData);
            if (list != null)
            {
                result = list.menuid;
            }
            return result;
        }

而删除个性化菜单的接口也是类似的处理,如下所示。

        /// <summary>
        /// 根据菜单ID删除个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuid">菜单ID</param>
        /// <returns></returns>
        public CommonResult DeleteConditionalMenu(string accessToken, string menuid)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken);
            var data = new
            {
                menuid = menuid
            };

            string postData = data.ToJson();
            return Helper.GetExecuteResult(url, postData);
        }

除此以外,对于个性化菜单来说,查询、删除所有的菜系操作接口和普通默许菜单是一律的,因而得以选取那七个接口,可是鉴于大家扩张了查询再次回到的音讯类,所以一旦是个性化菜单,那么它回到的JSON字符串里面,包括了conditionalmenu的品质,这么些是一个集合
,也就是说个性化菜单是三个规则的个性化菜单的聚合。

图片 5

食谱的JSON数据结构如下所示。

图片 6

 

开创个性化菜单

http请求格局:POST(请使用https协议)

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

呼吁示例

{
    "button":[
    {   
        "type":"click",
        "name":"今日歌曲",
        "key":"V1001_TODAY_MUSIC" 
    },
    { 
        "name":"菜单",
        "sub_button":[
        {   
            "type":"view",
            "name":"搜索",
            "url":"http://www.soso.com/"
        },
        {
            "type":"view",
            "name":"视频",
            "url":"http://v.qq.com/"
        },
        {
            "type":"click",
            "name":"赞一下我们",
            "key":"V1001_GOOD"
        }]
 }],
"matchrule":{
  "group_id":"2",
  "sex":"1",
  "country":"中国",
  "province":"广东",
  "city":"广州",
  "client_platform_type":"2"
  "language":"zh_CN"
  }
}

个中地点的音信,转换为我们的实体类对象音信就是之类所示。

MenuListJson menuJson

它API再次回到结果如下所示。

{
    "menuid":"208379533"
}

为了承载这一个音讯,我们需要定义一个实体类来承载那么些音讯。

    /// <summary>
    /// 返回MenuId的结果
    /// </summary>
    public class MenuIdResult
    {       
        /// <summary>
        /// 菜单的ID
        /// </summary>
        public string menuid { get; set; }
    }

最终大家的API接口只需求取得里面的菜单ID值,字符串类型的就足以了,API具体贯彻代码如下所示。

        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        public string CreateConditionalMenu(string accessToken, MenuListJson menuJson)
        {
            string result = "";
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}", accessToken);
            //matchrule不能为空
            ArgumentValidation.CheckForNullReference(menuJson.matchrule, "matchrule");

            string postData = menuJson.ToJson();
            MenuIdResult list = JsonHelper<MenuIdResult>.ConvertJson(url, postData);
            if (list != null)
            {
                result = list.menuid;
            }
            return result;
        }

而删除个性化菜单的接口也是近似的处理,如下所示。

        /// <summary>
        /// 根据菜单ID删除个性化菜单
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuid">菜单ID</param>
        /// <returns></returns>
        public CommonResult DeleteConditionalMenu(string accessToken, string menuid)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken);
            var data = new
            {
                menuid = menuid
            };

            string postData = data.ToJson();
            return Helper.GetExecuteResult(url, postData);
        }

其它,对于个性化菜单来说,查询、删除所有的食谱操作接口和平凡默许菜单是一致的,因而可以引用那多少个接口,然则是因为大家增加了询问再次来到的音讯类,所以借使是个性化菜单,那么它回到的JSON字符串里面,包罗了conditionalmenu的习性,那几个是一个集合
,也就是说个性化菜单是多个规则的个性化菜单的集结。

图片 7

食谱的JSON数据结构如下所示。

图片 8

 

3、个性化菜单封装接口的使用

有了地方接口的卷入,大家可以在创制个性化菜单的时候很方便了,打造个性化菜单的时候,大家需求把全部亟待出现的菜系都亟待放在一个conditionalmenu的单元里面,固然那样的单元在集合里面出现三个。

如下边是营造一个个性化的菜谱体系,和平凡的默许菜单不一致,它须要指定一个matchrule的对象,如下代码所示。

            MenuJson conditional = new MenuJson("相关链接", new MenuJson[] { 
                new MenuJson("个性化菜单", ButtonType.click, "event_company")
            });
            MatchRule rule = new MatchRule()
            {
                sex = "1"
            };

            MenuListJson menuJson = new MenuListJson();
            menuJson.button.AddRange(new MenuJson[] { conditional });
            menuJson.matchrule = rule;

由此地点的代码了解,大家借使要求扩张三个个性化菜单,那么就是经过这几个措施,每回创立一个个性化菜单的方法展开创设,当然假诺大家采取查询个性化菜单的结果可以观看,假如创造七个,那么conditionalmenu集合里面是七个目的的。

调用代码每回添加一个个性化菜单的操作如下所示。

                string menuid = menuBLL.CreateConditionalMenu(token, menuJson);
                Console.WriteLine("创建菜单:" + (!string.IsNullOrEmpty(menuid) ? "成功:" + menuid : "失败"));

大家创建四个规则后,可以经过TryMatch的方法来检查匹配的结果,也就是对应不一致用户(openid)会产出不相同的个性化菜单列表了。

                    var myResult = menuBLL.TryMatchConditionalMenu(token, openId);
                    if (myResult != null)
                    {
                        Console.WriteLine(myResult.ToJson());
                    }

                    var userid_female = "oSiLnt2J4mYkhVG3aLTdMIF1hv-s";//女性的ID
                    myResult = menuBLL.TryMatchConditionalMenu(token, userid_female);
                    if (myResult != null)
                    {
                        Console.WriteLine(myResult.ToJson());
                    }

 

一经对这些《C#支付微信门户及运用》体系感兴趣,可以关切我的其余小说,种类随笔如下所示:

C#支付微信门户及运用(28)–微信“摇一摇·周边”功用的行使和接口的贯彻

C#支付微信门户及应用(27)-公众号模板音讯管理 

C#开发微信门户及采用(26)-公众号微信资料管理

C#支出微信门户及利用(25)-微信集团号的客户端管住功效

C#支付微信门户及使用(24)-微信小店货架音信保管

C#开发微信门户及利用(23)-微信小店商品管理接口的包装和测试

C#付出微信门户及应用(22)-微信小店的支出和选取

C#支出微信门户及选取(21)-微信集团号的音信和事件的收随处理及解密 

C#支出微信门户及利用(20)-微信集团号的菜单管理

C#支付微信门户及应用(19)-微信集团号的音信发送(文本、图片、文件、语音、视频、图文消息等)

C#支出微信门户及使用(18)-微信集团号的通信录管理支付之成员管理

C#支出微信门户及采纳(17)-微信集团号的通讯录管理支付之部门管理

C#支付微信门户及利用(16)-微信集团号的布署和行使

C#开发微信门户及应用(15)-微信菜单伸张扫一扫、发图片、发地理地方功效

 C#开发微信门户及使用(14)-在微信菜单中运用重定向获取用户数据

C#开发微信门户及运用(13)-使用地理地点增加相关应用

C#付出微信门户及应用(12)-使用语音处理

C#支出微信门户及采纳(11)–微信菜单的有余表现方法介绍

C#支付微信门户及利用(10)–在管理种类中一起微信用户分组新闻

C#支付微信门户及应用(9)-微信门户菜单管理及提交到微信服务器

C#开发微信门户及选拔(8)-微信门户应用管理连串功能介绍

C#付出微信门户及利用(7)-微信多客服成效及开支集成

C#支出微信门户及使用(6)–微信门户菜单的管制操作

C#开发微信门户及利用(5)–用户分组音讯保管

C#付出微信门户及使用(4)–关心用户列表及详细新闻管理

C#支出微信门户及运用(3)–文本音信和图文消息的答复

C#支付微信门户及应用(2)–微信音信的拍卖和答复

C#付出微信门户及选拔(1)–伊始接纳微信接口

3、个性化菜单封装接口的运用

有了地点接口的包裹,大家得以在创建个性化菜单的时候很便宜了,创设个性化菜单的时候,大家须要把全路内需出现的食谱都必要放在一个conditionalmenu的单元里面,纵然这么的单元在会聚里面现身四个。

如下边是营造一个个性化的菜单序列,和平时的默许菜单分歧,它要求指定一个matchrule的靶子,如下代码所示。

            MenuJson conditional = new MenuJson("相关链接", new MenuJson[] { 
                new MenuJson("个性化菜单", ButtonType.click, "event_company")
            });
            MatchRule rule = new MatchRule()
            {
                sex = "1"
            };

            MenuListJson menuJson = new MenuListJson();
            menuJson.button.AddRange(new MenuJson[] { conditional });
            menuJson.matchrule = rule;

通过上面的代码了解,大家只要急需充实三个个性化菜单,那么就是透过那么些办法,每一遍成立一个个性化菜单的法子进行打造,当然即使大家运用查询个性化菜单的结果可以观察,如若成立八个,那么conditionalmenu集合里面是七个对象的。

调用代码每回添加一个个性化菜单的操作如下所示。

                string menuid = menuBLL.CreateConditionalMenu(token, menuJson);
                Console.WriteLine("创建菜单:" + (!string.IsNullOrEmpty(menuid) ? "成功:" + menuid : "失败"));

我们成立八个规则后,可以透过TryMatch的法子来检查匹配的结果,也就是对应不一致用户(openid)会产出差别的个性化菜单列表了。

                    var myResult = menuBLL.TryMatchConditionalMenu(token, openId);
                    if (myResult != null)
                    {
                        Console.WriteLine(myResult.ToJson());
                    }

                    var userid_female = "oSiLnt2J4mYkhVG3aLTdMIF1hv-s";//女性的ID
                    myResult = menuBLL.TryMatchConditionalMenu(token, userid_female);
                    if (myResult != null)
                    {
                        Console.WriteLine(myResult.ToJson());
                    }

 

即使对这么些《C#支出微信门户及应用》体系感兴趣,可以关切本身的此外文章,体系小说如下所示:

C#支出微信门户及使用(28)–微信“摇一摇·周边”功效的利用和接口的贯彻

C#支付微信门户及运用(27)-公众号模板新闻管理 

C#开发微信门户及应用(26)-公众号微信资料管理

C#支出微信门户及拔取(25)-微信企业号的客户端管住功能

C#支付微信门户及利用(24)-微信小店货架音讯保管

C#开发微信门户及选择(23)-微信小店商品管理接口的包装和测试

C#付出微信门户及利用(22)-微信小店的支出和选择

C#支出微信门户及使用(21)-微信公司号的音讯和事件的接受处理及解密 

C#支付微信门户及选取(20)-微信公司号的菜谱管理

C#支付微信门户及利用(19)-微信集团号的音信发送(文本、图片、文件、语音、视频、图文音讯等)

C#支付微信门户及应用(18)-微信集团号的通信录管理支出之成员管理

C#开发微信门户及使用(17)-微信公司号的通讯录管理支付之部门管理

C#付出微信门户及运用(16)-微信集团号的配置和使用

C#付出微信门户及应用(15)-微信菜单增添扫一扫、发图片、发地理地点作用

 C#支出微信门户及选拔(14)-在微信菜单中动用重定向获取用户数据

C#支付微信门户及运用(13)-使用地理地方增添相关应用

C#开发微信门户及应用(12)-使用语音处理

C#付出微信门户及运用(11)–微信菜单的各个表现格局介绍

C#支出微信门户及应用(10)–在管制体系中一道微信用户分组音信

C#支付微信门户及使用(9)-微信门户菜单管理及提交到微信服务器

C#开发微信门户及运用(8)-微信门户应用管理连串功效介绍

C#付出微信门户及应用(7)-微信多客服效能及开支集成

C#支出微信门户及运用(6)–微信门户菜单的治本操作

C#支付微信门户及应用(5)–用户分组消息保管

C#付出微信门户及采纳(4)–关怀用户列表及详细音讯管理

C#支出微信门户及应用(3)–文本音讯和图文音讯的对答

C#支付微信门户及选用(2)–微信新闻的处理和回答

C#开发微信门户及利用(1)–开首选择微信接口

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图