首页 > 学院 > 开发设计 > 正文

C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

2019-11-17 02:39:32
字体:
来源:转载
供稿:网友

C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

在上篇《C#开发微信门户及应用(22)-微信小店的开发和使用》里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用。微信小店的相关对象模型,基本上包括了常规的商品、商品分组、货架、库存、订单这些模型,还有商品分类,商品分类属性、商品分类SKU、快递邮寄模板、图片管理等功能。本文介绍的接口封装也就是基于这些内容进行的,并针对接口的实现进行测试和使用。

1、商品管理接口的定义

前面文章介绍了微信小店的对象模型,如下所示。

这个图形基本上覆盖了微信小店的相关对象,并介绍了它们之间的关系了。

我们从基础的商品信息管理入手,我们知道,商品接口包含了增加、修改、查询、删除等接口,如下所示。

商品信息是所有微店的基础,因此对它的管理操作,我们需要更加清晰和完善。

综上所述的功能,我们可以定义好微信商品的接口如下所示。

        #region 商品信息        /// <summary>        /// 创建商品        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="merchantJson">商品对象</param>        /// <returns></returns>        AddMerchantResult AddMerchant(string accessToken, MerchantJson merchantJson);        /// <summary>        /// 删除商品        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="PRoductId">商品ID</param>        /// <returns></returns>        CommonResult DeleteMerchant(string accessToken, string productId);        /// <summary>        /// 修改商品        /// product_id表示要更新的商品的ID,其他字段说明请参考增加商品接口。        /// 从未上架的商品所有信息均可修改,否则商品的名称(name)、商品分类(category)、商品属性(property)这三个字段不可修改。        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="merchantJson">修改商品的信息</param>        /// <returns></returns>        CommonResult UpdateMerchant(string accessToken, MerchantJson merchantJson);        /// <summary>        /// 根据ID查询商品信息,如果成功返回MerchantJson信息,否则返回null        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="productId">商品的Id</param>        /// <returns></returns>        MerchantJson GetMerchant(string accessToken, string productId);        /// <summary>        /// 获取指定状态的所有商品        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="status">商品状态(0-全部, 1-上架, 2-下架)</param>        /// <returns></returns>        List<MerchantJson> GetMerchantByStatus(string accessToken, int status);        /// <summary>        /// 商品上下架        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="status">商品上下架标识(0-下架, 1-上架)</param>        /// <returns></returns>        CommonResult UpdateMerchantStatus(string accessToken, string productId, int status);         #endregion

当然,微信的商品还包含了分类、分类属性、分类SKU的基础管理,因此商品管理还需要增加这个内容

它们的功能接口定义如下所示。通过下面的接口,我们就很容易实现商品分类(不是商品分组)、SKU信息、和分类属性等信息的获取操作了。

        #region 商品分类及属性        /// <summary>        /// 获取指定分类的所有子分类        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="cateId">大分类ID(根节点分类id为1)</param>        /// <returns></returns>        List<SubCategory> GetSub(string accessToken, int cate_id);        /// <summary>        /// 获取指定子分类的所有SKU        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="cateId">商品子分类ID</param>        /// <returns></returns>        List<SubCategorySku> GetSku(string accessToken, int cate_id);        /// <summary>        /// 获取指定分类的所有属性        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="cateId">分类ID</param>        /// <returns></returns>        List<SubCategoryProperty> GetProperty(string accessToken, int cate_id);         #endregion

2、商品管理接口的实现

上面的接口定义了对应商品的接口。

对于接口的实现,我们一般都是根据官方网站的接口说明,提交到那个URL,并且是POST那些数据,然后整理成一个常规的处理方式,获得结果并转换为对应的对象即可,如添加商品操作的实现代码如下所示。

        /// <summary>        /// 创建商品        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="merchantJson">商品对象</param>        /// <returns></returns>        public AddMerchantResult AddMerchant(string accessToken, MerchantJson merchantJson)        {            var url = string.Format("https://api.weixin.QQ.com/merchant/create?access_token={0}", accessToken);            string postData = merchantJson.ToJson();            return JsonHelper<AddMerchantResult>.ConvertJson(url, postData);        }

而返回结果,这是定义一个对象来获得添加商品的ID等内容,如下所示。

    /// <summary>    /// 创建商品信息的返回结果    /// </summary>    public class AddMerchantResult : ErrorJsonResult    {        /// <summary>        /// 商品ID        /// </summary>        public string product_id { get; set; }    }

而基类这是常规的响应内容

    /// <summary>    /// 微信返回Json结果的错误数据    /// </summary>    public class ErrorJsonResult     {        /// <summary>        /// 返回代码        /// </summary>        public ReturnCode errcode { get; set; }        /// <summary>        /// 错误消息        /// </summary>        public string errmsg { get; set; }    }

通过这些对象的定义,添加商品后,我们就知道操作是否成功,如果添加成功,返回了一个刚刚创建的ID给我们使用,我们可以进行查询具体的商品信息或者进行修改、删除等操作的。

而对商品信息的修改或者删除的操作,都是返回一个是否成功的记录就可以了,因此我们定义了一个统一的回应对象CommonResult。商品修改、删除的接口实现代码如下所示。

由于代码我都进行高度的完善和整理,对于各种处理的代码都相对比较容易理解的了。

        /// <summary>        /// 删除商品        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="productId">商品ID</param>        /// <returns></returns>        public CommonResult DeleteMerchant(string accessToken, string productId)        {            var url = string.Format("https://api.weixin.qq.com/merchant/del?access_token={0}", accessToken);            var data = new            {                product_id = productId            };            string postData = data.ToJson();            return Helper.GetExecuteResult(url, postData);        }        /// <summary>        /// 修改商品        /// product_id表示要更新的商品的ID,其他字段说明请参考增加商品接口。        /// 从未上架的商品所有信息均可修改,否则商品的名称(name)、商品分类(category)、商品属性(property)这三个字段不可修改。        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="merchantJson">修改商品的信息</param>        /// <returns></returns>        public CommonResult UpdateMerchant(string accessToken, MerchantJson merchantJson)        {            var url = string.Format("https://api.weixin.qq.com/merchant/update?access_token={0}", accessToken);            string postData = merchantJson.ToJson();            return Helper.GetExecuteResult(url, postData);        }

为了获取商品的详细信息,我们需要定义一个商品的实体对象,以便我们把获取到的信息转换为实体类信息,方便使用和处理。

商品的信息,包含了不少细小定义的类,他们构成了商品的各个部分的内容,主体的实体类信息如下所示。

定义好相对比较复杂的商品信息实体后,我们就可以通过对象进行处理了。

获取商品详细信息的实现代码如下所示。

        /// <summary>        /// 根据ID查询商品信息,如果成功返回MerchantJson信息,否则返回null        /// </summary>        /// <param name="accessToken">调用接口凭证</param>        /// <param name="productId">商品的Id</param>        /// <returns></returns>        public MerchantJson GetMerchant(string accessToken, string productId)        {            var url = string.Format("https://api.weixin.qq.com/merchant/get?access_token={0}", accessToken);            var data = new            {                product_id = productId            };            string postData = data.ToJson();            MerchantJson merchant = null;            GetMerchantResult result = JsonHelper<GetMerchantResult>.ConvertJson(url, postData);            if (result != null)            {                merchant = result.product_info;            }            return merchant;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表