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()
{