diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
index c567718c..494e6e83 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
@@ -634,6 +634,56 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
#endregion
#endregion
+ #region ECB2C
+ #region ECB2C/Activity
+ ///
+ /// 异步调用 [POST] /channels/ec/b2c/activity/list/promoter/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECB2CActivityListPromoterGetAsync(this WechatApiClient client, Models.ChannelsECB2CActivityListPromoterGetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "b2c", "activity", "list", "promoter", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/b2c/activity/info/promoter/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECB2CActivityInfoPromoterGetAsync(this WechatApiClient client, Models.ChannelsECB2CActivityInfoPromoterGetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "b2c", "activity", "info", "promoter", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+ #endregion
+
#region ECBasics
///
/// 异步调用 [GET] /channels/ec/basics/info/get 接口。
@@ -5132,6 +5182,54 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
#endregion
#endregion
+ #region ECOrder/Present
+ ///
+ /// 异步调用 [POST] /channels/ec/order/presentlist/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECOrderPresentListGetAsync(this WechatApiClient client, Models.ChannelsECOrderPresentListGetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "presentlist", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/order/present/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECOrderPresentGetAsync(this WechatApiClient client, Models.ChannelsECOrderPresentGetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "present", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+
#region ECOrder/PresentOrder
///
/// 异步调用 [POST] /channels/ec/order/presentorder/create 接口。
@@ -5167,6 +5265,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public static async Task ExecuteChannelsECOrderPresentOrderListGetAsync(this WechatApiClient client, Models.ChannelsECOrderPresentOrderListGetRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
@@ -5190,6 +5289,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public static async Task ExecuteChannelsECOrderPresentOrderGetAsync(this WechatApiClient client, Models.ChannelsECOrderPresentOrderGetRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
@@ -5201,6 +5301,29 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+
+ ///
+ /// 异步调用 [POST] /channels/ec/order/presentorder/receiver/set 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECOrderPresentOrderReceiverSetAsync(this WechatApiClient client, Models.ChannelsECOrderPresentOrderReceiverSetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "presentorder", "receiver", "set")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
#endregion
#region ECOrder/PreshipmentChangeSKU
@@ -5273,6 +5396,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
+
+ #region ECOrder/ReceiverOrder
+ ///
+ /// 异步调用 [POST] /channels/ec/order/receiverorderlist/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECOrderReceiverOrderListGetAsync(this WechatApiClient client, Models.ChannelsECOrderReceiverOrderListGetRequest 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
+ .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "presentlist", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
#endregion
#region ECProduct
@@ -8604,7 +8752,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
-
+
#region ECWindow
///
/// 异步调用 [POST] /channels/ec/window/product/add 接口。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECAftersale/GuaranteeOrder/ChannelsECAftersaleSearchGuaranteeOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECAftersale/GuaranteeOrder/ChannelsECAftersaleSearchGuaranteeOrderResponse.cs
index c39d7756..e49272d9 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECAftersale/GuaranteeOrder/ChannelsECAftersaleSearchGuaranteeOrderResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECAftersale/GuaranteeOrder/ChannelsECAftersaleSearchGuaranteeOrderResponse.cs
@@ -13,6 +13,24 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
public class ProductInfo
{
+ ///
+ /// 获取或设置商品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.TextualNumberReadOnlyConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.TextualNumberReadOnlyConverter))]
+ public long? ProductId { get; set; }
+
+ ///
+ /// 获取或设置 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_id")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.TextualNumberReadOnlyConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_id")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.TextualNumberReadOnlyConverter))]
+ public long? SKUId { get; set; }
+
///
/// 获取或设置商品名称。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.cs
new file mode 100644
index 00000000..51a951f9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/b2c/activity/info/promoter/get 接口的请求。
+ ///
+ public class ChannelsECB2CActivityInfoPromoterGetRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_appid")]
+ public string ShopAppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置活动 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_id")]
+ public long ActivityId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.cs
new file mode 100644
index 00000000..beb9a665
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.cs
@@ -0,0 +1,183 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/b2c/activity/info/promoter/get 接口的响应。
+ ///
+ public class ChannelsECB2CActivityInfoPromoterGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Activity
+ {
+ public static class Types
+ {
+ public class ActivityInfo
+ {
+ public static class Types
+ {
+ public class BasicInfo
+ {
+ public static class Types
+ {
+ public class ShopInfo
+ {
+ ///
+ /// 获取或设置小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置小店名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("nickname")]
+ [System.Text.Json.Serialization.JsonPropertyName("nickname")]
+ public string Nickname { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置活动开始时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_start_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_start_time")]
+ public long ActivityStartTimestamp { get; set; }
+
+ ///
+ /// 获取或设置活动结束时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_end_time")]
+ public long ActivityEndTimestamp { get; set; }
+
+ ///
+ /// 获取或设置店铺信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_info")]
+ public Types.ShopInfo ShopInfo { get; set; } = default!;
+ }
+
+ public class PrizeInfo
+ {
+ public static class Types
+ {
+ public class ProductInfo
+ {
+ ///
+ /// 获取或设置商品 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("product_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_name")]
+ public string ProductName { get; set; } = default!;
+
+ ///
+ /// 获取或设置商品图片 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_img_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_img_url")]
+ public string ProductImageUrl { get; set; } = default!;
+
+ ///
+ /// 获取或设置 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long SKUId { get; set; }
+
+ ///
+ /// 获取或设置 SKU 名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_name")]
+ public string SKUName { get; set; } = default!;
+
+ ///
+ /// 获取或设置售卖单价(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("price")]
+ [System.Text.Json.Serialization.JsonPropertyName("price")]
+ public int Price { get; set; }
+
+ ///
+ /// 获取或设置活动总库存。
+ ///
+ [Newtonsoft.Json.JsonProperty("stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_num")]
+ public int Stock { get; set; }
+
+ ///
+ /// 获取或设置活动剩余库存。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_use_stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_use_stock_num")]
+ public int StockCanUsed { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置商品信息列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_info_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_info_list")]
+ public Types.ProductInfo[] ProductInfoList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置活动基础信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("basic_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("basic_info")]
+ public Types.BasicInfo BasicInfo { get; set; } = default!;
+
+ ///
+ /// 获取或设置活动礼物商品信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("prize_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("prize_info")]
+ public Types.PrizeInfo PrizeInfo { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置活动 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_id")]
+ public long ActivityId { get; set; }
+
+ ///
+ /// 获取或设置活动状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int Status { get; set; }
+
+ ///
+ /// 获取或设置活动信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("info")]
+ [System.Text.Json.Serialization.JsonPropertyName("info")]
+ public Types.ActivityInfo ActivityInfo { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置活动信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity")]
+ public Types.Activity Activity { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.cs
new file mode 100644
index 00000000..dbadcf91
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.cs
@@ -0,0 +1,37 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/b2c/activity/list/promoter/get 接口的请求。
+ ///
+ public class ChannelsECB2CActivityListPromoterGetRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_appid")]
+ public string? ShopAppId { get; set; }
+
+ ///
+ /// 获取或设置活动状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int? Status { get; set; }
+
+ ///
+ /// 获取或设置分页起始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int Offset { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ /// 默认值:100
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int Limit { get; set; } = 100;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.cs
new file mode 100644
index 00000000..e29394e8
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.cs
@@ -0,0 +1,57 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/b2c/activity/list/promoter/get 接口的响应。
+ ///
+ public class ChannelsECB2CActivityListPromoterGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Activity
+ {
+ ///
+ /// 获取或设置小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_appid")]
+ public string ShopAppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置小店名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_nickname")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_nickname")]
+ public string ShopName { get; set; } = default!;
+
+ ///
+ /// 获取或设置活动 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long ActivityId { get; set; }
+
+ ///
+ /// 获取或设置活动状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int Status { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置活动列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("list")]
+ [System.Text.Json.Serialization.JsonPropertyName("list")]
+ public Types.Activity[] ActivityList { get; set; } = default!;
+
+ ///
+ /// 获取或设置总数量。
+ ///
+ [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/ECOrder/Present/ChannelsECOrderPresentGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentGetRequest.cs
new file mode 100644
index 00000000..cd862bae
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentGetRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/present/get 接口的请求。
+ ///
+ public class ChannelsECOrderPresentGetRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置礼物订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_id")]
+ public string PresentOrderId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.cs
new file mode 100644
index 00000000..53fa28f2
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.cs
@@ -0,0 +1,138 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/present/get 接口的响应。
+ ///
+ public class ChannelsECOrderPresentGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class PresentOrder
+ {
+ public static class Types
+ {
+ public class PresentDetail
+ {
+ public static class Types
+ {
+ public class PriceInfo
+ {
+ ///
+ /// 获取或设置价格(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_price")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_price")]
+ public int Price { get; set; }
+ }
+
+ public class PayInfo
+ {
+ ///
+ /// 获取或设置支付时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("pay_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("pay_time")]
+ public long PayTimestamp { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置价格信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("price_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("price_info")]
+ public Types.PriceInfo? PriceInfo { get; set; }
+
+ ///
+ /// 获取或设置支付信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("pay_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("pay_info")]
+ public Types.PayInfo? PayInfo { get; set; }
+
+ ///
+ /// 获取或设置祝福语。
+ ///
+ [Newtonsoft.Json.JsonProperty("wishmessage")]
+ [System.Text.Json.Serialization.JsonPropertyName("wishmessage")]
+ public string? WishMessage { get; set; }
+ }
+
+ public class SubOrder
+ {
+ ///
+ /// 获取或设置子单订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_id")]
+ public string OrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置收礼者 OpenId。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string OpenId { get; set; } = default!;
+
+ ///
+ /// 获取或设置子单订单状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int Status { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置礼物订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_id")]
+ public string PresentOrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置是否付款。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_b2c_free_present")]
+ [System.Text.Json.Serialization.JsonPropertyName("is_b2c_free_present")]
+ public bool IsB2CFreePresent { get; set; }
+
+ ///
+ /// 获取或设置礼物详情。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_detail")]
+ public Types.PresentDetail PresentDetail { get; set; } = default!;
+
+ ///
+ /// 获取或设置子单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("sub_order_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("sub_order_list")]
+ public Types.SubOrder[] SubOrderList { get; set; } = default!;
+
+ ///
+ /// 获取或设置关联活动 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long? ActivityId { get; set; }
+
+ ///
+ /// 获取或设置创建时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("create_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("create_time")]
+ public long CreateTimestamp { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置礼物订单信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("present")]
+ [System.Text.Json.Serialization.JsonPropertyName("present")]
+ public Types.PresentOrder PresentOrder { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.cs
new file mode 100644
index 00000000..0e73e6e0
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.cs
@@ -0,0 +1,51 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/presentlist/get 接口的请求。
+ ///
+ public class ChannelsECOrderPresentListGetRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class TimeRange : ChannelsECOrderListGetRequest.Types.TimeRange
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置合作小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_appid")]
+ public string ShopAppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置创建订单时间范围。
+ ///
+ [Newtonsoft.Json.JsonProperty("create_time_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("create_time_range")]
+ public Types.TimeRange? CreateTimeRange { get; set; }
+
+ ///
+ /// 获取或设置更新订单时间范围。
+ ///
+ [Newtonsoft.Json.JsonProperty("update_time_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("update_time_range")]
+ public Types.TimeRange? UpdateTimeRange { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ /// 默认值:10
+ ///
+ [Newtonsoft.Json.JsonProperty("page_size")]
+ [System.Text.Json.Serialization.JsonPropertyName("page_size")]
+ public int Limit { get; set; } = 10;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? Cursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.cs
new file mode 100644
index 00000000..15b92d55
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.cs
@@ -0,0 +1,36 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/presentlist/get 接口的响应。
+ ///
+ public class ChannelsECOrderPresentListGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class PresentOrder
+ {
+ ///
+ /// 获取或设置礼物订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_id")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
+ public string PresentOrderId { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置礼物订单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_list")]
+ public Types.PresentOrder[] PresentOrderList { get; set; } = default!;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? NextCursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderCreateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderCreateRequest.cs
index fc74a1ca..74af6ab2 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderCreateRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderCreateRequest.cs
@@ -25,6 +25,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
}
}
+ ///
+ /// 获取或设置请求幂等 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("idempotent_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("idempotent_id")]
+ public string? IdempotentId { get; set; }
+
///
/// 获取或设置活动 ID。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetRequest.cs
index 7b4c6f7b..db3e2cba 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetRequest.cs
@@ -1,8 +1,11 @@
+using System;
+
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
///
/// 表示 [POST] /channels/ec/order/presentorder/get 接口的请求。
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public class ChannelsECOrderPresentOrderGetRequest : WechatApiRequest, IInferable
{
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetResponse.cs
index e1de1acf..25592b40 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderGetResponse.cs
@@ -1,8 +1,11 @@
+using System;
+
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
///
/// 表示 [POST] /channels/ec/order/presentorder/get 接口的响应。
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public class ChannelsECOrderPresentOrderGetResponse : WechatApiResponse
{
public static class Types
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetRequest.cs
index 7d1ded37..95e7e3d3 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetRequest.cs
@@ -1,8 +1,11 @@
+using System;
+
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
///
/// 表示 [POST] /channels/ec/order/presentorderlist/get 接口的请求。
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public class ChannelsECOrderPresentOrderListGetRequest : WechatApiRequest, IInferable
{
public static class Types
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetResponse.cs
index a7a04cb1..71a2b0e5 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderListGetResponse.cs
@@ -1,8 +1,11 @@
+using System;
+
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
///
/// 表示 [POST] /channels/ec/order/presentorderlist/get 接口的响应。
///
+ [Obsolete("相关接口或字段于 2025-12-08 下线。")]
public class ChannelsECOrderPresentOrderListGetResponse : WechatApiResponse
{
public static class Types
@@ -18,7 +21,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
public string PresentOrderId { get; set; } = default!;
///
- /// 获取或设置订单 ID 列表。
+ /// 获取或设置子单订单 ID 列表。
///
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.cs
new file mode 100644
index 00000000..20fd919f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.cs
@@ -0,0 +1,44 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/presentorder/receiver/set 接口的请求。
+ ///
+ public class ChannelsECOrderPresentOrderReceiverSetRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class SubOrder
+ {
+ ///
+ /// 获取或设置子单订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_id")]
+ public string OrderId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置收礼者 OpenId。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string OpenId { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置礼物订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_id")]
+ public string PresentOrderId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置子单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("sub_order_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("sub_order_list")]
+ public IList SubOrderList { get; set; } = new List();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetResponse.cs
new file mode 100644
index 00000000..978659ed
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/presentorder/receiver/set 接口的响应。
+ ///
+ public class ChannelsECOrderPresentOrderReceiverSetResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.cs
new file mode 100644
index 00000000..88c9b0ad
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.cs
@@ -0,0 +1,58 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/receiverorderlist/get 接口的请求。
+ ///
+ public class ChannelsECOrderReceiverOrderListGetRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class TimeRange : ChannelsECOrderListGetRequest.Types.TimeRange
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置合作小店 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("shop_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("shop_appid")]
+ public string ShopAppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置收礼者 OpenId。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_id")]
+ public string OpenId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置创建订单时间范围。
+ ///
+ [Newtonsoft.Json.JsonProperty("create_time_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("create_time_range")]
+ public Types.TimeRange? CreateTimeRange { get; set; }
+
+ ///
+ /// 获取或设置更新订单时间范围。
+ ///
+ [Newtonsoft.Json.JsonProperty("update_time_range")]
+ [System.Text.Json.Serialization.JsonPropertyName("update_time_range")]
+ public Types.TimeRange? UpdateTimeRange { get; set; }
+
+ ///
+ /// 获取或设置分页每页数量。
+ /// 默认值:10
+ ///
+ [Newtonsoft.Json.JsonProperty("page_size")]
+ [System.Text.Json.Serialization.JsonPropertyName("page_size")]
+ public int Limit { get; set; } = 10;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? Cursor { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.cs
new file mode 100644
index 00000000..c93154ef
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.cs
@@ -0,0 +1,44 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/order/receiverorderlist/get 接口的响应。
+ ///
+ public class ChannelsECOrderReceiverOrderListGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class PresentOrder
+ {
+ ///
+ /// 获取或设置礼物订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("present_order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("present_order_id")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
+ public string PresentOrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置子单订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_id")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
+ public string OrderIdList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置礼物订单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_list")]
+ public Types.PresentOrder[] PresentOrderList { get; set; } = default!;
+
+ ///
+ /// 获取或设置翻页标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("next_key")]
+ [System.Text.Json.Serialization.JsonPropertyName("next_key")]
+ public string? NextCursor { get; set; }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.json
new file mode 100644
index 00000000..e4807ba9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "shop_appid": "wxxxxxxxxxxxxxxxxx",
+ "activity_id": "111"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.json
new file mode 100644
index 00000000..f537080b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityInfoPromoterGetResponse.json
@@ -0,0 +1,32 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "activity": {
+ "activity_id": "111",
+ "info": {
+ "basic_info": {
+ "activity_start_time": "1745856000",
+ "activity_end_time": "1746028800",
+ "shop_info": {
+ "nickname": "小店昵称",
+ "appid": "wxxxxxxxxxxxxxxxxx"
+ }
+ },
+ "prize_info": {
+ "product_info_list": [
+ {
+ "product_id": "111111111111111",
+ "sku_id": "2222222222",
+ "product_img_url": "https://res.wx.qq.com/op_res/1UTAKQSOJopJ5uMwT8EKEWPgJ1RjiMm8XC93FVwJ6GZlPmfXBjqkwVz8QvO985FR-IWAdYj1sMsaVYdl4jEwUA",
+ "product_name": "商品名称",
+ "sku_name": "商品sku名称",
+ "price": "10",
+ "stock_num": "10",
+ "can_use_stock_num": "10"
+ }
+ ]
+ }
+ },
+ "status": 1
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.json
new file mode 100644
index 00000000..02b69f19
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "offset": 0,
+ "limit": 100
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.json
new file mode 100644
index 00000000..8d596527
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECB2C/Activity/ChannelsECB2CActivityListPromoterGetResponse.json
@@ -0,0 +1,17 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "list": [
+ {
+ "shop_appid": "wxxxxxxxxxxxxxxxxx",
+ "shop_nickname": "小店昵称",
+ "activity_id": "111"
+ },
+ {
+ "shop_appid": "wxxxxxxxxxxxxxxxxx",
+ "shop_nickname": "小店昵称",
+ "activity_id": "222"
+ }
+ ],
+ "total_num": 2
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetRequest.json
new file mode 100644
index 00000000..58d3c3b8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "present_order_id": "4232433395290081234"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.json
new file mode 100644
index 00000000..5d3901fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentGetResponse.json
@@ -0,0 +1,30 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "present": {
+ "present_order_id": "4232433395290081234",
+ "create_time": 1763713709,
+ "present_detail": {
+ "price_info": {
+ "order_price": 100
+ },
+ "pay_info": {
+ "pay_time": 1763715605
+ },
+ "wishmessage": "大家一起来抽奖"
+ },
+ "sub_order_list": [
+ {
+ "order_id": "3732433407897635321",
+ "openid": "oDiTs6_jRMfM4lualWTODbwt42kB",
+ "status": 30
+ },
+ {
+ "order_id": "3732433407896586753",
+ "status": 12
+ }
+ ],
+ "is_b2c_free_present": false,
+ "activity_id": "3002981"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.json
new file mode 100644
index 00000000..4eb5e6f7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetRequest.json
@@ -0,0 +1,9 @@
+{
+ "shop_appid": "wx21b9c6e52edfe3a1",
+ "create_time_range": {
+ "start_time": 1749007175,
+ "end_time": 1749008175
+ },
+ "page_size": 10,
+ "next_key": "CPestckGEPeVxckGGAAgACgAMAA4gKbYu/HiyeYzQJ7JuskA"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.json
new file mode 100644
index 00000000..c37dc9c4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/Present/ChannelsECOrderPresentListGetResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "present_order_list": [
+ {
+ "present_order_id": "4226341196275651234"
+ }
+ ],
+ "next_key": "CPestckGEPeVxckGGAAgACgAMAA4gKbYu/HiyeYzQJ7JuskA"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.json
new file mode 100644
index 00000000..c97aedeb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/PresentOrder/ChannelsECOrderPresentOrderReceiverSetRequest.json
@@ -0,0 +1,9 @@
+{
+ "present_order_id": "4232433395290081234",
+ "sub_order_list": [
+ {
+ "order_id": "3732433407897635328",
+ "openid": "omT_t0BEynCijuylUpZCaAAZp0a6"
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.json
new file mode 100644
index 00000000..dcaf63f3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetRequest.json
@@ -0,0 +1,9 @@
+{
+ "shop_appid": "wx0d4f5ddad96dd5ea",
+ "page_size": 10,
+ "openid": "okYsb0XK3sTtyW1xteeL7LZmQM7B",
+ "create_time_range": {
+ "start_time": 1764518400,
+ "end_time": 1764604800
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.json
new file mode 100644
index 00000000..2039c9a4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ReceiverOrder/ChannelsECOrderReceiverOrderListGetResponse.json
@@ -0,0 +1,11 @@
+{
+ "order_list": [
+ {
+ "present_order_id": "4232682644641942011",
+ "order_id": "3732682646291354361"
+ }
+ ],
+ "errcode": 0,
+ "errmsg": "ok",
+ "next_key": "CPestckGEPeVxckGGAAgACgAMAA4gKbYu/HiyeYzQJ7JuskA"
+}