这篇文章主要介绍了C#开发微信之微信小店商品管理接口封装和测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联公司专注于类乌齐网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供类乌齐营销型网站建设,类乌齐网站制作、类乌齐网页设计、类乌齐网站官网定制、成都小程序开发服务,打造类乌齐网络公司原创品牌,更为您提供类乌齐网站排名全网营销落地服务。
1、商品管理接口的定义
前面文章介绍了微信小店的对象模型,如下所示。

这个图形基本上覆盖了微信小店的相关对象,并介绍了它们之间的关系了。
我们从基础的商品信息管理入手,我们知道,商品接口包含了增加、修改、查询、删除等接口,如下所示。

商品信息是所有微店的基础,因此对它的管理操作,我们需要更加清晰和完善。
综上所述的功能,我们可以定义好微信商品的接口如下所示。
#region 商品信息 ////// 创建商品 /// /// 调用接口凭证 /// 商品对象 ///AddMerchantResult AddMerchant(string accessToken, MerchantJson merchantJson); /// /// 删除商品 /// /// 调用接口凭证 /// 商品ID ///CommonResult DeleteMerchant(string accessToken, string productId); /// /// 修改商品 /// product_id表示要更新的商品的ID,其他字段说明请参考增加商品接口。 /// 从未上架的商品所有信息均可修改,否则商品的名称(name)、商品分类(category)、商品属性(property)这三个字段不可修改。 /// /// 调用接口凭证 /// 修改商品的信息 ///CommonResult UpdateMerchant(string accessToken, MerchantJson merchantJson); /// /// 根据ID查询商品信息,如果成功返回MerchantJson信息,否则返回null /// /// 调用接口凭证 /// 商品的Id ///MerchantJson GetMerchant(string accessToken, string productId); /// /// 获取指定状态的所有商品 /// /// 调用接口凭证 /// 商品状态(0-全部, 1-上架, 2-下架) ///List GetMerchantByStatus(string accessToken, int status); /// /// 商品上下架 /// /// 调用接口凭证 /// 商品上下架标识(0-下架, 1-上架) ///CommonResult UpdateMerchantStatus(string accessToken, string productId, int status); #endregion 
当然,微信的商品还包含了分类、分类属性、分类SKU的基础管理,因此商品管理还需要增加这个内容

它们的功能接口定义如下所示。通过下面的接口,我们就很容易实现商品分类(不是商品分组)、SKU信息、和分类属性等信息的获取操作了。
#region 商品分类及属性 ////// 获取指定分类的所有子分类 /// /// 调用接口凭证 /// 大分类ID(根节点分类id为1) ///List GetSub(string accessToken, int cate_id); /// /// 获取指定子分类的所有SKU /// /// 调用接口凭证 /// 商品子分类ID ///List GetSku(string accessToken, int cate_id); /// /// 获取指定分类的所有属性 /// /// 调用接口凭证 /// 分类ID ///List GetProperty(string accessToken, int cate_id); #endregion 
2、商品管理接口的实现
上面的接口定义了对应商品的接口。
对于接口的实现,我们一般都是根据官方网站的接口说明,提交到那个URL,并且是POST那些数据,然后整理成一个常规的处理方式,获得结果并转换为对应的对象即可,如添加商品操作的实现代码如下所示。
////// 创建商品 /// /// 调用接口凭证 /// 商品对象 ///public AddMerchantResult AddMerchant(string accessToken, MerchantJson merchantJson) { var url = string.Format("http://www.php.cn/{0}", accessToken); string postData = merchantJson.ToJson(); return JsonHelper .ConvertJson(url, postData); } 
而返回结果,这是定义一个对象来获得添加商品的ID等内容,如下所示。
////// 创建商品信息的返回结果 /// public class AddMerchantResult : ErrorJsonResult { ////// 商品ID /// public string product_id { get; set; } }
而基类这是常规的响应内容
////// 微信返回Json结果的错误数据 /// public class ErrorJsonResult { ////// 返回代码 /// public ReturnCode errcode { get; set; } ////// 错误消息 /// public string errmsg { get; set; } }
通过这些对象的定义,添加商品后,我们就知道操作是否成功,如果添加成功,返回了一个刚刚创建的ID给我们使用,我们可以进行查询具体的商品信息或者进行修改、删除等操作的。
而对商品信息的修改或者删除的操作,都是返回一个是否成功的记录就可以了,因此我们定义了一个统一的回应对象CommonResult。商品修改、删除的接口实现代码如下所示。
由于代码我都进行高度的完善和整理,对于各种处理的代码都相对比较容易理解的了。
////// 删除商品 /// /// 调用接口凭证 /// 商品ID ///public CommonResult DeleteMerchant(string accessToken, string productId) { var url = string.Format("http://www.php.cn/{0}", accessToken); var data = new { product_id = productId }; string postData = data.ToJson(); return Helper.GetExecuteResult(url, postData); } /// /// 修改商品 /// product_id表示要更新的商品的ID,其他字段说明请参考增加商品接口。 /// 从未上架的商品所有信息均可修改,否则商品的名称(name)、商品分类(category)、商品属性(property)这三个字段不可修改。 /// /// 调用接口凭证 /// 修改商品的信息 ///public CommonResult UpdateMerchant(string accessToken, MerchantJson merchantJson) { var url = string.Format("http://www.php.cn/{0}", accessToken); string postData = merchantJson.ToJson(); return Helper.GetExecuteResult(url, postData); } 
为了获取商品的详细信息,我们需要定义一个商品的实体对象,以便我们把获取到的信息转换为实体类信息,方便使用和处理。
商品的信息,包含了不少细小定义的类,他们构成了商品的各个部分的内容,主体的实体类信息如下所示。

