diff --git a/docs/WechatApi/Basic_ModelDefinition.md b/docs/WechatApi/Basic_ModelDefinition.md
index 05fd5772..4939d663 100644
--- a/docs/WechatApi/Basic_ModelDefinition.md
+++ b/docs/WechatApi/Basic_ModelDefinition.md
@@ -186,10 +186,8 @@
| | 微信 API | 备注 |
| :-: | :------------: | :--: |
| √ | 微信小店 | |
-| √ | 合作账号 | |
-| √ | 企业微信 | |
-| √ | 小程序连接小店 | |
-| √ | 罗盘商家版 | |
+| √ | 达人带货 | |
+| √ | 带货助手 | |
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinExtensions.cs
index 5daed09d..ea81d475 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinExtensions.cs
@@ -18,7 +18,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
- ///
+ ///
///
///
///
@@ -48,7 +48,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
- ///
+ ///
///
///
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs
index bbe71421..985c4d46 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs
@@ -17,7 +17,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
- ///
+ ///
///
///
///
@@ -45,7 +45,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
///
///
///
@@ -79,7 +79,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
- ///
+ ///
///
///
///
@@ -106,7 +106,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
///
///
- ///
+ ///
///
///
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
index 1f98bc30..6f03e24e 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs
@@ -9,6 +9,54 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
{
public static class WechatApiClientExecuteChannelsExtensions
{
+ #region ECActivity
+ ///
+ /// 异步调用 [POST] /channels/ec/activity/del 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECActivityDeleteAsync(this WechatApiClient client, Models.ChannelsECActivityDeleteRequest 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", "activity", "del")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/activity/stop 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECActivityStopAsync(this WechatApiClient client, Models.ChannelsECActivityStopRequest 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", "activity", "stop")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
#region ECAftersale
///
/// 异步调用 [POST] /channels/ec/aftersale/genaftersaleorder 接口。
@@ -38,7 +86,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -63,7 +111,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
///
///
///
@@ -87,7 +135,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -111,7 +159,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -204,7 +252,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -229,7 +277,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -253,7 +301,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -277,7 +325,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -491,7 +539,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -515,7 +563,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -567,7 +615,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -591,7 +639,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -631,7 +679,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -662,7 +710,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -710,7 +758,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/background/apply/submit 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -733,7 +781,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/background/apply/cancel 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -756,7 +804,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/background/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -779,7 +827,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/background/remove 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -804,7 +852,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/banner/apply/submit 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -827,7 +875,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/banner/apply/cancel 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -850,7 +898,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/banner/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -873,7 +921,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/basics/homepage/banner/remove 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -971,7 +1019,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -995,7 +1043,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1019,7 +1067,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1043,7 +1091,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1067,7 +1115,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1091,7 +1139,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1115,7 +1163,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1139,7 +1187,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1165,7 +1213,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1189,7 +1237,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1213,7 +1261,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1237,7 +1285,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1261,7 +1309,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1285,7 +1333,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1309,7 +1357,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1401,7 +1449,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1425,7 +1473,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1449,7 +1497,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1473,7 +1521,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1497,7 +1545,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1521,7 +1569,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1545,7 +1593,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1569,7 +1617,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1593,7 +1641,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1617,7 +1665,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1734,7 +1782,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/cooperation/list 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -1850,7 +1898,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/cooperation/invitation/cancel 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -1873,7 +1921,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/cooperation/invitation/unbind 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -1896,7 +1944,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/cooperation/invitation/qrcode/generate 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -1919,7 +1967,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/cooperation/invitation/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -1946,7 +1994,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1970,7 +2018,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -1994,7 +2042,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2018,7 +2066,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2042,7 +2090,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2066,7 +2114,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2090,7 +2138,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2164,7 +2212,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2189,7 +2237,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
///
///
///
@@ -2213,7 +2261,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2238,7 +2286,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2262,7 +2310,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2288,7 +2336,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2312,7 +2360,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2336,7 +2384,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2792,7 +2840,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2816,7 +2864,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2840,7 +2888,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2864,7 +2912,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2888,7 +2936,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2912,7 +2960,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2938,7 +2986,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2962,7 +3010,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -2986,7 +3034,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3010,7 +3058,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3034,7 +3082,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3061,7 +3109,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3085,7 +3133,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3109,7 +3157,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3135,7 +3183,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3161,7 +3209,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3187,7 +3235,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3211,7 +3259,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3258,7 +3306,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3282,7 +3330,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3306,7 +3354,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3330,7 +3378,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3356,7 +3404,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3382,7 +3430,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3406,7 +3454,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3430,7 +3478,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3454,7 +3502,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3478,7 +3526,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3502,7 +3550,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3531,7 +3579,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3555,7 +3603,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3579,7 +3627,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3603,7 +3651,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3629,7 +3677,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3653,7 +3701,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3677,7 +3725,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3701,7 +3749,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3725,7 +3773,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3751,7 +3799,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/open/get_download_url 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -3777,7 +3825,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3801,7 +3849,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3826,7 +3874,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
///
///
///
@@ -3850,7 +3898,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3874,7 +3922,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3944,7 +3992,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3968,7 +4016,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -3992,7 +4040,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4017,7 +4065,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4041,7 +4089,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4065,7 +4113,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4091,7 +4139,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4138,7 +4186,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4162,7 +4210,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4260,7 +4308,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4284,7 +4332,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4309,7 +4357,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
+ ///
///
///
///
@@ -4333,7 +4382,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4357,7 +4406,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4382,7 +4431,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
+ ///
///
///
///
@@ -4407,7 +4457,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
+ ///
///
///
///
@@ -4430,7 +4481,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/product/auditfree 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -4455,7 +4506,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
+ ///
///
///
///
@@ -4479,7 +4531,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4503,7 +4555,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4527,7 +4579,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4569,13 +4621,178 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
+ #region ECProduct/Activity
+ ///
+ /// 异步调用 [POST] /channels/ec/product/activity/add 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductActivityAddAsync(this WechatApiClient client, Models.ChannelsECProductActivityAddRequest 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", "product", "activity", "add")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
+ #region ECProduct/Gift
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/add 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftAddAsync(this WechatApiClient client, Models.ChannelsECProductGiftAddRequest 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", "product", "gift", "add")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/update 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftUpdateAsync(this WechatApiClient client, Models.ChannelsECProductGiftUpdateRequest 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", "product", "gift", "update")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/onsale/set 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftOnSaleSetAsync(this WechatApiClient client, Models.ChannelsECProductGiftOnSaleSetRequest 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", "product", "gift", "onsale", "set")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftGetAsync(this WechatApiClient client, Models.ChannelsECProductGiftGetRequest 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", "product", "gift", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/list/get 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftListGetAsync(this WechatApiClient client, Models.ChannelsECProductGiftListGetRequest 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", "product", "gift", "list", "get")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /channels/ec/product/gift/stock/update 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteChannelsECProductGiftStockUpdateAsync(this WechatApiClient client, Models.ChannelsECProductGiftStockUpdateRequest 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", "product", "gift", "stock", "update")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
#region ECProduct/LimitedDiscountTask
///
/// 异步调用 [POST] /channels/ec/product/limiteddiscounttask/add 接口。
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4599,7 +4816,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4623,7 +4840,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4647,7 +4864,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4674,7 +4891,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// REF:
///
///
- ///
+ ///
///
///
///
@@ -4698,7 +4915,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4722,7 +4939,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4746,7 +4963,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4890,7 +5107,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4914,7 +5131,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4938,7 +5155,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -4962,7 +5179,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5011,7 +5228,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5036,7 +5253,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5061,7 +5278,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5086,7 +5303,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5111,7 +5328,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5136,7 +5353,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5161,7 +5378,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5186,7 +5403,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5211,7 +5428,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5236,7 +5453,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5263,7 +5480,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/classification/tree/product/add 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5286,7 +5503,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/classification/tree/product/del 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5309,7 +5526,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/classification/tree/product/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5332,7 +5549,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/classification/tree/set 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5355,7 +5572,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/classification/tree/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5380,7 +5597,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/window/product/list/get 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5403,7 +5620,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/window/product/reorder 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5426,7 +5643,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/window/product/hide 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5449,7 +5666,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// 异步调用 [POST] /channels/ec/store/window/product/settop 接口。
///
/// REF:
- ///
+ ///
///
///
///
@@ -5620,7 +5837,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5644,7 +5861,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5668,7 +5885,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5692,7 +5909,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5717,7 +5934,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5741,7 +5958,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5767,7 +5984,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5791,7 +6008,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5817,7 +6034,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
@@ -5841,7 +6058,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
///
/// REF:
///
- ///
+ ///
///
///
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityDeleteRequest.cs
new file mode 100644
index 00000000..e8d966bb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityDeleteRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/activity/del 接口的请求。
+ ///
+ public class ChannelsECActivityDeleteRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置买赠活动 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/ECActivity/ChannelsECActivityDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityDeleteResponse.cs
new file mode 100644
index 00000000..91464e77
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityDeleteResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/activity/del 接口的响应。
+ ///
+ public class ChannelsECActivityDeleteResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityStopRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityStopRequest.cs
new file mode 100644
index 00000000..b69f4cb6
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityStopRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/activity/stop 接口的请求。
+ ///
+ public class ChannelsECActivityStopRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置买赠活动 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/ECActivity/ChannelsECActivityStopResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityStopResponse.cs
new file mode 100644
index 00000000..742f9d7f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECActivity/ChannelsECActivityStopResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/activity/stop 接口的响应。
+ ///
+ public class ChannelsECActivityStopResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.cs
new file mode 100644
index 00000000..3e7406e5
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.cs
@@ -0,0 +1,159 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/activity/add 接口的请求。
+ ///
+ public class ChannelsECProductActivityAddRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class GiftActivity
+ {
+ public static class Types
+ {
+ public class Detail
+ {
+ public static class Types
+ {
+ public class ReceiveLimit
+ {
+ ///
+ /// 获取或设置是否限领。
+ ///
+ [Newtonsoft.Json.JsonProperty("is_limited")]
+ [System.Text.Json.Serialization.JsonPropertyName("is_limited")]
+ public bool IsLimited { get; set; }
+
+ ///
+ /// 获取或设置限领套数。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit_num")]
+ public int LimitCount { get; set; }
+ }
+
+ public class MainProduct
+ {
+ ///
+ /// 获取或设置商品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ public long ProductId { get; set; }
+ }
+
+ public class GiftSet
+ {
+ public static class Types
+ {
+ public class Gift
+ {
+ ///
+ /// 获取或设置赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_id")]
+ public long GiftProductId { get; set; }
+
+ ///
+ /// 获取或设置赠品件数。
+ ///
+ [Newtonsoft.Json.JsonProperty("give_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("give_num")]
+ public int GiveCount { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置赠品列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_items")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_items")]
+ public IList GiftList { get; set; } = new List();
+
+ ///
+ /// 获取或设置赠品总套数。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_set_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_set_num")]
+ public int GiftSetCount { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置场景值。
+ ///
+ [Newtonsoft.Json.JsonProperty("show_scene")]
+ [System.Text.Json.Serialization.JsonPropertyName("show_scene")]
+ public int ShowScene { get; set; }
+
+ ///
+ /// 获取或设置场景值。
+ ///
+ [Newtonsoft.Json.JsonProperty("receive_limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("receive_limit")]
+ public Types.ReceiveLimit ReceiveLimit { get; set; } = new Types.ReceiveLimit();
+
+ ///
+ /// 获取或设置主商品列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("main_products")]
+ [System.Text.Json.Serialization.JsonPropertyName("main_products")]
+ public IList MainProductList { get; set; } = new List();
+
+ ///
+ /// 获取或设置赠品套装信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_set")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_set")]
+ public Types.GiftSet GiftSet { get; set; } = new Types.GiftSet();
+ }
+ }
+
+ ///
+ /// 获取或设置买赠活动 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("activity_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("activity_id")]
+ public long? ActivityId { get; set; }
+
+ ///
+ /// 获取或设置买赠活动标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置买赠活动开始时间戳。
+ ///
+ [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; }
+
+ ///
+ /// 获取或设置买赠活动详情。
+ ///
+ [Newtonsoft.Json.JsonProperty("detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("detail")]
+ public Types.Detail Detail { get; set; } = new Types.Detail();
+ }
+ }
+
+ ///
+ /// 获取或设置买赠活动信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_activity")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_activity")]
+ public Types.GiftActivity GiftActivity { get; set; } = new Types.GiftActivity();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.cs
new file mode 100644
index 00000000..6d738d06
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.cs
@@ -0,0 +1,16 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/activity/add 接口的响应。
+ ///
+ public class ChannelsECProductActivityAddResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置买赠活动 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; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAddRequest.cs
index 500a3388..2220113b 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAddRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAddRequest.cs
@@ -78,7 +78,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("out_sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
- public string OutSKUId { get; set; } = string.Empty;
+ public string? OutSKUId { get; set; }
///
/// 获取或设置缩略图 Url。
@@ -399,7 +399,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
- public string? SpuCode { get; set; }
+ public string? SPUCode { get; set; }
///
/// 获取或设置品牌 ID。
@@ -474,7 +474,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
public Types.ExtraService? ExtraService { get; set; }
///
- /// 获取或设置更新后是否立即上架。
+ /// 获取或设置创建后是否立即上架。
///
[Newtonsoft.Json.JsonProperty("listing")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.NumericalBooleanConverter))]
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAuditFreeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAuditFreeRequest.cs
index a31b3ffe..f59e1aa1 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAuditFreeRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductAuditFreeRequest.cs
@@ -192,7 +192,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
- public string? SpuCode { get; set; }
+ public string? SPUCode { get; set; }
///
/// 获取或设置 SKU 列表。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductGetResponse.cs
index 088a553a..5c89c0e4 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductGetResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductGetResponse.cs
@@ -91,7 +91,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("out_sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
- public string OutSKUId { get; set; } = default!;
+ public string? OutSKUId { get; set; }
///
/// 获取或设置缩略图 URL。
@@ -428,7 +428,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
- public string? SpuCode { get; set; }
+ public string? SPUCode { get; set; }
///
/// 获取或设置品牌 ID。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductUpdateRequest.cs
index 86004385..c5943fa9 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductUpdateRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/ChannelsECProductUpdateRequest.cs
@@ -191,7 +191,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
///
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
- public string? SpuCode { get; set; }
+ public string? SPUCode { get; set; }
///
/// 获取或设置品牌 ID。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.cs
new file mode 100644
index 00000000..ac70c884
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.cs
@@ -0,0 +1,129 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/add 接口的请求。
+ ///
+ public class ChannelsECProductGiftAddRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class Detail : ChannelsECProductAddRequest.Types.Detail
+ {
+ }
+
+ public class Category : ChannelsECProductAddRequest.Types.Category
+ {
+ }
+
+ public class Attribute : ChannelsECProductAddRequest.Types.Attribute
+ {
+ }
+
+ public class SKU
+ {
+ ///
+ /// 获取或设置商家自定义 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
+ public string? OutSKUId { get; set; }
+
+ ///
+ /// 获取或设置售价(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("sale_price")]
+ [System.Text.Json.Serialization.JsonPropertyName("sale_price")]
+ public int SalePrice { get; set; }
+
+ ///
+ /// 获取或设置库存。
+ ///
+ [Newtonsoft.Json.JsonProperty("stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_num")]
+ public int? Stock { get; set; }
+
+ ///
+ /// 获取或设置商品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_code")]
+ public string? SKUCode { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置商家自定义赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
+ public string? OutProductId { get; set; }
+
+ ///
+ /// 获取或设置赠品标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置主图 URL 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("head_imgs")]
+ [System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
+ public IList HeadImageUrlList { get; set; } = new List();
+
+ ///
+ /// 获取或设置商品详情信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc_info")]
+ public Types.Detail Detail { get; set; } = new Types.Detail();
+
+ ///
+ /// 获取或设置新版商品类目列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("cats_v2")]
+ [System.Text.Json.Serialization.JsonPropertyName("cats_v2")]
+ public IList? CategoryV2List { get; set; }
+
+ ///
+ /// 获取或设置商品属性列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attrs")]
+ [System.Text.Json.Serialization.JsonPropertyName("attrs")]
+ public IList? AttributeList { get; set; }
+
+ ///
+ /// 获取或设置赠品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("spu_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("spu_code")]
+ public string? SPUCode { get; set; }
+
+ ///
+ /// 获取或设置品牌 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("brand_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("brand_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long? BrandId { get; set; }
+
+ ///
+ /// 获取或设置 SKU 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("skus")]
+ [System.Text.Json.Serialization.JsonPropertyName("skus")]
+ public IList? SKUList { get; set; }
+
+ ///
+ /// 获取或设置创建后是否立即上架。
+ ///
+ [Newtonsoft.Json.JsonProperty("listing")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("listing")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
+ public bool? RequireListing { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.cs
new file mode 100644
index 00000000..4cc351cc
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.cs
@@ -0,0 +1,40 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/add 接口的响应。
+ ///
+ public class ChannelsECProductGiftAddResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Data
+ {
+ ///
+ /// 获取或设置赠品 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("create_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("create_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))]
+ public DateTimeOffset CreateTime { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置返回数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public Types.Data Data { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.cs
new file mode 100644
index 00000000..c14ab9c4
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/get 接口的请求。
+ ///
+ public class ChannelsECProductGiftGetRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ public long ProductId { get; set; }
+
+ ///
+ /// 获取或设置数据类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("data_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("data_type")]
+ public int? DataType { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.cs
new file mode 100644
index 00000000..99af3cd6
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.cs
@@ -0,0 +1,199 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/get 接口的响应。
+ ///
+ public class ChannelsECProductGiftGetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Product
+ {
+ public static class Types
+ {
+ public class Detail : ChannelsECProductGetResponse.Types.Product.Types.Detail
+ {
+ }
+
+ public class Category : ChannelsECProductGetResponse.Types.Product.Types.Category
+ {
+ }
+
+ public class Attribute : ChannelsECProductGetResponse.Types.Product.Types.Attribute
+ {
+ }
+
+ public class SKU
+ {
+ ///
+ /// 获取或设置 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 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
+ public string? OutSKUId { get; set; }
+
+ ///
+ /// 获取或设置售价(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("sale_price")]
+ [System.Text.Json.Serialization.JsonPropertyName("sale_price")]
+ public int SalePrice { get; set; }
+
+ ///
+ /// 获取或设置库存。
+ ///
+ [Newtonsoft.Json.JsonProperty("stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_num")]
+ public int Stock { get; set; }
+
+ ///
+ /// 获取或设置商品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_code")]
+ public string? SKUCode { get; set; }
+
+ ///
+ /// 获取或设置 SKU 状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int Status { 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; }
+
+ ///
+ /// 获取或设置商家自定义赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
+ public string? OutProductId { get; set; }
+
+ ///
+ /// 获取或设置商品标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = default!;
+
+ ///
+ /// 获取或设置主图 URL 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("head_imgs")]
+ [System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
+ public string[] HeadImageUrlList { get; set; } = default!;
+
+ ///
+ /// 获取或设置商品详情信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc_info")]
+ public Types.Detail Detail { get; set; } = default!;
+
+ ///
+ /// 获取或设置新版商品类目列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("cats_v2")]
+ [System.Text.Json.Serialization.JsonPropertyName("cats_v2")]
+ public Types.Category[]? CategoryV2List { get; set; }
+
+ ///
+ /// 获取或设置商品属性列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attrs")]
+ [System.Text.Json.Serialization.JsonPropertyName("attrs")]
+ public Types.Attribute[]? AttributeList { get; set; }
+
+ ///
+ /// 获取或设置商品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("spu_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("spu_code")]
+ public string? SPUCode { get; set; }
+
+ ///
+ /// 获取或设置品牌 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("brand_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("brand_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long? BrandId { get; set; }
+
+ ///
+ /// 获取或设置商品状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public int Status { get; set; }
+
+ ///
+ /// 获取或设置商品草稿状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("edit_status")]
+ [System.Text.Json.Serialization.JsonPropertyName("edit_status")]
+ public int EditingStatus { get; set; }
+
+ ///
+ /// 获取或设置 SKU 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("skus")]
+ [System.Text.Json.Serialization.JsonPropertyName("skus")]
+ public Types.SKU[]? SKUList { get; set; }
+
+ ///
+ /// 获取或设置商品类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_type")]
+ public int? ProductType { get; set; }
+
+ ///
+ /// 获取或设置商品草稿最近一次修改时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("edit_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("edit_time")]
+ public long EditTimestamp { get; set; }
+
+ ///
+ /// 获取或设置导入的来源商品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("src_product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("src_product_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long? SourceProductId { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置线上赠品信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("product")]
+ [System.Text.Json.Serialization.JsonPropertyName("product")]
+ public Types.Product? Product { get; set; }
+
+ ///
+ /// 获取或设置草稿赠品信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("edit_product")]
+ [System.Text.Json.Serialization.JsonPropertyName("edit_product")]
+ public Types.Product? EditingProduct { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.cs
new file mode 100644
index 00000000..7c5058ea
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.cs
@@ -0,0 +1,30 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/list/get 接口的请求。
+ ///
+ public class ChannelsECProductGiftListGetRequest : 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/Gift/ChannelsECProductGiftListGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftListGetResponse.cs
new file mode 100644
index 00000000..dea62301
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftListGetResponse.cs
@@ -0,0 +1,30 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/list/get 接口的响应。
+ ///
+ public class ChannelsECProductGiftListGetResponse : WechatApiResponse
+ {
+ ///
+ /// 获取或设置赠品 ID 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_ids")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_ids")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long[] ProductIdList { 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/Gift/ChannelsECProductGiftOnSaleSetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetRequest.cs
new file mode 100644
index 00000000..dfa6fb83
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetRequest.cs
@@ -0,0 +1,44 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/onsale/set 接口的请求。
+ ///
+ public class ChannelsECProductGiftOnSaleSetRequest : 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("stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_num")]
+ public int? Stock { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置原始商品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ public long ProductId { get; set; }
+
+ ///
+ /// 获取或设置 SKU 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("skus")]
+ [System.Text.Json.Serialization.JsonPropertyName("skus")]
+ public IList? SKUList { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.cs
new file mode 100644
index 00000000..598d6327
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.cs
@@ -0,0 +1,68 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/onsale/set 接口的响应。
+ ///
+ public class ChannelsECProductGiftOnSaleSetResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Data
+ {
+ public static class Types
+ {
+ public class SKU
+ {
+ ///
+ /// 获取或设置原始商品 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("src_sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("src_sku_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long SourceSKUId { get; set; }
+
+ ///
+ /// 获取或设置赠品 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_sku_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long GiftSKUId { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置原始商品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("src_product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("src_product_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long SourceProductId { get; set; }
+
+ ///
+ /// 获取或设置赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("gift_product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("gift_product_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long GiftProductId { get; set; }
+
+ ///
+ /// 获取或设置 SKU 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_mappings")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_mappings")]
+ public Types.SKU[] SKUList { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置返回数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public Types.Data Data { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.cs
new file mode 100644
index 00000000..3192b594
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.cs
@@ -0,0 +1,36 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/stock/update 接口的请求。
+ ///
+ public class ChannelsECProductGiftStockUpdateRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ public long ProductId { get; set; }
+
+ ///
+ /// 获取或设置 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_id")]
+ public long SKUId { get; set; }
+
+ ///
+ /// 获取或设置修改类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("diff_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("diff_type")]
+ public int DiffType { get; set; }
+
+ ///
+ /// 获取或设置修改数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("num")]
+ [System.Text.Json.Serialization.JsonPropertyName("num")]
+ public int DiffCount { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.cs
new file mode 100644
index 00000000..61b1a868
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/stock/update 接口的响应。
+ ///
+ public class ChannelsECProductGiftStockUpdateResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.cs
new file mode 100644
index 00000000..82fda475
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.cs
@@ -0,0 +1,163 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/update 接口的请求。
+ ///
+ public class ChannelsECProductGiftUpdateRequest : WechatApiRequest, IInferable
+ {
+ public static class Types
+ {
+ public class Detail : ChannelsECProductGiftAddRequest.Types.Detail
+ {
+ }
+
+ public class Category : ChannelsECProductGiftAddRequest.Types.Category
+ {
+ }
+
+ public class Attribute : ChannelsECProductGiftAddRequest.Types.Attribute
+ {
+ }
+
+ public class SKU
+ {
+ public static class Types
+ {
+ public class StockDiff
+ {
+ ///
+ /// 获取或设置修改类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("diff_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("diff_type")]
+ public int Type { get; set; }
+
+ ///
+ /// 获取或设置修改数量。
+ ///
+ [Newtonsoft.Json.JsonProperty("num")]
+ [System.Text.Json.Serialization.JsonPropertyName("num")]
+ public int Count { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_id")]
+ public long? SKUId { get; set; }
+
+ ///
+ /// 获取或设置商家自定义 SKU ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_sku_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
+ public string? OutSKUId { get; set; }
+
+ ///
+ /// 获取或设置售价(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("sale_price")]
+ [System.Text.Json.Serialization.JsonPropertyName("sale_price")]
+ public int SalePrice { get; set; }
+
+ ///
+ /// 获取或设置库存。
+ ///
+ [Newtonsoft.Json.JsonProperty("stock_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_num")]
+ public int? Stock { get; set; }
+
+ ///
+ /// 获取或设置库存变更信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("stock_diff")]
+ [System.Text.Json.Serialization.JsonPropertyName("stock_diff")]
+ public Types.StockDiff? StockDiff { get; set; }
+
+ ///
+ /// 获取或设置商品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("sku_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("sku_code")]
+ public string? SKUCode { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置赠品 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("product_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("product_id")]
+ public long ProductId { get; set; }
+
+ ///
+ /// 获取或设置赠品标题。
+ ///
+ [Newtonsoft.Json.JsonProperty("title")]
+ [System.Text.Json.Serialization.JsonPropertyName("title")]
+ public string Title { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置主图 URL 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("head_imgs")]
+ [System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
+ public IList HeadImageUrlList { get; set; } = new List();
+
+ ///
+ /// 获取或设置商品详情信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("desc_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("desc_info")]
+ public Types.Detail Detail { get; set; } = new Types.Detail();
+
+ ///
+ /// 获取或设置新版商品类目列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("cats_v2")]
+ [System.Text.Json.Serialization.JsonPropertyName("cats_v2")]
+ public IList? CategoryV2List { get; set; }
+
+ ///
+ /// 获取或设置商品属性列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("attrs")]
+ [System.Text.Json.Serialization.JsonPropertyName("attrs")]
+ public IList? AttributeList { get; set; }
+
+ ///
+ /// 获取或设置商品编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("spu_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("spu_code")]
+ public string? SPUCode { get; set; }
+
+ ///
+ /// 获取或设置品牌 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("brand_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("brand_id")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public long? BrandId { get; set; }
+
+ ///
+ /// 获取或设置 SKU 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("skus")]
+ [System.Text.Json.Serialization.JsonPropertyName("skus")]
+ public IList? SKUList { get; set; }
+
+ ///
+ /// 获取或设置更新后是否立即上架。
+ ///
+ [Newtonsoft.Json.JsonProperty("listing")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.NumericalBooleanConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("listing")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
+ public bool? RequireListing { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.cs
new file mode 100644
index 00000000..def48ca8
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.cs
@@ -0,0 +1,40 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /channels/ec/product/gift/update 接口的响应。
+ ///
+ public class ChannelsECProductGiftUpdateResponse : WechatApiResponse
+ {
+ public static class Types
+ {
+ public class Data
+ {
+ ///
+ /// 获取或设置赠品 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("update_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("update_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))]
+ public DateTimeOffset UpdateTime { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置返回数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public Types.Data Data { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Aftersale/ShopAftersaleGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Aftersale/ShopAftersaleGetResponse.cs
index ec72d389..f1b01969 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Aftersale/ShopAftersaleGetResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Aftersale/ShopAftersaleGetResponse.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityDeleteRequest.json
new file mode 100644
index 00000000..705d8b7e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "activity_id": "324545"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityStopRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityStopRequest.json
new file mode 100644
index 00000000..705d8b7e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECActivity/ChannelsECActivityStopRequest.json
@@ -0,0 +1,3 @@
+{
+ "activity_id": "324545"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.json
new file mode 100644
index 00000000..af4d4325
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddRequest.json
@@ -0,0 +1,29 @@
+{
+ "gift_activity": {
+ "activity_id": 123456789147,
+ "detail": {
+ "gift_set": {
+ "gift_items": [
+ {
+ "gift_id": 121212,
+ "give_num": 1
+ }
+ ],
+ "gift_set_num": 1
+ },
+ "main_products": [
+ {
+ "product_id": 121212
+ }
+ ],
+ "receive_limit": {
+ "is_limited": true,
+ "limit_num": 111
+ },
+ "show_scene": 1
+ },
+ "end_time": "11111",
+ "start_time": "222222",
+ "title": "测试创建赠品活动"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.json
new file mode 100644
index 00000000..7bff2ba4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Activity/ChannelsECProductActivityAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "activity_id": "123456789147"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.json
new file mode 100644
index 00000000..fbe5b1a1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddRequest.json
@@ -0,0 +1,37 @@
+{
+ "title": "宠物玩具5",
+ "head_imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc_info": {
+ "imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc": "物美价廉"
+ },
+ "cats_v2": [
+ {
+ "cat_id": "10000026"
+ },
+ {
+ "cat_id": "10000032"
+ },
+ {
+ "cat_id": "1246"
+ }
+ ],
+ "attrs": [
+ {
+ "attr_key": "产品净重(kg)",
+ "attr_value": "1"
+ }
+ ],
+ "skus": [
+ {
+ "sale_price": 100,
+ "stock_num": 0
+ }
+ ],
+ "spu_code": "SPU_CODE_XXX",
+ "brand_id": "2100000000"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.json
new file mode 100644
index 00000000..8d6749df
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftAddResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "product_id": "1700000000000",
+ "create_time": "2020-03-25 12:05:25"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.json
new file mode 100644
index 00000000..f018f93e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "product_id": "324545",
+ "data_type": 1
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.json
new file mode 100644
index 00000000..d0abd829
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftGetResponse.json
@@ -0,0 +1,40 @@
+{
+ "product": {
+ "product_id": "1700000000000",
+ "title": "宠物玩具5",
+ "head_imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc_info": {
+ "imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc": "物美价廉"
+ },
+ "cats_v2": [
+ {
+ "cat_id": "10000026"
+ },
+ {
+ "cat_id": "10000032"
+ },
+ {
+ "cat_id": "1246"
+ }
+ ],
+ "attrs": [
+ {
+ "attr_key": "产品净重(kg)",
+ "attr_value": "1"
+ }
+ ],
+ "skus": [
+ {
+ "sku_id": "462966903",
+ "sale_price": 100
+ }
+ ],
+ "spu_code": "SPU_CODE_XXX",
+ "brand_id": "2100000000"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.json
new file mode 100644
index 00000000..fbe11e56
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetRequest.json
@@ -0,0 +1,5 @@
+{
+ "status": 5,
+ "page_size": 10,
+ "next_key": "THE_NEXT_KEY"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetResponse.json
new file mode 100644
index 00000000..0dc1fbb7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftListGetResponse.json
@@ -0,0 +1,18 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "product_ids": [
+ "1234567001",
+ "1234567002",
+ "1234567003",
+ "1234567004",
+ "1234567005",
+ "1234567006",
+ "1234567007",
+ "1234567008",
+ "1234567009",
+ "1234567010"
+ ],
+ "next_key": "THE_NEXT_KEY_NEW",
+ "total_num": 100
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetRequest.json
new file mode 100644
index 00000000..a349fbbd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetRequest.json
@@ -0,0 +1,9 @@
+{
+ "product_id": "10000186383709",
+ "skus": [
+ {
+ "sku_id": "2967856845",
+ "stock_num": 1
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.json
new file mode 100644
index 00000000..d165a9d8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftOnSaleSetResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "src_product_id": "10000186383709",
+ "gift_product_id": "17000001344346",
+ "sku_mappings": [
+ {
+ "src_sku_id": "2967856845",
+ "gift_sku_id": "3185803880"
+ }
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.json
new file mode 100644
index 00000000..ab29bcc6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateRequest.json
@@ -0,0 +1,6 @@
+{
+ "product_id": "17000186383709",
+ "sku_id": "9328425",
+ "diff_type": 1,
+ "num": 10
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.json
new file mode 100644
index 00000000..d89202df
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftStockUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.json
new file mode 100644
index 00000000..ec37e0f4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateRequest.json
@@ -0,0 +1,42 @@
+{
+ "product_id": "1700000000000",
+ "title": "宠物玩具5",
+ "head_imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc_info": {
+ "imgs": [
+ "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
+ ],
+ "desc": "物美价廉"
+ },
+ "cats_v2": [
+ {
+ "cat_id": "10000026"
+ },
+ {
+ "cat_id": "10000032"
+ },
+ {
+ "cat_id": "1246"
+ }
+ ],
+ "attrs": [
+ {
+ "attr_key": "产品净重(kg)",
+ "attr_value": "1"
+ }
+ ],
+ "skus": [
+ {
+ "sku_id": "462966903",
+ "sale_price": 100,
+ "stock_diff": {
+ "diff_type": 1,
+ "num": 1
+ }
+ }
+ ],
+ "spu_code": "SPU_CODE_XXX",
+ "brand_id": "2100000000"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.json
new file mode 100644
index 00000000..5f1765f4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECProduct/Gift/ChannelsECProductGiftUpdateResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "product_id": "1700000000000",
+ "update_time": "2020-06-20 10:00:00"
+ }
+}