diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs index d87b453c..46f353ac 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs @@ -117,8 +117,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion - #region Merchant - #region Merchant/FreightTemplate + #region ECMerchant + #region ECMerchant/FreightTemplate /// /// 异步调用 [POST] /channels/ec/merchant/getfreighttemplatelist 接口。 /// REF: https://developers.weixin.qq.com/doc/channels/API/order/deliverycompanylist_get.html @@ -200,7 +200,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion - #region Merchant/Address + #region ECMerchant/Address /// /// 异步调用 [POST] /channels/ec/merchant/address/list 接口。 /// REF: https://developers.weixin.qq.com/doc/channels/API/merchant/address/list.html @@ -303,7 +303,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api #endregion #endregion - #region Product + #region ECProduct /// /// 异步调用 [POST] /channels/ec/product/add 接口。 /// REF: https://developers.weixin.qq.com/doc/channels/API/product/add.html @@ -483,10 +483,92 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + #region ECProduct/LimitedDiscountTask + /// + /// 异步调用 [POST] /channels/ec/product/limiteddiscounttask/add 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/add.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECProductLimitedDiscountTaskAddAsync(this WechatApiClient client, Models.ChannelsECProductLimitedDiscountTaskAddRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "limiteddiscounttask", "add") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/list_get.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECProductLimitedDiscountTaskListGetAsync(this WechatApiClient client, Models.ChannelsECProductLimitedDiscountTaskListGetRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "limiteddiscounttask", "list", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/product/limiteddiscounttask/stop 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/stop.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECProductLimitedDiscountTaskStopAsync(this WechatApiClient client, Models.ChannelsECProductLimitedDiscountTaskStopRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "limiteddiscounttask", "stop") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/product/limiteddiscounttask/delete 接口。 + /// REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/delete.html + /// + /// + /// + /// + /// + public static async Task ExecuteChannelsECProductLimitedDiscountTaskDeleteAsync(this WechatApiClient client, Models.ChannelsECProductLimitedDiscountTaskDeleteRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "limiteddiscounttask", "delete") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion #endregion - #region Order - #region Order/Delivery + #region ECOrder + #region ECOrder/Delivery /// /// 异步调用 [POST] /channels/ec/order/deliverycompanylist/get 接口。 /// REF: https://developers.weixin.qq.com/doc/channels/API/order/deliverycompanylist_get.html diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.cs new file mode 100644 index 00000000..81e8fd6f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.cs @@ -0,0 +1,65 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/add 接口的请求。 + /// + public class ChannelsECProductLimitedDiscountTaskAddRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class SKU + { + /// + /// 获取或设置 SKU ID。 + /// + [Newtonsoft.Json.JsonProperty("sku_id")] + [System.Text.Json.Serialization.JsonPropertyName("sku_id")] + public long SKUId { get; set; } + + /// + /// 获取或设置抢购价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("sale_price")] + [System.Text.Json.Serialization.JsonPropertyName("sale_price")] + public int SalePrice { get; set; } + + /// + /// 获取或设置抢购库存。 + /// + [Newtonsoft.Json.JsonProperty("sale_stock")] + [System.Text.Json.Serialization.JsonPropertyName("sale_stock")] + public int SaleStock { get; set; } + } + } + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public long ProductId { get; set; } + + /// + /// 获取或设置抢购任务开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long StartTimestamp { get; set; } + + /// + /// 获取或设置抢购任务开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置 SKU 列表。 + /// + [Newtonsoft.Json.JsonProperty("limited_discount_skus")] + [System.Text.Json.Serialization.JsonPropertyName("limited_discount_skus")] + public IList SKUList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.cs new file mode 100644 index 00000000..95639017 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.cs @@ -0,0 +1,16 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/add 接口的响应。 + /// + public class ChannelsECProductLimitedDiscountTaskAddResponse : WechatApiResponse + { + /// + /// 获取或设置抢购任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long TaskId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.cs new file mode 100644 index 00000000..0d105f84 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/delete 接口的请求。 + /// + public class ChannelsECProductLimitedDiscountTaskDeleteRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置抢购任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public long TaskId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteResponse.cs new file mode 100644 index 00000000..0c43badc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/delete 接口的响应。 + /// + public class ChannelsECProductLimitedDiscountTaskDeleteResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.cs new file mode 100644 index 00000000..59c84000 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.cs @@ -0,0 +1,30 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口的请求。 + /// + public class ChannelsECProductLimitedDiscountTaskListGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置指定抢购任务状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int? Status { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_key")] + [System.Text.Json.Serialization.JsonPropertyName("next_key")] + public string? Cursor { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.cs new file mode 100644 index 00000000..b6703662 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.cs @@ -0,0 +1,93 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口的响应。 + /// + public class ChannelsECProductLimitedDiscountTaskListGetResponse : WechatApiResponse + { + public static class Types + { + public class LimitedDiscountTask + { + public static class Types + { + public class SKU : ProductLimitedDiscountAddRequest.Types.SKU + { + } + } + + /// + /// 获取或设置抢购任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long TaskId { get; set; } + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long ProductId { get; set; } + + /// + /// 获取或设置抢购任务开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long StartTimestamp { get; set; } + + /// + /// 获取或设置抢购任务开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置 SKU 列表。 + /// + [Newtonsoft.Json.JsonProperty("limited_discount_skus")] + [System.Text.Json.Serialization.JsonPropertyName("limited_discount_skus")] + public Types.SKU[] SKUList { get; set; } = default!; + + /// + /// 获取或设置抢购任务状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + } + } + + /// + /// 获取或设置抢购任务列表。 + /// + [Newtonsoft.Json.JsonProperty("limited_discount_tasks")] + [System.Text.Json.Serialization.JsonPropertyName("limited_discount_tasks")] + public Types.LimitedDiscountTask[] LimitedDiscountTaskList { get; set; } = default!; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_key")] + [System.Text.Json.Serialization.JsonPropertyName("next_key")] + public string? NextCursor { get; set; } + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.cs new file mode 100644 index 00000000..36afc9ea --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/stop 接口的请求。 + /// + public class ChannelsECProductLimitedDiscountTaskStopRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置抢购任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public long TaskId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopResponse.cs new file mode 100644 index 00000000..17a75f20 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/product/limiteddiscounttask/stop 接口的响应。 + /// + public class ChannelsECProductLimitedDiscountTaskStopResponse : WechatApiResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.json new file mode 100644 index 00000000..93448264 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddRequest.json @@ -0,0 +1,17 @@ +{ + "product_id": "1234567001", + "start_time": 1614863822, + "end_time": 1614873822, + "limited_discount_skus": [ + { + "sku_id": "12345678901", + "sale_price": 2888, + "sale_stock": 3 + }, + { + "sku_id": "12345678902", + "sale_price": 2600, + "sale_stock": 50 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.json new file mode 100644 index 00000000..35cf5ef1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskAddResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "task_id": "12345678" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.json new file mode 100644 index 00000000..61a380f3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskDeleteRequest.json @@ -0,0 +1,3 @@ +{ + "task_id": "123456789" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.json new file mode 100644 index 00000000..822c8f41 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetRequest.json @@ -0,0 +1,5 @@ +{ + "status": 0, + "page_size": 10, + "next_key": "THE_NEXT_KEY" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.json new file mode 100644 index 00000000..d9a449cf --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskListGetResponse.json @@ -0,0 +1,43 @@ +{ + "errcode": 0, + "errmsg": "ok", + "limited_discount_tasks": [ + { + "task_id": "12345677", + "product_id": "12345678001", + "status": 0, + "create_time": 1660047026, + "start_time": 1660046940, + "end_time": 1662293399, + "limited_discount_skus": [ + { + "sku_id": "1234567890001", + "sale_price": 200, + "sale_stock": 10 + }, + { + "sku_id": "1234567890002", + "sale_price": 300, + "sale_stock": 10 + } + ] + }, + { + "task_id": "12345688", + "product_id": "12345678002", + "status": 0, + "create_time": 1659516539, + "start_time": 1659516420, + "end_time": 1662022079, + "limited_discount_skus": [ + { + "sku_id": "12345678900013", + "sale_price": 20, + "sale_stock": 6 + } + ] + } + ], + "next_key": "THE_NEXT_KEY_NEW", + "total_num": 2 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.json new file mode 100644 index 00000000..61a380f3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/LimitedDiscountTask/ChannelsECProductLimitedDiscountTaskStopRequest.json @@ -0,0 +1,3 @@ +{ + "task_id": "123456789" +}