diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index a509a211..72c1aa8c 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -1115,6 +1115,24 @@ - 查询赔付结果:`GetPlatformSolutionEcommerceMerchantTransferCompensationBillByOutBillNumber` / `GetPlatformSolutionEcommerceMerchantTransferCompensationBillByBillId` + - 账号托管模式(进件) + + - 提交申请单:`CreateEcommerceApplymentForSubmitAccountHosting` + + - 查询申请单状态:`GetEcommerceApplymentByOutRequestNumber` / `GetEcommerceApplymentByApplymentId` + + - 撤销申请单:`RevokeEcommerceApplymentByOutRequestNumber` / `RevokeEcommerceApplymentByApplymentId` + + - 平台代理签约核身:`CreateEcommerceApplymentForSubmitSignVerifyInfo` + + - 账号托管模式(修改超级管理员) + + - 提交申请单:`CreateMerchantAlterApplyMerchantContactAlterApplyment` + + - 查询申请单状态:`GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumber` / `GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentId` + + - 撤销申请单:`RevokeMerchantAlterApplyMerchantContactAlterApplyment` + - 代金券 - 创建代金券批次:`CreateMarketingFavorStock` diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteEcommerceExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteEcommerceExtensions.cs index 252c9a65..383a1b43 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteEcommerceExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteEcommerceExtensions.cs @@ -205,7 +205,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// 异步调用 [GET] /ecommerce/applyments/{applyment_id} 接口。 /// /// REF:
- /// + ///
+ /// ///
/// /// @@ -227,7 +228,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// 异步调用 [GET] /ecommerce/applyments/out-request-no/{out_request_no} 接口。 /// /// REF:
- /// + ///
+ /// ///
/// /// @@ -244,6 +246,94 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + + /// + /// 异步调用 [POST] /ecommerce/applyments/{applyment_id}/revoke 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteRevokeEcommerceApplymentByApplymentIdAsync(this WechatTenpayClient client, Models.RevokeEcommerceApplymentByApplymentIdRequest 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, "ecommerce", "applyments", request.ApplymentId.ToString(), "revoke"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /ecommerce/applyments/out-request-no/{out_request_no}/revoke 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteRevokeEcommerceApplymentByOutRequestNumberAsync(this WechatTenpayClient client, Models.RevokeEcommerceApplymentByOutRequestNumberRequest 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, "ecommerce", "applyments", "out-request-no", request.OutRequestNumber, "revoke"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /ecommerce/applyments/submit-account-hosting-applyment 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateEcommerceApplymentForSubmitAccountHostingAsync(this WechatTenpayClient client, Models.CreateEcommerceApplymentForSubmitAccountHostingRequest 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, "ecommerce", "applyments", "submit-account-hosting-applyment"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /ecommerce/applyments/submit-sign-verify-info 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateEcommerceApplymentForSubmitSignVerifyInfoAsync(this WechatTenpayClient client, Models.CreateEcommerceApplymentForSubmitSignVerifyInfoRequest 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, "ecommerce", "applyments", "submit-sign-verify-info"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } #endregion #region Bill diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantAlterApplyExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantAlterApplyExtensions.cs index 81afa7e4..464351be 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantAlterApplyExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantAlterApplyExtensions.cs @@ -8,6 +8,97 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 { public static class WechatTenpayClientExecuteMerchantAlterApplyExtensions { + #region MerchantContact + /// + /// 异步调用 [POST] /mchalterapply/mchcontactalterapplyment 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateMerchantAlterApplyMerchantContactAlterApplymentAsync(this WechatTenpayClient client, Models.CreateMerchantAlterApplyMerchantContactAlterApplymentRequest 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, "mchalterapply", "mchcontactalterapplyment"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /mchalterapply/mchcontactalterapplyment/{apply_id}/revoke 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteRevokeMerchantAlterApplyMerchantContactAlterApplymentAsync(this WechatTenpayClient client, Models.RevokeMerchantAlterApplyMerchantContactAlterApplymentRequest 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, "mchalterapply", "mchcontactalterapplyment", request.ApplymentId, "revoke"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /mchalterapply/mchcontactalterapplyment/merchant/{merchant_code}/out-request-no/{out_request_no} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberAsync(this WechatTenpayClient client, Models.GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberRequest 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.Get, "mchalterapply", "mchcontactalterapplyment", "merchant", request.SubMerchantId, "out-request-no", request.OutRequestNumber); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /mchalterapply/mchcontactalterapplyment/{apply_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdAsync(this WechatTenpayClient client, Models.GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdRequest 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.Get, "mchalterapply", "mchcontactalterapplyment", request.ApplymentId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region MerchantSubject /// /// 异步调用 [POST] /mchalterapply/mchsubjectalterapplyment 接口。 /// @@ -95,5 +186,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.cs new file mode 100644 index 00000000..2faed648 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.cs @@ -0,0 +1,189 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/submit-account-hosting-applyment 接口的请求。 + /// + [WechatTenpaySensitive] + public class CreateEcommerceApplymentForSubmitAccountHostingRequest : WechatTenpayRequest + { + public static class Types + { + public class BusinessLicense : CreateEcommerceApplymentRequest.Types.BusinessLicense + { + } + + public class FinanceInstitutionLicense : CreateEcommerceApplymentRequest.Types.FinanceInstitutionLicense + { + } + + public class IdCard : CreateEcommerceApplymentRequest.Types.IdCard + { + } + + public class IdDocument : CreateEcommerceApplymentRequest.Types.IdDocument + { + } + + public class Contact : CreateEcommerceApplymentRequest.Types.Contact + { + } + + public class UBO : CreateEcommerceApplymentRequest.Types.UBO + { + } + public class BankAccount : CreateEcommerceApplymentRequest.Types.BankAccount + { + } + + public class SaleScene : CreateEcommerceApplymentRequest.Types.SaleScene + { + } + + public class Settlement : CreateEcommerceApplymentRequest.Types.Settlement + { + } + } + + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置商户简称。 + /// + [Newtonsoft.Json.JsonProperty("merchant_shortname")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_shortname")] + public string MerchantShortName { get; set; } = string.Empty; + + /// + /// 获取或设置主体类型。 + /// + [Newtonsoft.Json.JsonProperty("organization_type")] + [System.Text.Json.Serialization.JsonPropertyName("organization_type")] + public string SubjectType { get; set; } = string.Empty; + + /// + /// 获取或设置是否是金融机构。 + /// + [Newtonsoft.Json.JsonProperty("finance_institution")] + [System.Text.Json.Serialization.JsonPropertyName("finance_institution")] + public bool? IsFinanceInstitution { get; set; } + + /// + /// 获取或设置营业执照信息。 + /// + [Newtonsoft.Json.JsonProperty("business_license_info")] + [System.Text.Json.Serialization.JsonPropertyName("business_license_info")] + public Types.BusinessLicense? BusinessLicense { get; set; } + + /// + /// 获取或设置金融机构许可证信息。 + /// + [Newtonsoft.Json.JsonProperty("finance_institution_info")] + [System.Text.Json.Serialization.JsonPropertyName("finance_institution_info")] + public Types.FinanceInstitutionLicense? FinanceInstitutionLicense { get; set; } + + /// + /// 获取或设置证件持有人类型。 + /// + [Newtonsoft.Json.JsonProperty("id_holder_type")] + [System.Text.Json.Serialization.JsonPropertyName("id_holder_type")] + public string? IdHolderType { get; set; } + + /// + /// 获取或设置法人证件类型。 + /// + [Newtonsoft.Json.JsonProperty("id_doc_type")] + [System.Text.Json.Serialization.JsonPropertyName("id_doc_type")] + public string IdentityType { get; set; } = string.Empty; + + /// + /// 获取或设置身份证信息。 + /// + [Newtonsoft.Json.JsonProperty("id_card_info")] + [System.Text.Json.Serialization.JsonPropertyName("id_card_info")] + public Types.IdCard? IdCard { get; set; } + + /// + /// 获取或设置其他类型证件信息。 + /// + [Newtonsoft.Json.JsonProperty("id_doc_info")] + [System.Text.Json.Serialization.JsonPropertyName("id_doc_info")] + public Types.IdDocument? IdDocument { get; set; } + + /// + /// 获取或设置法人代表授权函媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("authorize_letter_copy")] + [System.Text.Json.Serialization.JsonPropertyName("authorize_letter_copy")] + public string? AuthorizeLetterCopyMediaId { get; set; } + + /// + /// 获取或设置最终受益人列表。 + /// + [Newtonsoft.Json.JsonProperty("ubo_info_list")] + [System.Text.Json.Serialization.JsonPropertyName("ubo_info_list")] + public IList? UBOList { get; set; } + + /// + /// 获取或设置结算银行账户信息。 + /// + [Newtonsoft.Json.JsonProperty("account_info")] + [System.Text.Json.Serialization.JsonPropertyName("account_info")] + public Types.BankAccount BankAccount { get; set; } = new Types.BankAccount(); + + /// + /// 获取或设置超级管理员信息。 + /// + [Newtonsoft.Json.JsonProperty("contact_info")] + [System.Text.Json.Serialization.JsonPropertyName("contact_info")] + public Types.Contact Contact { get; set; } = new Types.Contact(); + + /// + /// 获取或设置销售场景信息。 + /// + [Newtonsoft.Json.JsonProperty("sales_scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("sales_scene_info")] + public Types.SaleScene SaleScene { get; set; } = new Types.SaleScene(); + + /// + /// 获取或设置结算规则信息。 + /// + [Newtonsoft.Json.JsonProperty("settlement_info")] + [System.Text.Json.Serialization.JsonPropertyName("settlement_info")] + public Types.Settlement? Settlement { get; set; } + + /// + /// 获取或设置特殊资质图片媒体文件标识 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("qualifications")] + [System.Text.Json.Serialization.JsonPropertyName("qualifications")] + public IList? QualificationPictureMediaIdList { get; set; } + + /// + /// 获取或设置补充材料媒体文件标识 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("business_addition_pics")] + [System.Text.Json.Serialization.JsonPropertyName("business_addition_pics")] + public IList? BusinessAdditionPictureMediaIdList { get; set; } + + /// + /// 获取或设置补充说明。 + /// + [Newtonsoft.Json.JsonProperty("business_addition_desc")] + [System.Text.Json.Serialization.JsonPropertyName("business_addition_desc")] + public string? BusinessAdditionDescription { get; set; } + + /// + /// 获取或设置是否走平台代理签约和代理核身入驻模式。 + /// + [Newtonsoft.Json.JsonProperty("proxy_sign_verify_mode")] + [System.Text.Json.Serialization.JsonPropertyName("proxy_sign_verify_mode")] + public bool IsProxySignVerifyMode { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.cs new file mode 100644 index 00000000..997fe538 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/submit-account-hosting-applyment 接口的响应。 + /// + public class CreateEcommerceApplymentForSubmitAccountHostingResponse : WechatTenpayResponse + { + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonProperty("applyment_id")] + [System.Text.Json.Serialization.JsonPropertyName("applyment_id")] + public long ApplymentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.cs new file mode 100644 index 00000000..4893020f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.cs @@ -0,0 +1,60 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/submit-sign-verify-info 接口的请求。 + /// + public class CreateEcommerceApplymentForSubmitSignVerifyInfoRequest : WechatTenpayRequest + { + public static class Types + { + public class ProxyVerifyIdentity + { + /// + /// 获取或设置核身方式。 + /// + [Newtonsoft.Json.JsonProperty("verify_identity_type")] + [System.Text.Json.Serialization.JsonPropertyName("verify_identity_type")] + public string VerifyIdentityType { get; set; } = string.Empty; + + /// + /// 获取或设置核身结果。 + /// + [Newtonsoft.Json.JsonProperty("verify_identity_result")] + [System.Text.Json.Serialization.JsonPropertyName("verify_identity_result")] + public bool VerifyIdentityResult { get; set; } + } + } + + /// + /// 获取或设置业务申请编号。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string? OutRequestNumber { get; set; } + + /// + /// 获取或设置申请单编号。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("applyment_id")] + [System.Text.Json.Serialization.JsonPropertyName("applyment_id")] + public long? ApplymentId { get; set; } + + /// + /// 获取或设置预签署微信支付协议时间。 + /// + [Newtonsoft.Json.JsonProperty("pre_sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pre_sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? PresignTime { get; set; } + + /// + /// 获取或设置平台代理核身信息。 + /// + [Newtonsoft.Json.JsonProperty("proxy_verify_identity_info")] + [System.Text.Json.Serialization.JsonPropertyName("proxy_verify_identity_info")] + public Types.ProxyVerifyIdentity? ProxyVerifyIdentity { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.cs new file mode 100644 index 00000000..2036d26c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/submit-sign-verify-info 接口的响应。 + /// + public class CreateEcommerceApplymentForSubmitSignVerifyInfoResponse : WechatTenpayResponse + { + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonProperty("applyment_id")] + [System.Text.Json.Serialization.JsonPropertyName("applyment_id")] + public long ApplymentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdRequest.cs new file mode 100644 index 00000000..6c162f21 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/{applyment_id}/revoke 接口的请求。 + /// + public class RevokeEcommerceApplymentByApplymentIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public long ApplymentId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.cs new file mode 100644 index 00000000..e0819e25 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/{applyment_id}/revoke 接口的响应。 + /// + public class RevokeEcommerceApplymentByApplymentIdResponse : RevokeEcommerceApplymentByOutRequestNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberRequest.cs new file mode 100644 index 00000000..b75b5439 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/out-request-no/{out_request_no}/revoke 接口的请求。 + /// + public class RevokeEcommerceApplymentByOutRequestNumberRequest : WechatTenpayRequest + { + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OutRequestNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.cs new file mode 100644 index 00000000..83212da9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /ecommerce/applyments/out-request-no/{out_request_no}/revoke 接口的响应。 + /// + public class RevokeEcommerceApplymentByOutRequestNumberResponse : WechatTenpayResponse + { + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonProperty("applyment_id")] + [System.Text.Json.Serialization.JsonPropertyName("applyment_id")] + public long ApplymentId { get; set; } + + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.cs new file mode 100644 index 00000000..9a1246c6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.cs @@ -0,0 +1,98 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /mchalterapply/mchcontactalterapplyment 接口的请求。 + /// + [WechatTenpaySensitive] + public class CreateMerchantAlterApplyMerchantContactAlterApplymentRequest : WechatTenpayRequest + { + public static class Types + { + public class Contact + { + /// + /// 获取或设置超级管理员姓名(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("contact_name")] + [System.Text.Json.Serialization.JsonPropertyName("contact_name")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string ContactName { get; set; } = string.Empty; + + /// + /// 获取或设置超级管理员证件类型。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_doc_type")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_doc_type")] + public string? IdentityType { get; set; } + + /// + /// 获取或设置超级管理员证件号码(需使用平台公钥/证书加密)。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_card_number")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_card_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? IdNumber { get; set; } + + /// + /// 获取或设置超级管理员证件正面照片媒体文件标识 ID。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_doc_copy")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_doc_copy")] + public string? IdFrontCopyMediaId { get; set; } + + /// + /// 获取或设置超级管理员证件背面照片媒体文件标识 ID。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_doc_copy_back")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_doc_copy_back")] + public string? IdBackCopyMediaId { get; set; } + + /// + /// 获取或设置超级管理员证件有效期开始日期字符串(格式:yyyy-MM-dd)。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_doc_period_begin")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_doc_period_begin")] + public string? IdPeriodBeginDateString { get; set; } + + /// + /// 获取或设置超级管理员证件有效期结束日期字符串(格式:yyyy-MM-dd / "长期")。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_doc_period_end")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_doc_period_end")] + public string? IdPeriodEndDateString { get; set; } + + /// + /// 获取或设置联系人手机号(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("mobile_phone")] + [System.Text.Json.Serialization.JsonPropertyName("mobile_phone")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string MobileNumber { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置特约商户号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_code")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置超级管理员信息。 + /// + [Newtonsoft.Json.JsonProperty("contact_info")] + [System.Text.Json.Serialization.JsonPropertyName("contact_info")] + public Types.Contact Contact { get; set; } = new Types.Contact(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentResponse.cs new file mode 100644 index 00000000..ec9bb65b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /mchalterapply/mchcontactalterapplyment 接口的响应。 + /// + public class CreateMerchantAlterApplyMerchantContactAlterApplymentResponse : WechatTenpayResponse + { + /// + /// 获取或设置申请单号。 + /// + [Newtonsoft.Json.JsonProperty("apply_id")] + [System.Text.Json.Serialization.JsonPropertyName("apply_id")] + public string ApplymentId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdRequest.cs new file mode 100644 index 00000000..2999a68a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /mchalterapply/mchcontactalterapplyment/{apply_id} 接口的请求。 + /// + public class GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置申请单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ApplymentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.cs new file mode 100644 index 00000000..320b1a74 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /mchalterapply/mchcontactalterapplyment/{apply_id} 接口的响应。 + /// + public class GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse : GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberRequest.cs new file mode 100644 index 00000000..24983433 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /mchalterapply/mchcontactalterapplyment/merchant/{merchant_code}/out-request-no/{out_request_no} 接口的请求。 + /// + public class GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberRequest : 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 OutRequestNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.cs new file mode 100644 index 00000000..61b02864 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.cs @@ -0,0 +1,70 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /mchalterapply/mchcontactalterapplyment/merchant/{merchant_code}/out-request-no/{out_request_no} 接口的响应。 + /// + public class GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse : WechatTenpayResponse + { + public static class Types + { + public class AuditRejectDetail + { + /// + /// 获取或设置参数名称。 + /// + [Newtonsoft.Json.JsonProperty("param_name")] + [System.Text.Json.Serialization.JsonPropertyName("param_name")] + public string ParameterName { get; set; } = default!; + + /// + /// 获取或设置驳回原因。 + /// + [Newtonsoft.Json.JsonProperty("reject_reason")] + [System.Text.Json.Serialization.JsonPropertyName("reject_reason")] + public string RejectReason { get; set; } = default!; + } + } + + /// + /// 获取或设置特约商户号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_code")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置业务申请编号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置申请单号。 + /// + [Newtonsoft.Json.JsonProperty("apply_id")] + [System.Text.Json.Serialization.JsonPropertyName("apply_id")] + public string ApplymentId { get; set; } = default!; + + /// + /// 获取或设置申请单状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string ApplymentState { get; set; } = default!; + + /// + /// 获取或设置驳回原因。 + /// + [Newtonsoft.Json.JsonProperty("audit_reject_reason")] + [System.Text.Json.Serialization.JsonPropertyName("audit_reject_reason")] + public string? AuditRejectReason { get; set; } + + /// + /// 获取或设置驳回原因详情列表。 + /// + [Newtonsoft.Json.JsonProperty("audit_reject_detail")] + [System.Text.Json.Serialization.JsonPropertyName("audit_reject_detail")] + public Types.AuditRejectDetail[]? AuditRejectDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentRequest.cs new file mode 100644 index 00000000..0ac1c41e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /mchalterapply/mchcontactalterapplyment/{apply_id}/revoke 接口的请求。 + /// + public class RevokeMerchantAlterApplyMerchantContactAlterApplymentRequest : WechatTenpayRequest + { + /// + /// 获取或设置申请单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ApplymentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.cs new file mode 100644 index 00000000..073d524b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /mchalterapply/mchcontactalterapplyment/{apply_id}/revoke 接口的响应。 + /// + public class RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse : WechatTenpayResponse + { + /// + /// 获取或设置申请单号。 + /// + [Newtonsoft.Json.JsonProperty("apply_id")] + [System.Text.Json.Serialization.JsonPropertyName("apply_id")] + public string ApplymentId { get; set; } = default!; + + /// + /// 获取或设置申请单状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string ApplymentState { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs similarity index 99% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs index 59ae0b6c..73a7f1a8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs @@ -62,7 +62,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public string? CompanyAddress { get; set; } } - public class FinanceInstitutionLicense : CreateApplyForSubjectApplymentRequest.Types.Subject.Types.FinanceInstitutionLicense + public class FinanceInstitutionLicense : CreateApplyForSubMerchantApplymentRequest.Types.Subject.Types.FinanceInstitutionLicense { } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/README.md b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/README.md index ee1d0240..d259b520 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/README.md +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/README.md @@ -9,7 +9,7 @@ ### 【功能特性】 - 基于微信支付 v3 版 API 封装。 -- 支持商户(直连模式)、合作伙伴(服务商、渠道商、机构、银行模式)两种角色模式。 +- 支持普通商户(直连)、合作伙伴(服务商、渠道商、机构、银行)两种接入模式。\ - 请求时自动生成签名(支持国际 RSA 算法或国密 SM 算法),无需开发者手动干预。 - 提供了微信支付所需的 AES、RSA、SM2/SM3/SM4、SHA-256 等算法工具类。 - 提供了调起支付签名、解析响应敏感数据、解析回调通知事件敏感数据等扩展方法。 diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.json new file mode 100644 index 00000000..493dd300 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingRequest.json @@ -0,0 +1,85 @@ +{ + "out_request_no": "APPLYMENT_00000000001", + "organization_type": "2", + "finance_institution": true, + "business_license_info": { + "cert_type": "CERTIFICATE_TYPE_2388", + "business_license_copy": "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", + "business_license_number": "123456789012345678", + "merchant_name": "腾讯科技有限公司", + "legal_person": "张三", + "company_address": "深圳南山区科苑路", + "business_time": "[\\\"2014-01-01\\\",\\\"长期\\\"]" + }, + "finance_institution_info": { + "finance_type": "BANK_AGENT", + "finance_license_pics": [ + "example_finance_license_pics" + ] + }, + "id_holder_type": "LEGAL", + "id_doc_type": "IDENTIFICATION_TYPE_MACAO", + "authorize_letter_copy": "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", + "id_card_info": { + "id_card_copy": "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", + "id_card_national": "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", + "id_card_name": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", + "id_card_number": "AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw==", + "id_card_valid_time_begin": "2019-06-06", + "id_card_valid_time": "2026-06-06" + }, + "id_doc_info": { + "id_doc_copy": "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", + "id_doc_copy_back": "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4", + "id_doc_name": "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", + "id_doc_number": "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", + "doc_period_begin": "2019-06-06", + "doc_period_end": "2020-01-02" + }, + "ubo_info_list": [ + { + "ubo_id_doc_type": "IDENTIFICATION_TYPE_MAINLAND_IDCARD", + "ubo_id_doc_copy": "jTpGmxUXqRTvDujqhThn4ReFxikqJ5YW6zFQ", + "ubo_id_doc_copy_back": "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", + "ubo_id_doc_name": "AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw==", + "ubo_id_doc_number": "AOZdYGISxo4y44/Ug4P4TG5xzchG/5IL9DBd+Z0zZXkw==", + "ubo_id_doc_address": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", + "ubo_id_doc_period_begin": "2019-06-06", + "ubo_id_doc_period_end": "2026-06-06" + } + ], + "account_info": { + "bank_account_type": "75", + "account_bank": "工商银行", + "account_name": "AOZdYGISxo4y44/UgZ69bdu9X+tfMUJ9dl+LetjM45/zMbrYu+wWZ8gn4CTdo+D/m9MrPg+V4sm73oxqdQu/hj7aWyDl4GQtPXVdaztB9jVbVZh3QFzV+BEmytMNQp9dt1uWJktlfdDdLR3AMWyMB377xd+m9bSr/ioDTzagEcGe+vLYiKrzcroQv3OR0p3ppFYoQ3IfYeU/04S4t9rNFL+kyblK2FCCqQ11NdbbHoCrJc7NV4oASq6ZFonjTtgjjgKsadIKHXtb3JZKGZjduGdtkRJJp0/0eow96uY1Pk7Rq79Jtt7+I8juwEc4P4TG5xzchG/5IL9DBd+Z0zZXkw==", + "bank_branch_id": "402713354941", + "bank_name": "施秉县农村信用合作联社城关信用社", + "account_number": "d+xT+MQCvrLHUVDWv/8MR/dB7TkXM2YYZlokmXzFsWs35NXUot7C0NcxIrUF5FnxqCJHkNgKtxa6RxEYyba1+VBRLnqKG2fSy/Y5qDN08Ej9zHCwJjq52Wg1VG8MRugli9YMI1fI83KGBxhuXyemgS/hqFKsfYGiOkJqjTUpgY5VqjtL2N4l4z11T0ECB/aSyVXUysOFGLVfSrUxMPZy6jWWYGvT1+4P633f+R+ki1gT4WF/2KxZOYmli385ZgVhcR30mr4/G3HBcxi13zp7FnEeOsLlvBmI1PHN4C7Rsu3WL8sPndjXTd75kPkyjqnoMRrEEaYQE8ZRGYoeorwC+w==" + }, + "contact_info": { + "contact_type": "65", + "contact_name": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", + "contact_id_doc_type": "IDENTIFICATION_TYPE_MACAO", + "contact_id_card_number": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", + "contact_id_doc_copy": "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", + "contact_id_doc_copy_back": "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", + "contact_id_doc_period_begin": "2019-06-06", + "contact_id_doc_period_end": "2026-06-06", + "mobile_phone": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiR/cJiCrZxnAqi+pjeKIEdkwzXRAI7FUhrfPK3SNjaBTEu9GmsugMIA9r3x887Q+ODuC8HH2nzAn7NGpE/e3yiHgWhk0ps5k5DP/2qIdGdONoDzZelrxCl/NWWNUyB93K9F+jC1JX2IMttdY+aQ6zBlw0xnOiNW6Hzy7UtC+xriudjD5APomty7/mYNxLMpRSvWKIjOv/69bDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==" + }, + "sales_scene_info": { + "store_name": "爱烧烤", + "store_url": "http://www.qq.com", + "store_qr_code": "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", + "mini_program_sub_appid": "wxa123344545577" + }, + "settlement_info": { + "settlement_id": 719, + "qualification_type": "零售批发/生活娱乐/其他" + }, + "merchant_shortname": "腾讯", + "qualifications": [ "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4" ], + "business_addition_pics": [ "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ", "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4" ], + "business_addition_desc": "特殊情况,说明原因", + "proxy_sign_verify_mode": true +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.json new file mode 100644 index 00000000..cf6b4591 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitAccountHostingResponse.json @@ -0,0 +1,4 @@ +{ + "applyment_id": 2000002124775691, + "out_request_no": "APPLYMENT_00000000001" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.json new file mode 100644 index 00000000..4fbb9383 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoRequest.json @@ -0,0 +1,9 @@ +{ + "out_request_no": "1900013511_10000", + "applyment_id": 2000002124775691, + "pre_sign_time": "2018-06-08T10:34:56+08:00", + "proxy_verify_identity_info": { + "verify_identity_type": "VERIFY_IDENTITY_TYPE_FACE_TO_FACE", + "verify_identity_result": true + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.json new file mode 100644 index 00000000..06c444e9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/CreateEcommerceApplymentForSubmitSignVerifyInfoResponse.json @@ -0,0 +1,3 @@ +{ + "applyment_id": 2000002124775691 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.json new file mode 100644 index 00000000..cf6b4591 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByApplymentIdResponse.json @@ -0,0 +1,4 @@ +{ + "applyment_id": 2000002124775691, + "out_request_no": "APPLYMENT_00000000001" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.json new file mode 100644 index 00000000..cf6b4591 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/Ecommerce/Applyments/RevokeEcommerceApplymentByOutRequestNumberResponse.json @@ -0,0 +1,4 @@ +{ + "applyment_id": 2000002124775691, + "out_request_no": "APPLYMENT_00000000001" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.json new file mode 100644 index 00000000..992dad1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.json @@ -0,0 +1,14 @@ +{ + "merchant_code": "2492185251", + "out_request_no": "1900013511_10000", + "contact_info": { + "contact_name": "pVd1HJ6zyvPedzGaV+X3IdGdbDnuC4Eelw/wDa4SzfeespQO/0kjiwfqdfg==", + "contact_id_doc_type": "IDENTIFICATION_TYPE_IDCARD", + "contact_id_card_number": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHDnuC4EL5Kz4jBHLiCyOb+tI0m2qhZ9evAM+Jv1z0NVa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==", + "contact_id_doc_copy": "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", + "contact_id_doc_copy_back": "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ", + "contact_id_doc_period_begin": "2019-06-06", + "contact_id_doc_period_end": "2026-06-06", + "mobile_phone": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPROvwia4ibL+F6mfjbzQIzfb3HHLEjZ4YiNWWNeespQO/0kjiwfqdfg==" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/CreateMerchantAlterApplyMerchantContactAlterApplymentResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.json new file mode 100644 index 00000000..87cc842f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByApplymentIdResponse.json @@ -0,0 +1,13 @@ +{ + "apply_id": "20220617143306000013906025001", + "out_request_no": "1900013511_10000", + "merchant_code": "1900006491", + "state": "APPLYMENT_STATE_AUDITING", + "audit_reject_reason": "身份证背面识别失败,请上传更清晰的身份证图片。", + "audit_reject_detail": [ + { + "param_name": "ubo_info_list.card_number_0", + "reject_reason": "身份证背面识别失败,请上传更清晰的身份证图片。" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.json new file mode 100644 index 00000000..87cc842f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/GetMerchantAlterApplyMerchantContactAlterApplymentByOutRequestNumberResponse.json @@ -0,0 +1,13 @@ +{ + "apply_id": "20220617143306000013906025001", + "out_request_no": "1900013511_10000", + "merchant_code": "1900006491", + "state": "APPLYMENT_STATE_AUDITING", + "audit_reject_reason": "身份证背面识别失败,请上传更清晰的身份证图片。", + "audit_reject_detail": [ + { + "param_name": "ubo_info_list.card_number_0", + "reject_reason": "身份证背面识别失败,请上传更清晰的身份证图片。" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.json new file mode 100644 index 00000000..f69f96fc --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantContact/RevokeMerchantAlterApplyMerchantContactAlterApplymentResponse.json @@ -0,0 +1,4 @@ +{ + "apply_id": "20220617143306000013906025001", + "state": "APPLYMENT_STATE_AUDITING" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json new file mode 100644 index 00000000..cf644311 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/CreateMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json @@ -0,0 +1,3 @@ +{ + "apply_id": "20220617143306000013906025001" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByApplymentIdResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/GetMerchantAlterApplyMerchantSubjectAlterApplymentByOutRequestNumberResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MerchantAlterApply/MerchantSubject/RevokeMerchantAlterApplyMerchantSubjectAlterApplymentResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs index ac1ed794..c858b673 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs @@ -1324,6 +1324,68 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests } } + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /mchalterapply/mchcontactalterapplyment)")] + public async Task TestEncryptRequestSensitiveProperty_CreateMerchantAlterApplyMerchantContactAlterApplymentRequest() + { + static Models.CreateMerchantAlterApplyMerchantContactAlterApplymentRequest GenerateMockRequestModel() + { + return new Models.CreateMerchantAlterApplyMerchantContactAlterApplymentRequest() + { + Contact = new Models.CreateMerchantAlterApplyMerchantContactAlterApplymentRequest.Types.Contact() + { + ContactName = MOCK_PLAIN_STR, + IdNumber = MOCK_PLAIN_STR, + MobileNumber = MOCK_PLAIN_STR + } + }; + } + + static void AssertMockRequestModel(Models.CreateMerchantAlterApplyMerchantContactAlterApplymentRequest request, Func decryptor) + { + Assert.NotEqual(MOCK_PLAIN_STR, request.Contact!.ContactName!); + Assert.NotEqual(MOCK_PLAIN_STR, request.Contact!.IdNumber!); + Assert.NotEqual(MOCK_PLAIN_STR, request.Contact!.MobileNumber!); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.Contact!.ContactName!)); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.Contact!.IdNumber!)); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.Contact!.MobileNumber!)); + Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseRSA(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteCreateMerchantAlterApplyMerchantContactAlterApplymentAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseSM2(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteCreateMerchantAlterApplyMerchantContactAlterApplymentAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + } + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /mchalterapply/mchsubjectalterapplyment)")] public async Task TestEncryptRequestSensitiveProperty_CreateMerchantAlterApplyMerchantSubjectAlterApplymentRequest() {