定义好相对比较复杂的商品信息实体后,我们就可以通过对象进行处理了。
获取商品详细信息的实现代码如下所示。
////// 根据ID查询商品信息,如果成功返回MerchantJson信息,否则返回null /// /// 调用接口凭证 /// 商品的Id ///public MerchantJson GetMerchant(string accessToken, string productId) { var url = string.Format("http://www.php.cn/{0}", accessToken); var data = new { product_id = productId }; string postData = data.ToJson(); MerchantJson merchant = null; GetMerchantResult result = JsonHelper .ConvertJson(url, postData); if (result != null) { merchant = result.product_info; } return merchant; } 
虽然商品的实体信息很复杂,但是一旦我们定义好,我们就很容易对结果进行转换并处理了,上面的代码并不是很难理解,主要就是提交数据后,对数据进行转换而已。
当然,我们还可以获取不同状态的商品列表内容,如下代码所示。
////// 获取指定状态的所有商品 /// /// 调用接口凭证 /// 商品状态(0-全部, 1-上架, 2-下架) ///public List GetMerchantByStatus(string accessToken, int status) { var url = string.Format("http://www.php.cn/{0}", accessToken); var data = new { status = status }; string postData = data.ToJson(); List list = new List (); GetMerchantByStatus result = JsonHelper .ConvertJson(url, postData); if (result != null) { list = result.products_info; } return list; } 
我们添加商品的时候,商品的分类信息、分类属性、分类SKU信息也都是很重要的内容,我们需要指定对应商品分类才能添加到微信小店里面。
获取商品分类的操作实现代码如下所示。
////// 获取指定分类的所有子分类 /// /// 调用接口凭证 /// 大分类ID(根节点分类id为1) ///public List GetSub(string accessToken, int cate_id) { var url = string.Format("http://www.php.cn/{0}", accessToken); var data = new { cate_id = cate_id }; string postData = data.ToJson(); List list = new List (); GetSubResult result = JsonHelper .ConvertJson(url, postData); if(result != null) { list = result.cate_list; } return list; } 
3、商品管理接口的测试
为了验证我们开发的接口,我们需要增加一个测试项目,方便对我们编写的API进行测试,测试完全成功后,我们才能正式在项目中使用。
我为了方便,创建了一个Winform项目,分别对各个接口进行测试。

本篇主要介绍商品管理方面的接口,因此下面主要介绍其中商品管理部分的接口测试代码,以及对应的结果。
其中商品常规管理的接口测试代码如下所示。
        private void btnMerchant_Click(object sender, EventArgs e)
        {            //商品管理
            IMerchantApi api = new MerchantApi();            //获取所有商品信息
            Console.WriteLine("获取所有商品信息");
            List list = api.GetMerchantByStatus(token, 0);            foreach(MerchantJson json in list)
            {
                Console.WriteLine(json.ToJson());
                Console.WriteLine();
            }            //更新商品状态
            Console.WriteLine("更新商品状态");            foreach (MerchantJson json in list)
            {
                CommonResult result = api.UpdateMerchantStatus(token, json.product_id, 1);
                Console.WriteLine("商品ID:{0},商品名称:{1}, 操作:{2}", 
                    json.product_id, json.product_base.name, result.Success ? "成功" : "失败");
            }
            Thread.Sleep(1000);            //根据商品ID获取商品信息
            Console.WriteLine("根据商品ID获取商品信息");            foreach (MerchantJson json in list)
            {
                MerchantJson getJson = api.GetMerchant(token, json.product_id);                if(json != null)
                {
                    Console.WriteLine("商品ID:{0},商品名称:{1}", getJson.product_id, getJson.product_base.name);
                }
            }
        } 测试后结果如下所示(就是返回我微店铺里面的商品信息),一切正常。
返回的商品Json数据如下所示:


