diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaApiExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaApiExtensions.cs index 37787e3b..b1c9fd02 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaApiExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaApiExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -1222,5 +1222,49 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region WxaMpTrade + /// + /// 异步调用 [GET] /wxaapi/wxamptrade/get_guarantee_status 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/transaction-guarantee/GetGuaranteeStatus.html + /// + /// + /// + /// + /// + public static async Task ExecuteWxaApiWxaMpTradeGetGuaranteeStatusAsync(this WechatApiClient client, Models.WxaApiWxaMpTradeGetGuaranteeStatusRequest 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, "wxaapi", "wxamptrade", "get_guarantee_status") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /wxaapi/wxamptrade/get_penalty_list 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/transaction-guarantee/GetPenaltyList.html + /// + /// + /// + /// + /// + public static async Task ExecuteWxaApiWxaMpTradeGetPenaltyListAsync(this WechatApiClient client, Models.WxaApiWxaMpTradeGetPenaltyListRequest 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, "wxaapi", "wxamptrade", "get_penalty_list") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("offset", request.Offset) + .SetQueryParam("limit", request.Limit); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusRequest.cs new file mode 100644 index 00000000..2819aaea --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /wxaapi/wxamptrade/get_guarantee_status 接口的请求。 + /// + public class WxaApiWxaMpTradeGetGuaranteeStatusRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.cs new file mode 100644 index 00000000..3a386aab --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /wxaapi/wxamptrade/get_guarantee_status 接口的响应。 + /// + public class WxaApiWxaMpTradeGetGuaranteeStatusResponse : WechatApiResponse + { + /// + /// 获取或设置是否激活交易保障。 + /// + [Newtonsoft.Json.JsonProperty("isActived")] + [System.Text.Json.Serialization.JsonPropertyName("isActived")] + public bool IsActived { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListRequest.cs new file mode 100644 index 00000000..7ca42761 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListRequest.cs @@ -0,0 +1,24 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /wxaapi/wxamptrade/get_penalty_list 接口的请求。 + /// + public class WxaApiWxaMpTradeGetPenaltyListRequest : 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; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.cs new file mode 100644 index 00000000..4577c332 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.cs @@ -0,0 +1,96 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /wxaapi/wxamptrade/get_penalty_list 接口的响应。 + /// + public class WxaApiWxaMpTradeGetPenaltyListResponse : WechatApiResponse + { + public static class Types + { + public class Appeal + { + /// + /// 获取或设置扣分记录 ID。 + /// + [Newtonsoft.Json.JsonProperty("illegalOrderId")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualLongReadOnlyConverter))] + [System.Text.Json.Serialization.JsonPropertyName("illegalOrderId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long AppealId { get; set; } + + /// + /// 获取或设置订单号。 + /// + [Newtonsoft.Json.JsonProperty("orderId")] + [System.Text.Json.Serialization.JsonPropertyName("orderId")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))] + public string OrderId { get; set; } = default!; + + /// + /// 获取或设置投诉单 ID。 + /// + [Newtonsoft.Json.JsonProperty("complaintOrderId")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualLongReadOnlyConverter))] + [System.Text.Json.Serialization.JsonPropertyName("complaintOrderId")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long ComplaintOrderId { get; set; } + + /// + /// 获取或设置违规行为。 + /// + [Newtonsoft.Json.JsonProperty("illegalWording")] + [System.Text.Json.Serialization.JsonPropertyName("illegalWording")] + public string IllegalWording { get; set; } = default!; + + /// + /// 获取或设置扣分记录状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置扣除分数。 + /// + [Newtonsoft.Json.JsonProperty("minusScore")] + [System.Text.Json.Serialization.JsonPropertyName("minusScore")] + public int MinusScore { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("illegalTime")] + [System.Text.Json.Serialization.JsonPropertyName("illegalTime")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置更新时间戳。 + /// + [Newtonsoft.Json.JsonProperty("updateTime")] + [System.Text.Json.Serialization.JsonPropertyName("updateTime")] + public long UpdateTimestamp { get; set; } + } + } + + /// + /// 获取或设置记录列表。 + /// + [Newtonsoft.Json.JsonProperty("appealList")] + [System.Text.Json.Serialization.JsonPropertyName("appealList")] + public Types.Appeal[] AppealList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("totalNum")] + [System.Text.Json.Serialization.JsonPropertyName("totalNum")] + public int TotalCount { get; set; } + + /// + /// 获取或设置交易体验分。 + /// + [Newtonsoft.Json.JsonProperty("currentScore")] + [System.Text.Json.Serialization.JsonPropertyName("currentScore")] + public int CurrentScore { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.json new file mode 100644 index 00000000..2a833473 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetGuaranteeStatusResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "isActived": true +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.json new file mode 100644 index 00000000..8fa1998e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/WxaMpTrade/WxaApiWxaMpTradeGetPenaltyListResponse.json @@ -0,0 +1,27 @@ +{ + "appealList": [ + { + "illegalOrderId": "12345", + "complaintOrderId": "54321", + "illegalWording": "质量缺陷", + "status": 6, + "illegalTime": 1656658706, + "orderId": "payorder@567897862897364928374", + "minusScore": 2, + "updateTime": 1656907435 + }, + { + "illegalOrderId": "61577", + "complaintOrderId": "1360130", + "illegalWording": "骚扰/辱骂他人", + "status": 5, + "illegalTime": 1656658601, + "orderId": "payorder@_4200001450202207012836130249", + "minusScore": 20, + "updateTime": 1656659715 + } + ], + "currentScore": 55, + "totalNum": 2, + "errcode": 0 +}