搜尋
首頁微信小程式微信開發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 货架管理

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

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

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

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

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

        #endregion</shelfjson></shelfcontrolbase></shelfcontrolbase>

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

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

/// <summary>
        /// 增加货架
        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <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>调用接口凭证
        /// <param>货架Id
        /// <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>调用接口凭证
        /// <param>货架Id
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <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);
        }</shelfcontrolbase></addshelfresult></shelfcontrolbase>

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

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

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

C#開發微信入口網站及應用微信小店貨架資訊管理

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

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 ? "成功" : "失败");
            }
        }</shelfcontrolbase></shelfcontrolbase></shelfcontrolbase></shelfjson>

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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器