From 535f035d07fa49241324b30579b7dc1ef6b92978 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 8 Jan 2024 21:57:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E4=B8=8D?= =?UTF-8?q?=E6=B4=BB=E8=B7=83=E5=95=86=E6=88=B7=E8=BA=AB=E4=BB=BD=E6=A0=B8?= =?UTF-8?q?=E5=AE=9E=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...TenpayClientExecuteComplianceExtensions.cs | 49 ++++++++++++++++ ...tiveMerchantIdentityVerificationRequest.cs | 15 +++++ ...iveMerchantIdentityVerificationResponse.cs | 15 +++++ ...tityVerificationByVerificationIdRequest.cs | 22 ++++++++ ...ityVerificationByVerificationIdResponse.cs | 56 +++++++++++++++++++ ...veMerchantIdentityVerificationRequest.json | 3 + ...eMerchantIdentityVerificationResponse.json | 3 + ...yVerificationByVerificationIdResponse.json | 8 +++ 8 files changed, 171 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteComplianceExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteComplianceExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteComplianceExtensions.cs new file mode 100644 index 00000000..5a8fb9e0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteComplianceExtensions.cs @@ -0,0 +1,49 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + public static class WechatTenpayClientExecuteComplianceExtensions + { + /// + /// 异步调用 [POST] /compliance/inactive-merchant-identity-verification/merchants 接口。 + /// REF: https://pay.weixin.qq.com/docs/partner/apis/inactive-merchant-identity-verification/inactive-mch-identity-verification/create-inactive-merchant-identity-verification.html + /// + /// + /// + /// + /// + public static async Task ExecuteCreateComplianceInactiveMerchantIdentityVerificationAsync(this WechatTenpayClient client, Models.CreateComplianceInactiveMerchantIdentityVerificationRequest 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, "compliance", "inactive-merchant-identity-verification", "merchants"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /compliance/inactive-merchant-identity-verification/merchants/{sub_mchid}/verifications/{verification_id} 接口。 + /// REF: https://pay.weixin.qq.com/docs/partner/apis/inactive-merchant-identity-verification/inactive-mch-identity-verification/query-inactive-merchant-identity-verification.html + /// + /// + /// + /// + /// + public static async Task ExecuteGetComplianceInactiveMerchantIdentityVerificationByVerificationIdAsync(this WechatTenpayClient client, Models.GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest 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, "compliance", "inactive-merchant-identity-verification", "merchants", request.SubMerchantId, "verifications", request.VerificationId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.cs new file mode 100644 index 00000000..ac9c74f6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /compliance/inactive-merchant-identity-verification/merchants 接口的请求。 + /// + public class CreateComplianceInactiveMerchantIdentityVerificationRequest : WechatTenpayRequest + { + /// + /// 获取或设置微信二级商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.cs new file mode 100644 index 00000000..f22ca9db --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /compliance/inactive-merchant-identity-verification/merchants 接口的响应。 + /// + public class CreateComplianceInactiveMerchantIdentityVerificationResponse : WechatTenpayResponse + { + /// + /// 获取或设置核实单号。 + /// + [Newtonsoft.Json.JsonProperty("verification_id")] + [System.Text.Json.Serialization.JsonPropertyName("verification_id")] + public string VerificationId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest.cs new file mode 100644 index 00000000..ded897e9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /compliance/inactive-merchant-identity-verification/merchants/{sub_mchid}/verifications/{verification_id} 接口的请求。 + /// + public class GetComplianceInactiveMerchantIdentityVerificationByVerificationIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置微信二级商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置核实单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string VerificationId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.cs new file mode 100644 index 00000000..94d9f666 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.cs @@ -0,0 +1,56 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /compliance/inactive-merchant-identity-verification/merchants/{sub_mchid}/verifications/{verification_id} 接口的响应。 + /// + public class GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse : WechatTenpayResponse + { + /// + /// 获取或设置微信二级商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置核实单号。 + /// + [Newtonsoft.Json.JsonProperty("verification_id")] + [System.Text.Json.Serialization.JsonPropertyName("verification_id")] + public string VerificationId { get; set; } = default!; + + /// + /// 获取或设置核实单状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置失败原因。 + /// + [Newtonsoft.Json.JsonProperty("fail_reason")] + [System.Text.Json.Serialization.JsonPropertyName("fail_reason")] + public string? FailReason { get; set; } + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置完成时间。 + /// + [Newtonsoft.Json.JsonProperty("finish_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("finish_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? FinishTime { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.json new file mode 100644 index 00000000..654b0957 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationRequest.json @@ -0,0 +1,3 @@ +{ + "sub_mchid": "1900000000" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.json new file mode 100644 index 00000000..d82be159 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/CreateComplianceInactiveMerchantIdentityVerificationResponse.json @@ -0,0 +1,3 @@ +{ + "verification_id": "28011678863778000000123124312" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.json new file mode 100644 index 00000000..acd28b1d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_Partner/Compliance/GetComplianceInactiveMerchantIdentityVerificationByVerificationIdResponse.json @@ -0,0 +1,8 @@ +{ + "sub_mchid": "1900000000", + "verification_id": "28011678863778000000123124312", + "state": "PROCESSING", + "fail_reason": "MATERIALS_ABNORMAL", + "create_time": "2020-01-01T00:00:00+08:00", + "finish_time": "2020-01-01T00:00:00+08:00" +}