diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs index 7a690b34..a2a6c5f4 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionPromoterExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -280,6 +280,109 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion + #region OpenAccount + /// + /// 异步调用 [POST] /union/promoter/open_account/bind 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOpenAccountBindAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountBindRequest 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, "union", "promoter", "open_account", "bind") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /union/promoter/open_account/get 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOpenAccountGetAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountGetRequest 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, "union", "promoter", "open_account", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /union/promoter/open_account/add_customize_info 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOpenAccountAddCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountAddCustomizeInfoRequest 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, "union", "promoter", "open_account", "add_customize_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /union/promoter/open_account/del_customize_info 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOpenAccountDeleteCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountDeleteCustomizeInfoRequest 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, "union", "promoter", "open_account", "del_customize_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /union/promoter/open_account/get_customize_info 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionPromoterOpenAccountGetCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountGetCustomizeInfoRequest 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, "union", "promoter", "open_account", "get_customize_info") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("unionid", request.UnionId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + #region OpenProduct /// /// 异步调用 [GET] /union/promoter/open_product/list 接口。 @@ -536,108 +639,5 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion - - #region OpenAccount - /// - /// 异步调用 [POST] /union/promoter/open_account/bind 接口。 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html - /// - /// - /// - /// - /// - public static async Task ExecuteUnionPromoterOpenAccountBindAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountBindRequest 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, "union", "promoter", "open_account", "bind") - .SetQueryParam("access_token", request.AccessToken); - - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); - } - - /// - /// 异步调用 [GET] /union/promoter/open_account/get 接口。 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html - /// - /// - /// - /// - /// - public static async Task ExecuteUnionPromoterOpenAccountGetAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountGetRequest 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, "union", "promoter", "open_account", "get") - .SetQueryParam("access_token", request.AccessToken); - - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); - } - - /// - /// 异步调用 [POST] /union/promoter/open_account/add_customize_info 接口。 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html - /// - /// - /// - /// - /// - public static async Task ExecuteUnionPromoterOpenAccountAddCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountAddCustomizeInfoRequest 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, "union", "promoter", "open_account", "add_customize_info") - .SetQueryParam("access_token", request.AccessToken); - - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); - } - - /// - /// 异步调用 [POST] /union/promoter/open_account/del_customize_info 接口。 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html - /// - /// - /// - /// - /// - public static async Task ExecuteUnionPromoterOpenAccountDeleteCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountDeleteCustomizeInfoRequest 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, "union", "promoter", "open_account", "del_customize_info") - .SetQueryParam("access_token", request.AccessToken); - - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); - } - - /// - /// 异步调用 [GET] /union/promoter/open_account/get_customize_info 接口。 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/access-guidelines/promoter/api/customized-userinfo.html - /// - /// - /// - /// - /// - public static async Task ExecuteUnionPromoterOpenAccountGetCustomizeInfoAsync(this WechatApiClient client, Models.UnionPromoterOpenAccountGetCustomizeInfoRequest 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, "union", "promoter", "open_account", "get_customize_info") - .SetQueryParam("access_token", request.AccessToken) - .SetQueryParam("unionid", request.UnionId); - - return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); - } - #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionShopExtensions.cs index c3652d30..e664b263 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionShopExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteUnionShopExtensions.cs @@ -70,5 +70,71 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Order + /// + /// 异步调用 [GET] /union/shop/order/search_normal_order 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/custom_component/api/shop/order-info.html + /// + /// + /// + /// + /// + public static async Task ExecuteUnionShopOrderSearchNormalOrderAsync(this WechatApiClient client, Models.UnionShopOrderSearchNormalOrderRequest 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, "union", "shop", "order", "search_normal_order") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("offset", request.Offset) + .SetQueryParam("limit", request.Limit); + + if (request.Query != null) + flurlReq.SetQueryParam("query", request.Query); + + if (request.AllianceAppId != null) + flurlReq.SetQueryParam("allianceAppid", request.AllianceAppId); + + if (request.OrderId != null) + flurlReq.SetQueryParam("orderId", request.OrderId.Value); + + if (request.OutOrderId != null) + flurlReq.SetQueryParam("outOrderId", request.OutOrderId); + + if (request.OutOrderIdList != null) + flurlReq.SetQueryParam("outOrderIdList", string.Join(",", request.OutOrderId)); + + if (request.TransactionId != null) + flurlReq.SetQueryParam("tradeNo", request.TransactionId); + + if (request.TransactionIdList != null) + flurlReq.SetQueryParam("transactionIdList", string.Join(",", request.TransactionIdList)); + + if (request.StartPayTimestamp != null) + flurlReq.SetQueryParam("startPayTime", request.StartPayTimestamp.Value); + + if (request.EndPayTimestamp != null) + flurlReq.SetQueryParam("endPayTime", request.EndPayTimestamp.Value); + + if (request.CommissionStatus != null) + flurlReq.SetQueryParam("commissionStatus", request.CommissionStatus); + + if (request.StartStatusUpdateTimestamp != null) + flurlReq.SetQueryParam("startStatusUpdateTime", request.StartStatusUpdateTimestamp.Value); + + if (request.EndStatusUpdateTimestamp != null) + flurlReq.SetQueryParam("endStatusUpdateTime", request.EndStatusUpdateTimestamp.Value); + + if (request.SortBy != null) + flurlReq.SetQueryParam("sortBy", request.SortBy); + + if (request.SortOrder != null) + flurlReq.SetQueryParam("sortOrder", request.SortOrder); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs index 1222dc11..ae22a2f4 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderInfoResponse.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SKIT.FlurlHttpClient.Wechat.Api.Models { @@ -278,7 +278,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("orderList")] [System.Text.Json.Serialization.JsonPropertyName("orderList")] - public Types.Order[] OrderList { get; set; } = default!; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchNormalOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchNormalOrderResponse.cs index 73204310..ac69307f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchNormalOrderResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchNormalOrderResponse.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [GET] /union/promoter/order/search_normal_order 接口的响应。 @@ -286,7 +286,6 @@ /// [Newtonsoft.Json.JsonProperty("orderList")] [System.Text.Json.Serialization.JsonPropertyName("orderList")] - public Types.Order[] OrderList { get; set; } = default!; /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs index 9428ec2b..d441d736 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionPromoter/Order/UnionPromoterOrderSearchResponse.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [GET] /union/promoter/order/search 接口的响应。 @@ -17,7 +17,6 @@ /// [Newtonsoft.Json.JsonProperty("orderList")] [System.Text.Json.Serialization.JsonPropertyName("orderList")] - public Types.Order[] OrderList { get; set; } = default!; /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderRequest.cs new file mode 100644 index 00000000..1dda7630 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderRequest.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/shop/order/search_normal_order 接口的请求。 + /// + public class UnionShopOrderSearchNormalOrderRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置分页起始位置。 + /// 默认值:0 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } = 0; + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 10; + + /// + /// 获取或设置关键词。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? Query { get; set; } + + /// + /// 获取或设置推客 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? AllianceAppId { get; set; } + + /// + /// 获取或设置订单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long? OrderId { get; set; } + + /// + /// 获取或设置商家自定义订单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? OutOrderId { get; set; } + + /// + /// 获取或设置商家自定义订单号列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? OutOrderIdList { get; set; } + + /// + /// 获取或设置微信支付交易单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? TransactionId { get; set; } + + /// + /// 获取或设置微信支付交易单号列表。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public IList? TransactionIdList { get; set; } + + /// + /// 获取或设置支付时间起始时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long? StartPayTimestamp { get; set; } + + /// + /// 获取或设置支付时间结束时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long? EndPayTimestamp { get; set; } + + /// + /// 获取或设置分佣状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? CommissionStatus { get; set; } + + /// + /// 获取或设置订单状态更新时间起始时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long? StartStatusUpdateTimestamp { get; set; } + + /// + /// 获取或设置订单状态更新时间结束时间戳。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long? EndStatusUpdateTimestamp { get; set; } + + /// + /// 获取或设置排序字段。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SortBy { get; set; } + + /// + /// 获取或设置排序方式。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SortOrder { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.cs new file mode 100644 index 00000000..8d0314eb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.cs @@ -0,0 +1,288 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /union/shop/order/search_normal_order 接口的响应。 + /// + public class UnionShopOrderSearchNormalOrderResponse : WechatApiResponse + { + public static class Types + { + public class Order + { + public static class Types + { + public class OrderDetail + { + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("orderId")] + [System.Text.Json.Serialization.JsonPropertyName("orderId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long OrderId { get; set; } + + /// + /// 获取或设置商家自定义订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("outOrderId")] + [System.Text.Json.Serialization.JsonPropertyName("outOrderId")] + public string OutOrderId { get; set; } = default!; + + /// + /// 获取或设置微信支付交易单号。 + /// + [Newtonsoft.Json.JsonProperty("transactionId")] + [System.Text.Json.Serialization.JsonPropertyName("transactionId")] + public string? TransactionId { get; set; } + + /// + /// 获取或设置支付时间戳。 + /// + [Newtonsoft.Json.JsonProperty("payTime")] + [System.Text.Json.Serialization.JsonPropertyName("payTime")] + public long? PayTimestamp { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("createTime")] + [System.Text.Json.Serialization.JsonPropertyName("createTime")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置订单金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("orderPrice")] + [System.Text.Json.Serialization.JsonPropertyName("orderPrice")] + public int OrderPrice { get; set; } + + /// + /// 获取或设置运费金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("freight")] + [System.Text.Json.Serialization.JsonPropertyName("freight")] + public int Freight { get; set; } + + /// + /// 获取或设置优惠金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discountedPrice")] + [System.Text.Json.Serialization.JsonPropertyName("discountedPrice")] + public int DiscountedPrice { get; set; } + + /// + /// 获取或设置附加金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("additionalPrice")] + [System.Text.Json.Serialization.JsonPropertyName("additionalPrice")] + public int AdditionalPrice { get; set; } + + /// + /// 获取或设置附加金额备注。 + /// + [Newtonsoft.Json.JsonProperty("additionalRemarks")] + [System.Text.Json.Serialization.JsonPropertyName("additionalRemarks")] + public string? additionalRemarks { get; set; } + + /// + /// 获取或设置订单状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置订单状态最后更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("statusUpdateTime")] + [System.Text.Json.Serialization.JsonPropertyName("statusUpdateTime")] + public long? StatusUpdateTimestamp { get; set; } + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("path")] + [System.Text.Json.Serialization.JsonPropertyName("path")] + public string? PagePath { get; set; } + } + + public class Product + { + public static class Types + { + public class Promoter + { + /// + /// 获取或设置 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appId")] + [System.Text.Json.Serialization.JsonPropertyName("appId")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickName")] + [System.Text.Json.Serialization.JsonPropertyName("nickName")] + public string Nickname { get; set; } = default!; + } + + public class SKUAttribute + { + /// + /// 获取或设置属性的 Key。 + /// + [Newtonsoft.Json.JsonProperty("attrKey")] + [System.Text.Json.Serialization.JsonPropertyName("attrKey")] + public string Key { get; set; } = string.Empty; + + /// + /// 获取或设置属性的值。 + /// + [Newtonsoft.Json.JsonProperty("attrValue")] + [System.Text.Json.Serialization.JsonPropertyName("attrValue")] + public string Value { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("productId")] + [System.Text.Json.Serialization.JsonPropertyName("productId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long ProductId { get; set; } + + /// + /// 获取或设置商家自定义商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("outProductId")] + [System.Text.Json.Serialization.JsonPropertyName("outProductId")] + public string OutProductId { get; set; } = default!; + + /// + /// 获取或设置 SKU ID。 + /// + [Newtonsoft.Json.JsonProperty("skuId")] + [System.Text.Json.Serialization.JsonPropertyName("skuId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long SKUId { get; set; } + + /// + /// 获取或设置商家自定义 SKU ID。 + /// + [Newtonsoft.Json.JsonProperty("outSkuId")] + [System.Text.Json.Serialization.JsonPropertyName("outSkuId")] + public string OutSKUId { get; set; } = default!; + + /// + /// 获取或设置商品标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置商品头图 URL。 + /// + [Newtonsoft.Json.JsonProperty("headImg")] + [System.Text.Json.Serialization.JsonPropertyName("headImg")] + public string HeadImageUrl { get; set; } = default!; + + /// + /// 获取或设置商品原价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("salePrice")] + [System.Text.Json.Serialization.JsonPropertyName("salePrice")] + public int SalePrice { get; set; } + + /// + /// 获取或设置商品现价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("realPrice")] + [System.Text.Json.Serialization.JsonPropertyName("realPrice")] + public int RealPrice { get; set; } + + /// + /// 获取或设置 SKU 属性列表。 + /// + [Newtonsoft.Json.JsonProperty("skuAttrs")] + [System.Text.Json.Serialization.JsonPropertyName("skuAttrs")] + public Types.SKUAttribute[]? SKUAttributeList { get; set; } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("productCnt")] + [System.Text.Json.Serialization.JsonPropertyName("productCnt")] + public int ProductCount { get; set; } + + /// + /// 获取或设置佣金比例(单位:万分之一)。 + /// + [Newtonsoft.Json.JsonProperty("ratio")] + [System.Text.Json.Serialization.JsonPropertyName("ratio")] + public int CommissionRatio { get; set; } + + /// + /// 获取或设置佣金金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("commissionValue")] + [System.Text.Json.Serialization.JsonPropertyName("commissionValue")] + public int CommissionValue { get; set; } + + /// + /// 获取或设置分佣状态。 + /// + [Newtonsoft.Json.JsonProperty("commissionStatus")] + [System.Text.Json.Serialization.JsonPropertyName("commissionStatus")] + public string CommissionStatus { get; set; } = default!; + + /// + /// 获取或设置分佣状态最后更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("commissionStatusUpdateTime")] + [System.Text.Json.Serialization.JsonPropertyName("commissionStatusUpdateTime")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long? CommissionStatusUpdateTimestamp { get; set; } + + /// + /// 获取或设置推广员信息。 + /// + [Newtonsoft.Json.JsonProperty("promoterInfo")] + [System.Text.Json.Serialization.JsonPropertyName("promoterInfo")] + public Types.Promoter? Promoter { get; set; } + } + } + + /// + /// 获取或设置订单详情。 + /// + [Newtonsoft.Json.JsonProperty("orderInfo")] + [System.Text.Json.Serialization.JsonPropertyName("orderInfo")] + public Types.OrderDetail OrderDetail { get; set; }= default!; + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("productList")] + [System.Text.Json.Serialization.JsonPropertyName("productList")] + public Types.Product[] ProductList { get; set; } = default!; + } + } + + /// + /// 获取或设置订单列表。 + /// + [Newtonsoft.Json.JsonProperty("orderList")] + [System.Text.Json.Serialization.JsonPropertyName("orderList")] + public Types.Order[] OrderList { get; set; } = default!; + + /// + /// 获取或设置订单总数量。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.json new file mode 100644 index 00000000..8600eb74 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/UnionShop/Order/UnionShopOrderSearchNormalOrderResponse.json @@ -0,0 +1,74 @@ +{ + "errcode": 0, + "errmsg": "ok", + "total": 1, + "orderList": [ + { + "orderInfo": { + "orderId": "2020966986280665096", + "outOrderId": "1000010000100301", + "transactionId": "893921061043139", + "payTime": 1630051304, + "orderPrice": 40, + "freight": 10, + "discountedPrice": 0, + "additionalPrice": 0, + "additionalRemarks": "", + "status": 200, + "createTime": 1630051290, + "statusUpdateTime": 0, + "path": "/pages/commercePlace/index" + }, + "productList": [ + { + "title": "219 男女同款鞋", + "headImg": "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/60e32624000cf9e50000000023e74f09000000a000004f50?imageView2/3/w/544", + "salePrice": 10, + "realPrice": 10, + "productCnt": 2, + "productId": "411628841", + "outProductId": "1625138165000", + "outSkuId": "411628841", + "skuAttrs": [], + "ratio": 8800, + "commissionValue": 17, + "commissionStatus": "COMMISSION_SHOP_FINISH_DEDUCTION", + "commissionStatusUpdateTime": 1630932191, + "promoterInfo": { + "appId": "wx1cea54f8a2094", + "nickName": "旗舰店" + } + }, + { + "title": "219 男女同款鞋", + "headImg": "https://store.mp.video.tencent-cloud.com/161/20304/snscosdownload/SH/reserved/60e32624000cf9e50000000023e74f09000000a000004f50?imageView2/3/w/544", + "salePrice": 1, + "realPrice": 10, + "productCnt": 2, + "productId": "411622998", + "outProductId": "1625194252000", + "skuId": "350263118", + "outSkuId": "1625194251990", + "skuAttrs": [ + { + "attrKey": "选择颜色", + "attrValue": "红蓝主机" + }, + { + "attrKey": "选择套装", + "attrValue": "主机+保护套" + } + ], + "ratio": 9000, + "commissionValue": 0, + "commissionStatus": "COMMISSION_PAY_CANCEL", + "commissionStatusUpdateTime": 1630058665, + "promoterInfo": { + "appId": "wx1cea54f8a2094", + "nickName": "旗舰店" + } + } + ] + } + ] +}