From d6b85ef227a3b83600fb69ff59d9404a27212d74 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 3 Apr 2023 20:46:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E9=93=B6?= =?UTF-8?q?=E8=A1=8C=E5=91=A8=E5=91=A8=E6=83=A0=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatTenpayV3/Basic_ModelDefinition.md | 1 + ...ExecuteMerchantWeeklyDiscountExtensions.cs | 79 +++++++++ ...yMarketingWeeklyDiscountActivityRequest.cs | 31 ++++ ...MarketingWeeklyDiscountActivityResponse.cs | 26 +++ ...eklyDiscountActivityByActivityIdRequest.cs | 15 ++ ...klyDiscountActivityByActivityIdResponse.cs | 120 ++++++++++++++ ...arketingWeeklyDiscountActivitiesRequest.cs | 51 ++++++ ...rketingWeeklyDiscountActivitiesResponse.cs | 154 ++++++++++++++++++ ...arketingWeeklyDiscountActivityRequest.json | 4 + ...rketingWeeklyDiscountActivityResponse.json | 4 + ...yDiscountActivityByActivityIdResponse.json | 21 +++ ...etingWeeklyDiscountActivitiesResponse.json | 28 ++++ 12 files changed, 534 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantWeeklyDiscountExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.json diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index 6a96d641..463ea53a 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -61,6 +61,7 @@ | × | 营销工具:现金红包 | 直连商户 & 服务商 | 官方未提供 v3 API | | √ | 营销工具:银行定向促活 | 直连商户 & 服务商 | | | √ | 营销工具:银行提现免费券 | 服务商 | | +| √ | 营销工具:银行周周惠 | 服务商 | | | × | 资金应用:转账到银行卡 | 直连商户 | 官方未提供 v3 API | | √ | 资金应用:转账到零钱 | 直连商户 & 服务商 | | | √ | 资金应用:分账 | 直连商户 & 服务商 | | diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantWeeklyDiscountExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantWeeklyDiscountExtensions.cs new file mode 100644 index 00000000..9359f2ef --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantWeeklyDiscountExtensions.cs @@ -0,0 +1,79 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供银行周周惠相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecuteMerchantWeeklyDiscountExtensions + { + /// + /// 异步调用 [POST] /marketing/weekly-discount/activities/{activity_id}/apply 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter6_1_1.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteApplyMarketingWeeklyDiscountActivityAsync(this WechatTenpayClient client, Models.ApplyMarketingWeeklyDiscountActivityRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "marketing", "weekly-discount", "activities", request.ActivityId, "apply"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /marketing/weekly-discount/activities 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter6_1_3.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryApplyMarketingWeeklyDiscountActivitiesAsync(this WechatTenpayClient client, Models.QueryApplyMarketingWeeklyDiscountActivitiesRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "marketing", "weekly-discount", "activities") + .SetQueryParam("applying_merchant_id", request.ApplyingMerchantId) + .SetQueryParam("activity_area_code", request.ActivityAreaCode) + .SetQueryParam("activity_scene", request.ActivityScene) + .SetQueryParam("limit", request.Limit) + .SetQueryParam("offset", request.Offset); + + if (request.StoreId != null) + flurlReq.SetQueryParam("store_id", request.StoreId.Value); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /marketing/weekly-discount/activities/{activity_id} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter6_1_2.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteGetApplyMarketingWeeklyDiscountActivityByActivityIdAsync(this WechatTenpayClient client, Models.GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "marketing", "weekly-discount", "activities", request.ActivityId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.cs new file mode 100644 index 00000000..06f43dfd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.cs @@ -0,0 +1,31 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/weekly-discount/activities/{activity_id}/apply 接口的请求。 + /// + public class ApplyMarketingWeeklyDiscountActivityRequest : WechatTenpayRequest + { + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ActivityId { get; set; } = string.Empty; + + /// + /// 获取或设置报名商户号。 + /// + [Newtonsoft.Json.JsonProperty("applying_merchant_id")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalStringConverter))] + [System.Text.Json.Serialization.JsonPropertyName("applying_merchant_id")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringConverter))] + public string ApplyingMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置门店 ID。 + /// + [Newtonsoft.Json.JsonProperty("store_id")] + [System.Text.Json.Serialization.JsonPropertyName("store_id")] + public int StoreId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.cs new file mode 100644 index 00000000..de94a0b8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.cs @@ -0,0 +1,26 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/weekly-discount/activities/{activity_id}/apply 接口的响应。 + /// + public class ApplyMarketingWeeklyDiscountActivityResponse : WechatTenpayResponse + { + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonProperty("activity_id")] + [System.Text.Json.Serialization.JsonPropertyName("activity_id")] + public int ActivityId { get; set; } + + /// + /// 获取或设置成功时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset SuccessTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest.cs new file mode 100644 index 00000000..5da89992 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/weekly-discount/activities/{activity_id} 接口的请求。 + /// + public class GetApplyMarketingWeeklyDiscountActivityByActivityIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ActivityId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.cs new file mode 100644 index 00000000..b46ad095 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.cs @@ -0,0 +1,120 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/weekly-discount/activities/{activity_id} 接口的响应。 + /// + public class GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse : WechatTenpayResponse + { + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonProperty("activity_id")] + [System.Text.Json.Serialization.JsonPropertyName("activity_id")] + public string ActivityId { get; set; } = default!; + + /// + /// 获取或设置活动名称。 + /// + [Newtonsoft.Json.JsonProperty("activity_name")] + [System.Text.Json.Serialization.JsonPropertyName("activity_name")] + public string ActivityName { get; set; } = default!; + + /// + /// 获取或设置活动投放场景。 + /// + [Newtonsoft.Json.JsonProperty("activity_scene")] + [System.Text.Json.Serialization.JsonPropertyName("activity_scene")] + public string ActivityScene { get; set; } = default!; + + /// + /// 获取或设置活动投放区域编码列表。 + /// + [Newtonsoft.Json.JsonProperty("activity_area_code")] + [System.Text.Json.Serialization.JsonPropertyName("activity_area_code")] + public string[] ActivityAreaCodeList { get; set; } = default!; + + /// + /// 获取或设置活动状态。 + /// + [Newtonsoft.Json.JsonProperty("activity_state")] + [System.Text.Json.Serialization.JsonPropertyName("activity_state")] + public string ActivityState { get; set; } = default!; + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("activity_limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("activity_limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置活动优惠门槛(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_transaction_minimum_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_transaction_minimum_amount")] + public int TransactionMinimumAmount { get; set; } + + /// + /// 获取或设置活动优惠金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_coupon_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_coupon_amount")] + public int CouponAmount { get; set; } + + /// + /// 获取或设置可使用周期列表。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_week")] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_week")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int[] AvailableWeekList { get; set; } = default!; + + /// + /// 获取或设置活动预算(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_max_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_max_amount")] + public int MaxAmount { get; set; } + + /// + /// 获取或设置活动单日预算(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_max_amount_per_day")] + [System.Text.Json.Serialization.JsonPropertyName("activity_max_amount_per_day")] + public int? MaxAmountPerDay { get; set; } + + /// + /// 获取或设置活动开始时间。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置活动结束时间。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + + /// + /// 获取或设置 Logo 地址。 + /// + [Newtonsoft.Json.JsonProperty("activity_logo")] + [System.Text.Json.Serialization.JsonPropertyName("activity_logo")] + public string? LogoUrl { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("activity_remark")] + [System.Text.Json.Serialization.JsonPropertyName("activity_remark")] + public string? Remark { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesRequest.cs new file mode 100644 index 00000000..364a1bb7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesRequest.cs @@ -0,0 +1,51 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/weekly-discount/activities 接口的请求。 + /// + public class QueryApplyMarketingWeeklyDiscountActivitiesRequest : WechatTenpayRequest + { + /// + /// 获取或设置投放场景。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ActivityScene { get; set; } = string.Empty; + + /// + /// 获取或设置活动投放区域编码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int ActivityAreaCode { get; set; } + + /// + /// 获取或设置报名商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ApplyingMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置门店 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? StoreId { get; set; } + + /// + /// 获取或设置分页大小。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 10; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.cs new file mode 100644 index 00000000..5bde3803 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.cs @@ -0,0 +1,154 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/weekly-discount/activities 接口的响应。 + /// + public class QueryApplyMarketingWeeklyDiscountActivitiesResponse : WechatTenpayResponse + { + public static class Types + { + public class Activity + { + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonProperty("activity_id")] + [System.Text.Json.Serialization.JsonPropertyName("activity_id")] + public string ActivityId { get; set; } = default!; + + /// + /// 获取或设置活动名称。 + /// + [Newtonsoft.Json.JsonProperty("activity_name")] + [System.Text.Json.Serialization.JsonPropertyName("activity_name")] + public string ActivityName { get; set; } = default!; + + /// + /// 获取或设置活动投放场景。 + /// + [Newtonsoft.Json.JsonProperty("activity_scene")] + [System.Text.Json.Serialization.JsonPropertyName("activity_scene")] + public string ActivityScene { get; set; } = default!; + + /// + /// 获取或设置活动投放区域编码列表。 + /// + [Newtonsoft.Json.JsonProperty("activity_area_code")] + [System.Text.Json.Serialization.JsonPropertyName("activity_area_code")] + public string[] ActivityAreaCodeList { get; set; } = default!; + + /// + /// 获取或设置活动状态。 + /// + [Newtonsoft.Json.JsonProperty("activity_state")] + [System.Text.Json.Serialization.JsonPropertyName("activity_state")] + public string ActivityState { get; set; } = default!; + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("activity_limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("activity_limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置活动优惠门槛(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_transaction_minimum_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_transaction_minimum_amount")] + public int TransactionMinimumAmount { get; set; } + + /// + /// 获取或设置活动优惠金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_coupon_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_coupon_amount")] + public int CouponAmount { get; set; } + + /// + /// 获取或设置可使用周期列表。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_week")] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_week")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int[] AvailableWeekList { get; set; } = default!; + + /// + /// 获取或设置活动预算(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_max_amount")] + [System.Text.Json.Serialization.JsonPropertyName("activity_max_amount")] + public int MaxAmount { get; set; } + + /// + /// 获取或设置活动单日预算(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("activity_max_amount_per_day")] + [System.Text.Json.Serialization.JsonPropertyName("activity_max_amount_per_day")] + public int? MaxAmountPerDay { get; set; } + + /// + /// 获取或设置活动开始时间。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置活动结束时间。 + /// + [Newtonsoft.Json.JsonProperty("activity_available_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("activity_available_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + + /// + /// 获取或设置 Logo 地址。 + /// + [Newtonsoft.Json.JsonProperty("activity_logo")] + [System.Text.Json.Serialization.JsonPropertyName("activity_logo")] + public string? LogoUrl { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("activity_remark")] + [System.Text.Json.Serialization.JsonPropertyName("activity_remark")] + public string? Remark { get; set; } + } + } + + /// + /// 获取或设置活动列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Activity[] ActivityList { get; set; } = default!; + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置活动总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.json new file mode 100644 index 00000000..b909ece0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityRequest.json @@ -0,0 +1,4 @@ +{ + "applying_merchant_id": 10000098, + "store_id": 111111 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.json new file mode 100644 index 00000000..148a054d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/ApplyMarketingWeeklyDiscountActivityResponse.json @@ -0,0 +1,4 @@ +{ + "activity_id": 10001, + "success_time": "2018-06-08T10:34:56+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.json new file mode 100644 index 00000000..ce581535 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/GetApplyMarketingWeeklyDiscountActivityByActivityIdResponse.json @@ -0,0 +1,21 @@ +{ + "activity_area_code": [ + "110000" + ], + "activity_available_begin_time": "2018-06-08T10:34:56+08:00", + "activity_available_end_time": "2018-08-08T10:34:56+08:00", + "activity_available_week": [ + "1" + ], + "activity_coupon_amount": 10, + "activity_id": "111111", + "activity_limit_pay": "CCB_DEBIT", + "activity_logo": "https://xxx.xxx.xxx.jpg", + "activity_max_amount": 100000, + "activity_max_amount_per_day": 100000, + "activity_name": "xxx周周惠活动", + "activity_remark": "周周惠,每周日,周一独享", + "activity_scene": "SCAN_CODE_TO_ORDER", + "activity_state": "APPLYING", + "activity_transaction_minimum_amount": 100 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.json new file mode 100644 index 00000000..af642bca --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingWeeklyDiscount/QueryApplyMarketingWeeklyDiscountActivitiesResponse.json @@ -0,0 +1,28 @@ +{ + "data": [ + { + "activity_area_code": [ + "110000" + ], + "activity_available_begin_time": "2018-06-08T10:34:56+08:00", + "activity_available_end_time": "2018-08-08T10:34:56+08:00", + "activity_available_week": [ + "1" + ], + "activity_coupon_amount": 10, + "activity_id": "111111", + "activity_limit_pay": "CCB_DEBIT", + "activity_logo": "https://xxx.xxx.xxx.jpg", + "activity_max_amount": 100000, + "activity_max_amount_per_day": 100000, + "activity_name": "xxx周周惠活动", + "activity_remark": "周周惠,每周日,周一独享", + "activity_scene": "SCAN_CODE_TO_ORDER", + "activity_state": "APPLYING", + "activity_transaction_minimum_amount": 100 + } + ], + "limit": 5, + "offset": 10, + "total_count": 1234 +}