C#开发微信门户及应用(24)-微信小店货架消息保管

在前方微信小店类别篇《C#开发微信门户及利用(22)-微信小店的付出和使用》里面介绍了部分微信小店的基础知识,以及《C#支出微信门户及运用(23)-微信小店商品管理接口的包裹和测试》里面详细介绍了微信小店商品的接口定义、完毕和测试的内容,本文首要介绍微信小店货架音信保管。这么些模块是在微信小店对象里面,最为复杂,也是最难驾驭的1个模块,对于它的对象建立模型,必要反复测试才能到家起来,因而那些货架管理模块,能够说是最具技术含量的几个模块了。

① 、微信小店货架介绍

在微信公众号的后台里面,可以对货架音讯进行维护,界面如下所示。货架的定义,正是把商品分门别类的很好呈现给客户,货架就是相近三个布局能够的展柜,大家得以定义区别的货架,然后发布不相同的U奥德赛L进行体验。

C# 1

其余,大家一般成立货架,都以依照货架的沙盘库来营造的,货架的模版给咱们一点也不慢构建多少个货架,提供了可视化的参阅界面,货架模板界面如下所示。

C# 2

 

贰 、货架管理的开发模型

对于使用API开发微信店铺,微信小店的货架管理操作接口,和例行的模块大约,具有上边多少个成效操作。

C# 3

就算看起来和前面包车型地铁对象模型大致,但是货架的音信万分复杂,因而你一旦须要基于Json数据把它还原为实体对象的时候,要求反复开展研讨,不然很简单建立模型错误。

对应着微信小店管理界面包车型客车货架模板,货架的对象音讯包含了几个不等的控件模型,它们有个别能够展开重组使用。

C# 4

多少个货架的模子展现如下所示。

C# 5C# 6

C# 7C# 8

C# 9

通过上面多少个控件模型,大家得以看看它们各自表示不平等的布局功效,而且它们得以在货架上海展览中心开重组使用的。

③ 、货架消息的指标建立模型

依据微信小店的接口表达,我们最终定义的货架实体对象新闻,内容就卓殊丰裕和弹性化。

C# 10

我们经过参考微信小店的API表明,就可以观察货架的消息JSON数据很复杂,具体定义如下所示。

C# 11C# 12

{
    "shelf_data": {
      "module_infos": [
        {
          "group_info": {
            "filter": {
              "count": 2
            },
            "group_id": 50
          },
          "eid": 1
        },
        {
            "group_infos": {
                "groups": [
                  {
                    "group_id": 49
                  },
                  {
                    "group_id": 50
                  },
                  {
                    "group_id": 51
                  }
                ]
          },
          "eid": 2
        },
        {
          "group_info": {
            "group_id": 52,
            "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5Jm64z4I0TTicv0TjN7Vl9bykUUibYKIOjicAwIt6Oy0Y6a1Rjp5Tos8tg/0"
          },
          "eid": 3
        },
        {
          "group_infos": {  
            "groups": [
              {
                "group_id": 49,
                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
              },
              {
                "group_id": 50,
                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5G1kdy3ViblHrR54gbCmbiaMnl5HpLGm5JFeENyO9FEZAy6mPypEpLibLA/0"
              },
              {
                "group_id": 52,
                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
              }
            ]
          },
          "eid": 4
        }, 
        {
          "group_infos": {
            "groups": [
              {
                "group_id": 43
              },
              {
                "group_id": 44
              },
              {
                "group_id": 45
              },
              {
                "group_id": 46
              }
            ],
            "img_background": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
          },
          "eid": 5
        }
      ]
    }, 
    "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibrWQn8zWFUh1YznsMV0XEiavFfLzDWYyvQOBBszXlMaiabGWzz5B2KhNn2IDemHa3iarmCyribYlZYyw/0", 
    "shelf_name": "测试货架"
}

View Code

咱俩遵照JSON数据的定义,定义了多少个货架控件的对象,他们的关联如下所示。

C# 13

大家能够根据JSON数据开始展览实体对象的建立模型,然后有了那些目的,大家就能够尤其定义好货架的连锁操作接口了,接口定义如下所示。

        #region 货架管理

        /// <summary>
        /// 增加货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfBanner">货架招牌图片Url</param>
        /// <param name="shelfName">货架名称</param>
        /// <param name="controls">货架控件1,2,3,4,5类型的集合</param>
        /// <returns></returns>
        AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, List<ShelfControlBase> controls);

        /// <summary>
        /// 删除货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfId">货架Id</param>
        /// <returns></returns>
        CommonResult DeleteShelf(string accessToken, int shelfId);

        /// <summary>
        /// 修改货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfId">货架Id</param>
        /// <param name="shelfBanner">货架招牌图片Url</param>
        /// <param name="shelfName">货架名称</param>
        /// <param name="controls">货架控件1,2,3,4,5类型的集合</param>
        /// <returns></returns>
        CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, List<ShelfControlBase> controls);

        /// <summary>
        /// 获取所有货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        List<ShelfJson> GetAllShelf(string accessToken);

        /// <summary>
        /// 根据货架ID获取货架信息
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfId">货架Id</param>
        /// <returns></returns>
        ShelfJson GetShelfById(string accessToken, int shelfId); 

        #endregion