{  "product_id": "pSiLnt6FYDuFtrRRPMlkdKbye-rE",  "product_base": {    "category_id": [      "537103312"
    ],    "property": [
      {        "id": "类型",        "vid": "软件产品设计"
      }
    ],    "name": "代码生成工具Database2Sharp",    "sku_info": [],    "main_img": "http://www.php.cn/",    "img": [      "http://www.php.cn/"
    ],    "detail": [],    "buy_limit": 0,    "detail_html": ""
  },  "sku_list": [
    {      "sku_id": "",      "ori_price": 100000,      "price": 50000,      "icon_url": "",      "quantity": 1100,      "product_code": ""
    }
  ],  "attrext": {    "location": {      "country": "中国",      "province": "广东",      "city": "广州",      "address": ""
    },    "isPostFree": 1,    "isHasReceipt": 0,    "isUnderGuaranty": 0,    "isSupportReplace": 0
  },  "delivery_info": {    "delivery_type": 0,    "template_id": 175807970,    "express": [
      {        "id": 10000027,        "price": 0
      },
      {        "id": 10000028,        "price": 0
      },
      {        "id": 10000029,        "price": 0
      }
    ]
  },  "status": 1}View Code
测试的部分结果输出如下所示。

另外,“商品维护管理”的功能测试主要就是测试商品的增加、修改、删除操作,具体代码如下所示。
        private void btnMerchantEdit_Click(object sender, EventArgs e)
        {
            IMerchantApi api = new MerchantApi();            
            string img1 = "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0";            
            string img2 = "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ul1UcLcwxrFdwTKYhH9Q5YZoCfX4Ncx655ZK6ibnlibCCErbKQtReySaVA/0n/";            
            string img3 = "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0n/";            
            //商品增删改处理
            MerchantJson merchant = new MerchantJson();
            merchant.product_base = new Merchant_base();
            merchant.product_base.name = "测试产品";
            merchant.product_base.category_id.Add("537074298");
            merchant.product_base.img = new List() { img1, img2, img3 };
            merchant.product_base.main_img = img1;
            merchant.product_base.detail.AddRange(new List() {                    new MerchantDetail()
                    {
                        text = "test first"
                    },                    new MerchantDetail()
                    {
                        img = img2
                    }, new MerchantDetail()
                    {
                        text = "test again"
                    }
            });
            merchant.product_base.property.AddRange(new List(){                new MerchantProperty
                {
                    id= "1075741879",
                    vid="1079749967"
                },                new MerchantProperty{
                    id= "1075754127",
                    vid= "1079795198"
                },                new MerchantProperty(){
                    id= "1075777334",
                    vid= "1079837440"
                }
            });
            merchant.product_base.sku_info.AddRange(new List(){                new MerchantSku{
                    id=  "1075741873",
                    vid = new List() {                        "1079742386",                        "1079742363"
                    }
                }
            });
            merchant.product_base.buy_limit = 10;            //merchant.product_base.detail_html = "![]()
test
![]()
test again
";
            merchant.sku_list.AddRange(new List()
            {                new MerchantSku_list(){
                sku_id="1075741873:1079742386",
                price=30,
                icon_url="http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
                quantity=800,
                product_code="testing",
                ori_price=9000000
                },                new MerchantSku_list(){
                    sku_id="1075741873:1079742363",
                    price=30,
                    icon_url="http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0",
                    quantity=800,
                    product_code="testingtesting",
                    ori_price=9000000
                }
            });
            merchant.attrext = new MerchantAttrext()
            {
                location = new MerchantLocation()
                {
                    country = "中国",
                    province = "广东省",
                    city = "广州市",
                    address = "T.I.T创意园"
                },
                isPostFree = 0,
                isHasReceipt = 1,
                isUnderGuaranty = 0,
                isSupportReplace = 0
            };
            merchant.delivery_info = new MerchantDelivery()
            {
                delivery_type = 0,
                template_id = 0,
                express = new List(){                new MerchantExpress() {
                    id=10000027, 
                    price=100
                }, 
                new MerchantExpress(){
                    id=10000028, 
                    price=100
                }, 
                new MerchantExpress(){
                    id=10000029, 
                    price=100
                }}
            };
            Console.WriteLine(merchant.ToJson());
            AddMerchantResult result = api.AddMerchant(token, merchant);
            Console.WriteLine("添加商品:{0}", result.product_id);            if (!string.IsNullOrEmpty(result.product_id))
            {                //更新商品
                merchant.product_id = result.product_id;
                merchant.product_base.name = "测试产品22";
                CommonResult updateResult = api.UpdateMerchant(token, merchant);
                Console.WriteLine("更新商品:{0}", updateResult.Success ? "成功" : "失败");
                CommonResult deleteResult = api.DeleteMerchant(token, merchant.product_id);
                Console.WriteLine("删除商品:{0}", deleteResult.Success ? "成功" : "失败");
            }
        }       测试的输出结果如下所示(一切成功)。

感谢你能够认真阅读完这篇文章,希望小编分享的“C#开发微信之微信小店商品管理接口封装和测试的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
分享文章:C#开发微信之微信小店商品管理接口封装和测试的示例分析
文章链接:http://www.cqwzjz.cn/article/gdcdeo.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 