diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs index aec40d22..61f27fce 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs @@ -4466,6 +4466,75 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /channels/ec/order/virtualnumber/applyagain 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECOrderVirtualNumberApplyAgainAsync(this WechatApiClient client, Models.ChannelsECOrderVirtualNumberApplyAgainRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "virtualtelnumber", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/order/virtualnumber/delay 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECOrderVirtualNumberDelayAsync(this WechatApiClient client, Models.ChannelsECOrderVirtualNumberDelayRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "virtualtelnumber", "delay") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /channels/ec/order/realnumber/apply 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECOrderRealNumberApplyAsync(this WechatApiClient client, Models.ChannelsECOrderRealNumberApplyRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "channels", "ec", "order", "realnumber", "apply") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + /// /// 异步调用 [POST] /channels/ec/order/freshinspect/submit 接口。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.cs new file mode 100644 index 00000000..d40bcea0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/realnumber/apply 接口的请求。 + /// + public class ChannelsECOrderRealNumberApplyRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public string OrderId { get; set; } = string.Empty; + + /// + /// 获取或设置申请原因。 + /// + [Newtonsoft.Json.JsonProperty("apply_type")] + [System.Text.Json.Serialization.JsonPropertyName("apply_type")] + public int ApplyType { get; set; } + + /// + /// 获取或设置申请原因。 + /// + [Newtonsoft.Json.JsonProperty("apply_reason")] + [System.Text.Json.Serialization.JsonPropertyName("apply_reason")] + public string ApplyReason { get; set; } = string.Empty; + + /// + /// 获取或设置申请原因图片 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("pic_media_ids")] + [System.Text.Json.Serialization.JsonPropertyName("pic_media_ids")] + public IList PictureMediaIdList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.cs new file mode 100644 index 00000000..627fe168 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/realnumber/apply 接口的响应。 + /// + public class ChannelsECOrderRealNumberApplyResponse : WechatApiResponse + { + /// + /// 获取或设置申请 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public string TaskId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.cs new file mode 100644 index 00000000..c5c224c6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/virtualnumber/applyagain 接口的请求。 + /// + public class ChannelsECOrderVirtualNumberApplyAgainRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public string OrderId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.cs new file mode 100644 index 00000000..daa3b41d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/virtualnumber/applyagain 接口的响应。 + /// + public class ChannelsECOrderVirtualNumberApplyAgainResponse : WechatApiResponse + { + /// + /// 获取或设置虚拟号码。 + /// + [Newtonsoft.Json.JsonProperty("virtual_number")] + [System.Text.Json.Serialization.JsonPropertyName("virtual_number")] + public string VirtualNumber { get; set; } = default!; + + /// + /// 获取或设置分机号。 + /// + [Newtonsoft.Json.JsonProperty("extension")] + [System.Text.Json.Serialization.JsonPropertyName("extension")] + public string? ExtensionNumber { get; set; } + + /// + /// 获取或设置剩余申请次数。 + /// + [Newtonsoft.Json.JsonProperty("apply_quota")] + [System.Text.Json.Serialization.JsonPropertyName("apply_quota")] + public int ApplyQuota { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.cs new file mode 100644 index 00000000..cc7722c5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/virtualnumber/delay 接口的请求。 + /// + public class ChannelsECOrderVirtualNumberDelayRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public string OrderId { get; set; } = string.Empty; + + /// + /// 获取或设置已延期次数。 + /// + [Newtonsoft.Json.JsonProperty("has_delay_times")] + [System.Text.Json.Serialization.JsonPropertyName("has_delay_times")] + public int DelayTimes { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.cs new file mode 100644 index 00000000..10f5f2c9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/order/virtualnumber/delay 接口的响应。 + /// + public class ChannelsECOrderVirtualNumberDelayResponse : WechatApiResponse + { + /// + /// 获取或设置虚拟号码过期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("expiration")] + [System.Text.Json.Serialization.JsonPropertyName("expiration")] + public long ExpireTimestamp { get; set; } + + /// + /// 获取或设置可延期次数。 + /// + [Newtonsoft.Json.JsonProperty("available_extend_num")] + [System.Text.Json.Serialization.JsonPropertyName("available_extend_num")] + public int AvailableDelayTimes { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.json new file mode 100644 index 00000000..0d0b3075 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyRequest.json @@ -0,0 +1,6 @@ +{ + "order_id": "37588946422056", + "apply_type": 1, + "apply_reason": "虚拟号打不通了", + "pic_media_ids": [ "avdtruEJVVysLdEIWbAi-tH_nKxww7wXp6-wDHDgWlEtTHHIZ6l98x4XABKROQphxw7i65Azvq0W9Zwf57V6Nw", "avdtruEJVVysLdEIWbAi-tH_nKxww7wXp6-wDHDgWlEtTHHIZ6l98x4XABKRvq0W9Zwf57V6Nw" ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.json new file mode 100644 index 00000000..a54c33a8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderRealNumberApplyResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "task_id": "245689763" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.json new file mode 100644 index 00000000..410ba593 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainRequest.json @@ -0,0 +1,3 @@ +{ + "order_id": "3730259898842881234" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.json new file mode 100644 index 00000000..a316a646 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberApplyAgainResponse.json @@ -0,0 +1,7 @@ +{ + "errcode": 0, + "errmsg": "ok", + "virtual_number": "13040205676", + "extension": "5123", + "apply_quota": 0 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.json new file mode 100644 index 00000000..35ec74d1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayRequest.json @@ -0,0 +1,4 @@ +{ + "order_id": "3730259898842881245", + "has_delay_times": 0 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.json new file mode 100644 index 00000000..62b49f0c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECOrder/ChannelsECOrderVirtualNumberDelayResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "expiration": 1755518097, + "available_extend_num": 3 +}