mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-16 16:50:43 +08:00
feat(wxapi): 新增视频号小店商品限时抢购相关接口
This commit is contained in:
parent
8c970b5076
commit
cdd2ca258f
@ -117,8 +117,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Merchant
|
||||
#region Merchant/FreightTemplate
|
||||
#region ECMerchant
|
||||
#region ECMerchant/FreightTemplate
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/merchant/getfreighttemplatelist 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/deliverycompanylist_get.html </para>
|
||||
@ -200,7 +200,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Merchant/Address
|
||||
#region ECMerchant/Address
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/merchant/address/list 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/merchant/address/list.html </para>
|
||||
@ -303,7 +303,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Product
|
||||
#region ECProduct
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/add 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/add.html </para>
|
||||
@ -483,10 +483,92 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductStockUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
#region ECProduct/LimitedDiscountTask
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/limiteddiscounttask/add 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/add.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductLimitedDiscountTaskAddResponse> 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<Models.ChannelsECProductLimitedDiscountTaskAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/list_get.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductLimitedDiscountTaskListGetResponse> 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<Models.ChannelsECProductLimitedDiscountTaskListGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/limiteddiscounttask/stop 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/stop.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductLimitedDiscountTaskStopResponse> 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<Models.ChannelsECProductLimitedDiscountTaskStopResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/limiteddiscounttask/delete 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/limiteddiscounttask/delete.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductLimitedDiscountTaskDeleteResponse> 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<Models.ChannelsECProductLimitedDiscountTaskDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Order
|
||||
#region Order/Delivery
|
||||
#region ECOrder
|
||||
#region ECOrder/Delivery
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/order/deliverycompanylist/get 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/deliverycompanylist_get.html </para>
|
||||
|
@ -0,0 +1,65 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/add 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskAddRequest : WechatApiRequest, IInferable<ChannelsECProductLimitedDiscountTaskAddRequest, ChannelsECProductLimitedDiscountTaskAddResponse>
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class SKU
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sku_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
|
||||
public long SKUId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购价格(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sale_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
|
||||
public int SalePrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购库存。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sale_stock")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sale_stock")]
|
||||
public int SaleStock { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
public long ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务开始时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("start_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
|
||||
public long StartTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务开始时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("end_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
|
||||
public long EndTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_discount_skus")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_discount_skus")]
|
||||
public IList<Types.SKU> SKUList { get; set; } = new List<Types.SKU>();
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/add 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskAddResponse : WechatApiResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务 ID。
|
||||
/// </summary>
|
||||
[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; }
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/delete 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskDeleteRequest : WechatApiRequest, IInferable<ChannelsECProductLimitedDiscountTaskDeleteRequest, ChannelsECProductLimitedDiscountTaskDeleteResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("task_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("task_id")]
|
||||
public long TaskId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/delete 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskDeleteResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskListGetRequest : WechatApiRequest, IInferable<ChannelsECProductLimitedDiscountTaskListGetRequest, ChannelsECProductLimitedDiscountTaskListGetResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置指定抢购任务状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public int? Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置翻页标记。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("next_key")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
|
||||
public string? Cursor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置分页每页数量。
|
||||
/// <para>默认值:10</para>
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("page_size")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
|
||||
public int Limit { get; set; } = 10;
|
||||
}
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/list/get 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskListGetResponse : WechatApiResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class LimitedDiscountTask
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class SKU : ProductLimitedDiscountAddRequest.Types.SKU
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务 ID。
|
||||
/// </summary>
|
||||
[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; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[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; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务开始时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("start_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
|
||||
public long StartTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务开始时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("end_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
|
||||
public long EndTimestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_discount_skus")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_discount_skus")]
|
||||
public Types.SKU[] SKUList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置创建时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("create_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
|
||||
public long CreateTimestamp { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_discount_tasks")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_discount_tasks")]
|
||||
public Types.LimitedDiscountTask[] LimitedDiscountTaskList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置翻页标记。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("next_key")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
|
||||
public string? NextCursor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_num")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
|
||||
public int TotalCount { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/stop 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskStopRequest : WechatApiRequest, IInferable<ChannelsECProductLimitedDiscountTaskStopRequest, ChannelsECProductLimitedDiscountTaskStopResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置抢购任务 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("task_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("task_id")]
|
||||
public long TaskId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/limiteddiscounttask/stop 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductLimitedDiscountTaskStopResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"task_id": "12345678"
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"task_id": "123456789"
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"status": 0,
|
||||
"page_size": 10,
|
||||
"next_key": "THE_NEXT_KEY"
|
||||
}
|
@ -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
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"task_id": "123456789"
|
||||
}
|
Loading…
Reference in New Issue
Block a user