有了这几个接口的概念,大家就供给落成对应的接口,从而完结我们向微信API的包装处理了。

微信小店的货架管理落到实处内容如下所示(部分剧情,增删改)。

        /// <summary>
        /// 增加货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfBanner">货架招牌图片Url</param>
        /// <param name="shelfName">货架名称</param>
        /// <param name="controls">货架控件1,2,3,4,5类型的集合</param>
        /// <returns></returns>
        public AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, List<ShelfControlBase> controls)
        {
            var url = string.Format("https://api.weixin.qq.com/merchant/shelf/add?access_token={0}", accessToken);
            var data = new
            {
                shelf_data = new
                {
                    module_infos = controls
                },
                shelf_banner = shelfBanner,
                shelf_name = shelfName
            };

            string postData = data.ToJson();
            return JsonHelper<AddShelfResult>.ConvertJson(url, postData);
        }

        /// <summary>
        /// 删除货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfId">货架Id</param>
        /// <returns></returns>
        public CommonResult DeleteShelf(string accessToken, int shelfId)
        {
            var url = string.Format("https://api.weixin.qq.com/merchant/shelf/del?access_token={0}", accessToken);
            var data = new
            {
                shelf_id = shelfId
            };
            string postData = data.ToJson();

            return Helper.GetExecuteResult(url, postData);
        }

        /// <summary>
        /// 修改货架
        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="shelfId">货架Id</param>
        /// <param name="shelfBanner">货架招牌图片Url</param>
        /// <param name="shelfName">货架名称</param>
        /// <param name="controls">货架控件1,2,3,4,5类型的集合</param>
        /// <returns></returns>
        public CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, List<ShelfControlBase> controls)
        {
            var url = string.Format("https://api.weixin.qq.com/merchant/shelf/mod?access_token={0}", accessToken);
            var data = new
            {
                shelf_id = shelfId,
                shelf_data = new
                {
                    module_infos = controls
                },
                shelf_banner = shelfBanner,
                shelf_name = shelfName
            };
            string postData = data.ToJson();

            return Helper.GetExecuteResult(url, postData);
        }

④ 、微信小店货架管理的接口测试

是因为货架管理的对象和接口定义比较复杂一些,一定需求开始展览频仍的测试才能规范使用,假设不检点有只怕你定义的实体类,获取不到有个别字段音信。

本身为着便利,创立了三个Winform项目,分别对各样接口实行测试。

C# 14

对于货架管理内容的接口测试,测试代码如下所示。

        private void btnShelf_Click(object sender, EventArgs e)
        {
            IMerchantApi api = new MerchantApi();
            List<ShelfJson> list = api.GetAllShelf(token);
            Console.WriteLine(list.ToJson());

            foreach(ShelfJson json in list)
            {
                Console.WriteLine("货架信息:");
                ShelfJson getJson = api.GetShelfById(token, json.shelf_id.Value);
                Console.WriteLine(getJson.ToJson());
            }

            string shelf_banner = "http://mmbiz.qpic.cn/mmbiz/mLqH9gr11Gyb2sgiaelcsxYtQENGePp0RgeNlAQicfZQokjbJMUq4h8MHtjpekJNEWKuMN3gdRz5RxfkYb7NlIrw/0";
            string shelf_name = "测试货架";
            ShelfControl1 c11 = new ShelfControl1(6, 202797386);            
            ShelfControl1 c12 = new ShelfControl1(4, 202797397);
            List<ShelfControlBase> controlList = new List<ShelfControlBase>(){c11, c12};
            AddShelfResult result = api.AddShelf(token, shelf_banner, shelf_name, controlList);
            if (result != null && result.shelf_id > 0)
            {
                Console.WriteLine("增加的货架信息:");
                ShelfJson getJson = api.GetShelfById(token, result.shelf_id);
                Console.WriteLine(getJson.ToJson());

                shelf_name = "测试货架-修改";
                controlList = new List<ShelfControlBase>(){c11};
                CommonResult updateReuslt = api.UpdateShelf(token, result.shelf_id, shelf_banner, shelf_name, controlList);
                Console.WriteLine("修改货架操作:{0}", updateReuslt.Success ? "成功" : "失败");

                CommonResult deleteResult = api.DeleteShelf(token, result.shelf_id);
                Console.WriteLine("删除货架操作:{0}", deleteResult.Success ? "成功" : "失败");
            }
        }

C# 15

 

假如对这么些《C#开发微信门户及使用》连串感兴趣,可以关切自个儿的别的小说,连串小说如下所示:

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#C#,开发微信门户及选用(10)–在治本种类中国共产党同微信用户分组音讯

C#开发微信门户及运用(9)-微信门户菜单管理及提交到微信服务器

C#付出微信门户及利用(8)-微信门户应用管理系列功效介绍

C#付出微信门户及使用(7)-微信多客服作用及开销集成

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

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

C#开发微信门户及使用(4)–关心用户列表及详细音信管理

C#开发微信门户及运用(3)–文本音信和图像和文字音讯的答复

C#开发微信门户及利用(2)–微信音讯的拍卖和应对

C#付出微信门户及应用(1)–开端应用微信接口

 

相关文章