Heim  >  Artikel  >  WeChat-Applet  >  C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

高洛峰
高洛峰Original
2017-03-01 10:43:482002Durchsuche

1. Einführung in die WeChat-Ladenregale

Im Hintergrund des offiziellen WeChat-Kontos können Regalinformationen verwaltet werden, und die Benutzeroberfläche sieht wie folgt aus. Das Konzept eines Regals besteht darin, den Kunden Produkte in Kategorien anzuzeigen. Ein Regal ähnelt einer gut gestalteten Vitrine. Wir können verschiedene Regale definieren und dann verschiedene URLs veröffentlichen.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Darüber hinaus erstellen wir Regale im Allgemeinen auf der Grundlage der Regalvorlagenbibliothek. Die Regalvorlage ermöglicht uns den schnellen Aufbau eines Regals und bietet eine visuelle Referenzschnittstelle ist unten dargestellt.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

2. Entwicklungsmodell der Regalverwaltung

Für die Entwicklung von WeChat-Filialen mithilfe der API, der Regalverwaltungsschnittstelle von WeChat speichert. Es ähnelt einem regulären Modul und verfügt über die folgenden funktionalen Vorgänge.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Obwohl es dem vorherigen Objektmodell ähnelt, sind die Regalinformationen sehr komplex. Wenn Sie sie also basierend auf Json-Daten in einem Entitätsobjekt wiederherstellen müssen, benötigen Sie Um es zu wiederholen. Überlegen Sie es sich genau, sonst ist es leicht, Fehler zu modellieren.

Entspricht der Regalvorlage der WeChat-Store-Management-Schnittstelle. Die Objektinformationen des Regals umfassen 5 verschiedene Steuerungsmodelle, die teilweise kombiniert verwendet werden können.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Die Modelldarstellung mehrerer Regale ist unten dargestellt.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im LadenC#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im LadenC#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Durch die oben genannten 5 Steuerungsmodelle können wir sie sehen repräsentieren jeweils unterschiedliche Gestaltungseffekte und können in Kombination auf den Regalen eingesetzt werden.

3. Objektmodellierung von Regalinformationen

Gemäß der Schnittstellenbeschreibung des WeChat-Shops sind die von uns schließlich definierten Regalentitätsobjektinformationen sehr umfangreich und flexibel im Inhalt.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Anhand der API-Beschreibung des WeChat-Shops können wir erkennen, dass die JSON-Daten der Regalinformationen sehr komplex sind und die spezifische Definition wie folgt lautet.

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

Wir haben mehrere Regalkontrollobjekte basierend auf der Definition von JSON-Daten definiert. Ihre Beziehung ist wie folgt.

C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

Wir können Entitätsobjekte basierend auf JSON-Daten modellieren. Anschließend können wir mit diesen Objekten die relevanten Betriebsschnittstellen der Regale weiter definieren. Die Schnittstellendefinition lautet wie folgt.

#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#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

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

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#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden

 

更多C#-Entwicklung des WeChat-Portals und Anwendung des WeChat-Regalinformationsmanagements im Laden相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn