搜索
首页微信小程序微信开发C#开发微信门户及应用微信小店货架信息管理

1、微信小店货架介绍

在微信公众号的后台里面,可以对货架信息进行维护,界面如下所示。货架的概念,就是把商品分门别类的很好展示给客户,货架就是类似一个布局良好的展柜,我们可以定义不同的货架,然后公布不同的URL进行体验。

C#开发微信门户及应用微信小店货架信息管理

另外,我们一般创建货架,都是基于货架的模板库来构建的,货架的模板给我们快速构建一个货架,提供了可视化的参考界面,货架模板界面如下所示。

C#开发微信门户及应用微信小店货架信息管理

 

2、货架管理的开发模型

对于利用API开发微信店铺,微信小店的货架管理操作接口,和常规的模块差不多,具有下面几个功能操作。

C#开发微信门户及应用微信小店货架信息管理

虽然看起来和前面的对象模型差不多,但是货架的信息非常复杂,因此你如果需要根据Json数据把它还原为实体对象的时候,需要反复进行斟酌,否则很容易建模错误。

对应着微信小店管理界面的货架模板,货架的对象信息包括了5个不同的控件模型,它们有的可以进行组合使用。

C#开发微信门户及应用微信小店货架信息管理

几个货架的模型展示如下所示。

C#开发微信门户及应用微信小店货架信息管理C#开发微信门户及应用微信小店货架信息管理

C#开发微信门户及应用微信小店货架信息管理C#开发微信门户及应用微信小店货架信息管理

C#开发微信门户及应用微信小店货架信息管理

通过上面5个控件模型,我们可以看到它们分别代表不一样的布局效果,而且它们可以在货架上进行组合使用的。

3、货架信息的对象建模

根据微信小店的接口说明,我们最终定义的货架实体对象信息,内容就非常丰富和弹性化。

C#开发微信门户及应用微信小店货架信息管理

我们通过参考微信小店的API说明,就可以看到货架的信息JSON数据很复杂,具体定义如下所示。

{
    "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": "测试货架"
}

我们根据JSON数据的定义,定义了几个货架控件的对象,他们的关系如下所示。

C#开发微信门户及应用微信小店货架信息管理

我们可以根据JSON数据进行实体对象的建模,然后有了这些对象,我们就可以进一步定义好货架的相关操作接口了,接口定义如下所示。

#region 货架管理

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 增加货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// b2881503b6a28eed702d58a26849bd49货架招牌图片Url8bb7487ae6a16a43571bc14c7fcf93c2
        /// cfaaf849108afdde508c8f25d20a829d货架名称8bb7487ae6a16a43571bc14c7fcf93c2
        /// a25ff584bb26e7d068942c311182ca35货架控件1,2,3,4,5类型的集合8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, Listbc0c52a705fd36dd19ae61d854c297ba controls);

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 删除货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 18af6669f7e4701ac535d27c6118cd21货架Id8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        CommonResult DeleteShelf(string accessToken, int shelfId);

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 修改货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 18af6669f7e4701ac535d27c6118cd21货架Id8bb7487ae6a16a43571bc14c7fcf93c2
        /// b2881503b6a28eed702d58a26849bd49货架招牌图片Url8bb7487ae6a16a43571bc14c7fcf93c2
        /// cfaaf849108afdde508c8f25d20a829d货架名称8bb7487ae6a16a43571bc14c7fcf93c2
        /// a25ff584bb26e7d068942c311182ca35货架控件1,2,3,4,5类型的集合8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, Listbc0c52a705fd36dd19ae61d854c297ba controls);

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 获取所有货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        List725d0c1cf9a714cdb3bbd9c160079cc9 GetAllShelf(string accessToken);

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 根据货架ID获取货架信息
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 18af6669f7e4701ac535d27c6118cd21货架Id8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        ShelfJson GetShelfById(string accessToken, int shelfId); 

        #endregion

有了这些接口的定义,我们就需要实现对应的接口,从而实现我们向微信API的封装处理了。

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

/// 631fb227578dfffda61e1fa4d04b7d25
        /// 增加货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// b2881503b6a28eed702d58a26849bd49货架招牌图片Url8bb7487ae6a16a43571bc14c7fcf93c2
        /// cfaaf849108afdde508c8f25d20a829d货架名称8bb7487ae6a16a43571bc14c7fcf93c2
        /// a25ff584bb26e7d068942c311182ca35货架控件1,2,3,4,5类型的集合8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        public AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, Listbc0c52a705fd36dd19ae61d854c297ba 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 JsonHelper4d13f90b3bcc8266864c675f241e1a63.ConvertJson(url, postData);
        }

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 删除货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 18af6669f7e4701ac535d27c6118cd21货架Id8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        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);
        }

        /// 631fb227578dfffda61e1fa4d04b7d25
        /// 修改货架
        /// 039f3e95db2a684c7b74365531eb6044
        /// 25fcf4a155410a35bb92f6672225e602调用接口凭证8bb7487ae6a16a43571bc14c7fcf93c2
        /// 18af6669f7e4701ac535d27c6118cd21货架Id8bb7487ae6a16a43571bc14c7fcf93c2
        /// b2881503b6a28eed702d58a26849bd49货架招牌图片Url8bb7487ae6a16a43571bc14c7fcf93c2
        /// cfaaf849108afdde508c8f25d20a829d货架名称8bb7487ae6a16a43571bc14c7fcf93c2
        /// a25ff584bb26e7d068942c311182ca35货架控件1,2,3,4,5类型的集合8bb7487ae6a16a43571bc14c7fcf93c2
        /// 2363942ed0d6cd3e85bae1dffa568116f7735d9f6a7af371769ab5c16d23b2f3
        public CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, Listbc0c52a705fd36dd19ae61d854c297ba 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);
        }

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

由于货架管理的对象和接口定义比较复杂一些,一定需要进行反复的测试才能正式使用,如果不注意有可能你定义的实体类,获取不到某个字段信息。

我为了方便,创建了一个Winform项目,分别对各个接口进行测试。

C#开发微信门户及应用微信小店货架信息管理

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

private void btnShelf_Click(object sender, EventArgs e)
        {
            IMerchantApi api = new MerchantApi();
            List725d0c1cf9a714cdb3bbd9c160079cc9 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);
            Listbc0c52a705fd36dd19ae61d854c297ba controlList = new Listbc0c52a705fd36dd19ae61d854c297ba(){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 Listbc0c52a705fd36dd19ae61d854c297ba(){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#开发微信门户及应用微信小店货架信息管理

 

更多C#开发微信门户及应用微信小店货架信息管理相关文章请关注PHP中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中