diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs
new file mode 100644
index 00000000..29c39437
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Flurl;
+using Flurl.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work
+{
+ public static class WechatWorkClientExecuteCgibinMiniAppPayExtensions
+ {
+ ///
+ /// 异步调用 [POST] /cgi-bin/miniapppay/upload_image 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/98972
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinMiniAppPayUploadImageAsync(this WechatWorkClient client, Models.CgibinMiniAppPayUploadImageRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ if (request.FileName == null)
+ request.FileName = Guid.NewGuid().ToString("N").ToLower() + ".png";
+
+ if (request.FileContentType == null)
+ request.FileContentType = Utilities.FileNameToContentTypeMapper.GetContentTypeForImage(request.FileName!) ?? "image/png";
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "miniapppay", "upload_image")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, formDataName: "media");
+ return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/miniapppay/apply_mch 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/98973
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinMiniAppPayApplyMechantAsync(this WechatWorkClient client, Models.CgibinMiniAppPayApplyMechantRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "miniapppay", "apply_mch")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/miniapppay/get_applyment_status 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/98974
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinMiniAppPayGetApplymentStatusAsync(this WechatWorkClient client, Models.CgibinMiniAppPayGetApplymentStatusRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "miniapppay", "get_applyment_status")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.cs
new file mode 100644
index 00000000..8de7c9ee
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.cs
@@ -0,0 +1,388 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/apply_mch 接口的请求。
+ ///
+ public class CgibinMiniAppPayApplyMechantRequest : WechatWorkRequest
+ {
+ public static class Types
+ {
+ public class BusinessLicense
+ {
+ ///
+ /// 获取或设置证书类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("cert_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("cert_type")]
+ public int CertificateType { get; set; }
+
+ ///
+ /// 获取或设置营业执照扫描件 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_license_copy_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_license_copy_open_wx_pay_media_id")]
+ public string BusinessLicensePictureMediaId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置营业执照编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_license_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_license_number")]
+ public string BusinessLicenseNumber { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("merchant_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("merchant_name")]
+ public string MerchantName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置法定代表人姓名。
+ ///
+ [Newtonsoft.Json.JsonProperty("legal_person")]
+ [System.Text.Json.Serialization.JsonPropertyName("legal_person")]
+ public string LegalPerson { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置注册地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("company_address")]
+ [System.Text.Json.Serialization.JsonPropertyName("company_address")]
+ public string? CompanyAddress { get; set; }
+
+ ///
+ /// 获取或设置营业期限开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_time_begin_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_time_begin_time")]
+ public string? BusinessTimeBeginDateString { get; set; }
+
+ ///
+ /// 获取或设置营业期限截止日期字符串(格式:yyyy-MM-dd / "长期")。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_time_end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_time_end_time")]
+ public string? BusinessTimeEndDateString { get; set; }
+ }
+
+ public class FinanceInstitution
+ {
+ ///
+ /// 获取或设置金融机构类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("finance_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("finance_type")]
+ public string FinanceType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置金融机构许可证图片 MediaId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("finance_license_pics_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("finance_license_pics_open_wx_pay_media_id")]
+ public IList FinanceLicensePictureMediaIdList { get; set; } = new List();
+ }
+
+ public class IdCard
+ {
+ ///
+ /// 获取或设置证件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_doc_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_doc_type")]
+ public int IdDocumentType { get; set; }
+
+ ///
+ /// 获取或设置证件人像面图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_copy_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_copy_open_wx_pay_media_id")]
+ public string IdCardFrontPictureMediaId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件国徽面图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_national_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_national_open_wx_pay_media_id")]
+ public string IdCardBackPictureMediaId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件姓名。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_name")]
+ public string IdCardName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件号码。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_number")]
+ public string IdCardNumber { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_address")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_address")]
+ public string? IdCardAddress { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件有效期开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_valid_time_begin")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_valid_time_begin")]
+ public string IdCardPeriodBeginDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置证件有效期截止日期字符串(格式:yyyy-MM-dd / "长期")。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_valid_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_valid_time")]
+ public string IdCardPeriodEndDateString { get; set; } = string.Empty;
+ }
+
+ public class UBO : IdCard
+ {
+ }
+
+ public class Contact
+ {
+ public static class Types
+ {
+ public class IdCard : CgibinMiniAppPayApplyMechantRequest.Types.IdCard
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置超级管理员类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact_type")]
+ public string ContactType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置业务办理授权函图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_authorization_letter_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_authorization_letter_open_wx_pay_media_id")]
+ public string? BusinessAuthorizationLetterPictureMediaId { get; set; }
+
+ ///
+ /// 获取或设置超级管理员证件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact_info")]
+ public Types.IdCard IdCard { get; set; } = new Types.IdCard();
+
+ ///
+ /// 获取或设置超级管理员手机号码。
+ ///
+ [Newtonsoft.Json.JsonProperty("mobile_phone")]
+ [System.Text.Json.Serialization.JsonPropertyName("mobile_phone")]
+ public string? MobileNumber { get; set; }
+
+ ///
+ /// 获取或设置超级管理员邮箱。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact_email")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact_email")]
+ public string? Email { get; set; }
+ }
+
+ public class BankAccount
+ {
+ public static class Types
+ {
+ public class BankCardSupplement
+ {
+ ///
+ /// 获取或设置结算证明图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("settlement_certificate_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("settlement_certificate_open_wx_pay_media_id")]
+ public string? SettlementCertificatePictureMediaId { get; set; }
+
+ ///
+ /// 获取或设置关系证明图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("relationship_certificate_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("relationship_certificate_open_wx_pay_media_id")]
+ public string? RelationshipCertificatePictureMediaId { get; set; }
+
+ ///
+ /// 获取或设置其他证明图片 MediaId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("other_certificate_open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("other_certificate_open_wx_pay_media_id")]
+ public IList? OtherCertificatePictureMediaIdList { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置账户类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("bank_account_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("bank_account_type")]
+ public int? BankAccountType { get; set; }
+
+ ///
+ /// 获取或设置开户银行。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_bank")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_bank")]
+ public string AccountBank { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置开户名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_name")]
+ public string AccountName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置银行账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_number")]
+ public string AccountNumber { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置开户银行省市编码。
+ ///
+ [Newtonsoft.Json.JsonProperty("bank_address_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("bank_address_code")]
+ public string BankAddressCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置开户银行全称(含支行)。
+ ///
+ [Newtonsoft.Json.JsonProperty("bank_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("bank_name")]
+ public string? BankName { get; set; }
+
+ ///
+ /// 获取或设置银行卡补充资料。
+ ///
+ [Newtonsoft.Json.JsonProperty("bank_card_supplement")]
+ [System.Text.Json.Serialization.JsonPropertyName("bank_card_supplement")]
+ public Types.BankCardSupplement? BankCardSupplement { get; set; }
+ }
+
+ public class Qualification
+ {
+ ///
+ /// 获取或设置图片 MediaId 列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("id")]
+ [System.Text.Json.Serialization.JsonPropertyName("id")]
+ public IList MediaId { get; set; } = new List();
+ }
+
+ public class AdditionalPicture : Qualification
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置业务申请编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_request_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
+ public string OutRequestNumber { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置主体类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("organization_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("organization_type")]
+ public int OrganizationType { get; set; }
+
+ ///
+ /// 获取或设置营业执照信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_license_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_license_info")]
+ public Types.BusinessLicense BusinessLicense { get; set; } = new Types.BusinessLicense();
+
+ ///
+ /// 获取或设置金融机构信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("finance_institution_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("finance_institution_info")]
+ public Types.FinanceInstitution? FinanceInstitution { get; set; }
+
+ ///
+ /// 获取或设置商户简称。
+ ///
+ [Newtonsoft.Json.JsonProperty("merchant_short_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("merchant_short_name")]
+ public string MerchantShortName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置法人证件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("id_card_info")]
+ public Types.IdCard IdCard { get; set; } = new Types.IdCard();
+
+ ///
+ /// 获取或设置法人是否为受益人。
+ ///
+ [Newtonsoft.Json.JsonProperty("owner")]
+ [System.Text.Json.Serialization.JsonPropertyName("owner")]
+ public bool? IsOwner { get; set; }
+
+ ///
+ /// 获取或设置受益人证件信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("ubo_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("ubo_info")]
+ public Types.UBO? UBO { get; set; }
+
+ ///
+ /// 获取或设置超级管理员信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("contact_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("contact_info")]
+ public Types.Contact Contact { get; set; } = new Types.Contact();
+
+ ///
+ /// 获取或设置结算账户信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_info")]
+ public Types.BankAccount BankAccount { get; set; } = new Types.BankAccount();
+
+ ///
+ /// 获取或设置经营范围 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_id")]
+ public int BusinessId { get; set; }
+
+ ///
+ /// 获取或设置特殊资质信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("qualifications")]
+ [System.Text.Json.Serialization.JsonPropertyName("qualifications")]
+ public Types.Qualification? Qualification { get; set; }
+
+ ///
+ /// 获取或设置补充材料信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("business_addition_pics")]
+ [System.Text.Json.Serialization.JsonPropertyName("business_addition_pics")]
+ public Types.AdditionalPicture? AdditionalPicture { get; set; }
+
+ ///
+ /// 获取或设置提现成员账号。
+ ///
+ [Newtonsoft.Json.JsonProperty("userid")]
+ [System.Text.Json.Serialization.JsonPropertyName("userid")]
+ public string? UserId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.cs
new file mode 100644
index 00000000..130c98cc
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/apply_mch 接口的响应。
+ ///
+ public class CgibinMiniAppPayApplyMechantResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置错误描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("error_description")]
+ [System.Text.Json.Serialization.JsonPropertyName("error_description")]
+ public string? ErrorDescription { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.cs
new file mode 100644
index 00000000..2c40c9b7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/get_applyment_status 接口的请求。
+ ///
+ public class CgibinMiniAppPayGetApplymentStatusRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置业务申请编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_request_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
+ public string OutRequestNumber { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.cs
new file mode 100644
index 00000000..915a868e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.cs
@@ -0,0 +1,177 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/get_applyment_status 接口的响应。
+ ///
+ public class CgibinMiniAppPayGetApplymentStatusResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Applyment
+ {
+ public static class Types
+ {
+ public class AuditDetail
+ {
+ ///
+ /// 获取或设置参数名称。
+ ///
+ [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; }
+ }
+
+ public class AccountValidation
+ {
+ ///
+ /// 获取或设置付款户名。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_name")]
+ public string AccountName { get; set; } = default!;
+
+ ///
+ /// 获取或设置付款卡号。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_no")]
+ public string AccountNumber { get; set; } = default!;
+
+ ///
+ /// 获取或设置收款开户银行。
+ ///
+ [Newtonsoft.Json.JsonProperty("destination_account_bank")]
+ [System.Text.Json.Serialization.JsonPropertyName("destination_account_bank")]
+ public string DestinationAccountBank { get; set; } = default!;
+
+ ///
+ /// 获取或设置收款户名。
+ ///
+ [Newtonsoft.Json.JsonProperty("destination_account_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("destination_account_name")]
+ public string DestinationAccountName { get; set; } = default!;
+
+ ///
+ /// 获取或设置收款卡号。
+ ///
+ [Newtonsoft.Json.JsonProperty("destination_account_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("destination_account_number")]
+ public string DestinationAccountNumber { get; set; } = default!;
+
+ ///
+ /// 获取或设置付款金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("pay_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("pay_amount")]
+ public int PayAmount { get; set; }
+
+ ///
+ /// 获取或设置备注信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("remark")]
+ public string Remark { get; set; } = default!;
+
+ ///
+ /// 获取或设置汇款截止时间字符串。
+ ///
+ [Newtonsoft.Json.JsonProperty("deadline")]
+ [System.Text.Json.Serialization.JsonPropertyName("deadline")]
+ public string DeadlineString { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置申请状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("applyment_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("applyment_state")]
+ public string ApplymentState { get; set; } = default!;
+
+ ///
+ /// 获取或设置申请状态描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("applyment_state_desc")]
+ [System.Text.Json.Serialization.JsonPropertyName("applyment_state_desc")]
+ public string ApplymentStateDescription { get; set; } = default!;
+
+ ///
+ /// 获取或设置签约状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("sign_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("sign_state")]
+ public string SignState { get; set; } = default!;
+
+ ///
+ /// 获取或设置签约链接。
+ ///
+ [Newtonsoft.Json.JsonProperty("sign_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("sign_url")]
+ public string? SignUrl { get; set; }
+
+ ///
+ /// 获取或设置驳回原因详细信息列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("audit_detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("audit_detail")]
+ public Types.AuditDetail[]? AuditDetailList { get; set; }
+
+ ///
+ /// 获取或设置汇款账户验证信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_validation")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_validation")]
+ public Types.AccountValidation? AccountValidation { get; set; }
+
+ ///
+ /// 获取或设置电商平台二级商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("sub_mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
+ public string? SubMerchantId { get; set; }
+
+ ///
+ /// 获取或设置法人验证链接。
+ ///
+ [Newtonsoft.Json.JsonProperty("legal_validation_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("legal_validation_url")]
+ public string? LegalPersonValidationUrl { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置申请单信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("status")]
+ [System.Text.Json.Serialization.JsonPropertyName("status")]
+ public Types.Applyment Applyment { get; set; } = default!;
+
+ ///
+ /// 获取或设置申请单当前所处阶段。
+ ///
+ [Newtonsoft.Json.JsonProperty("apply_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("apply_state")]
+ public int ApplyState { get; set; }
+
+ ///
+ /// 获取或设置当前签约阶段。
+ ///
+ [Newtonsoft.Json.JsonProperty("real_sign_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("real_sign_state")]
+ public int RealSignState { get; set; }
+
+ ///
+ /// 获取或设置驳回理由。
+ ///
+ [Newtonsoft.Json.JsonProperty("reject_reason")]
+ [System.Text.Json.Serialization.JsonPropertyName("reject_reason")]
+ public string? RejectReason { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageRequest.cs
new file mode 100644
index 00000000..10f24222
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageRequest.cs
@@ -0,0 +1,31 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/upload_image 接口的请求。
+ ///
+ public class CgibinMiniAppPayUploadImageRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置图片文件字节数组。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public byte[] FileBytes { get; set; } = Array.Empty();
+
+ ///
+ /// 获取或设置图片文件名。如果不指定将由系统自动生成。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string? FileName { get; set; }
+
+ ///
+ /// 获取或设置图片文件 Conent-Type。如果不指定将由系统自动生成。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string? FileContentType { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.cs
new file mode 100644
index 00000000..a0803020
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/miniapppay/upload_image 接口的响应。
+ ///
+ public class CgibinMiniAppPayUploadImageResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置图片 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_wx_pay_media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_wx_pay_media_id")]
+ public string MediaId { get; set; } = default!;
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.json
new file mode 100644
index 00000000..13af2258
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.json
@@ -0,0 +1,88 @@
+{
+ "out_request_no": "xxxxx",
+ "organization_type": 0,
+ "business_license_info": {
+ "cert_type": 2389,
+ "business_license_copy_open_wx_pay_media_id": "xxxxx",
+ "business_license_number": "xxxxx",
+ "merchant_name": "xxxxx",
+ "legal_person": "xxxxx",
+ "company_address": "xxxxx",
+ "business_time_begin_time": "xxxx-xx-xx",
+ "business_time_end_time": "xxxx-xx-xx"
+ },
+ "finance_institution_info": {
+ "finance_type": "xxxxx",
+ "finance_license_pics_open_wx_pay_media_id": [
+ "xxxxx",
+ "xxxxx"
+ ]
+ },
+ "merchant_short_name": "xxxxx",
+ "id_card_info": {
+ "id_card_copy_open_wx_pay_media_id": "xxxxx",
+ "id_card_national_open_wx_pay_media_id": "xxxxx",
+ "id_card_name": "xxxxx",
+ "id_card_number": "xxxxx",
+ "id_card_address": "xxxxx",
+ "id_card_valid_time_begin": "xxxx-xx-xx",
+ "id_card_valid_time": "xxxx-xx-xx",
+ "id_doc_type": 8
+ },
+ "owner": false,
+ "ubo_info": {
+ "id_card_copy_open_wx_pay_media_id": "xxxxx",
+ "id_card_national_open_wx_pay_media_id": "xxxxx",
+ "id_card_name": "xxxxx",
+ "id_card_number": "xxxxx",
+ "id_card_address": "xxxxx",
+ "id_card_valid_time_begin": "xxxx-xx-xx",
+ "id_card_valid_time": "xxxx-xx-xx",
+ "id_doc_type": 8
+ },
+ "contact_info": {
+ "contact_type": "66",
+ "contact_info": {
+ "id_card_copy_open_wx_pay_media_id": "xxxxx",
+ "id_card_national_open_wx_pay_media_id": "xxxxx",
+ "id_card_name": "xxxxx",
+ "id_card_number": "xxxxx",
+ "id_card_valid_time_begin": "xxxx-xx-xx",
+ "id_card_valid_time": "xxxx-xx-xx",
+ "id_doc_type": 8
+ },
+ "business_authorization_letter_open_wx_pay_media_id": "xxxxx",
+ "mobile_phone": "xxxxx",
+ "contact_email": "xxxxx"
+ },
+ "account_info": {
+ "bank_account_type": 74,
+ "account_bank": "xxxxx",
+ "account_name": "xxxxx",
+ "bank_address_code": "xxxxx",
+ "bank_name": "xxxxx",
+ "account_number": "xxxxx",
+ "bank_card_supplement": {
+ "settlement_certificate_open_wx_pay_media_id": "xxxxx",
+ "relationship_certificate_open_wx_pay_media_id": "xxxxx",
+ "other_certificate_open_wx_pay_media_id": [
+ "xxxxx",
+ "xxxxx"
+ ]
+ }
+ },
+ "business_id": 1,
+ "qualifications": {
+ "id": [
+ "xxxxx",
+ "xxxxx"
+ ]
+ },
+ "business_addition_pics": {
+ "id": [
+ "xxxxx",
+ "xxxxx"
+ ]
+ },
+ "userid": "xxxxx"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.json
new file mode 100644
index 00000000..79cb8c9c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "error_description": "参数错误"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.json
new file mode 100644
index 00000000..6b076f4b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.json
@@ -0,0 +1,3 @@
+{
+ "out_request_no": "xxxxx"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.json
new file mode 100644
index 00000000..f02e4bbd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.json
@@ -0,0 +1,35 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "status": {
+ "applyment_state": "xxxxx",
+ "applyment_state_desc": "xxxxx",
+ "sign_state": "xxxxx",
+ "sign_url": "xxxxx",
+ "sub_mchid": "xxxxx",
+ "audit_detail": [
+ {
+ "param_name": "xxxxx",
+ "reject_reason": "xxxxx"
+ },
+ {
+ "param_name": "xxxxx",
+ "reject_reason": "xxxxx"
+ }
+ ],
+ "account_validation": {
+ "account_name": "xxxxx",
+ "account_no": "xxxxx",
+ "pay_amount": 0,
+ "destination_account_number": "xxxxx",
+ "destination_account_name": "xxxxx",
+ "destination_account_bank": "xxxxx",
+ "remark": "xxxxx",
+ "deadline": "xxxxx"
+ },
+ "legal_validation_url": "xxxxx"
+ },
+ "apply_state": 1,
+ "real_sign_state": 2,
+ "reject_reason": "xxxxx"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.json
new file mode 100644
index 00000000..b294c8da
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayUploadImageResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "open_wx_pay_media_id": "NF_LnvqOch94lvxMB5fUWw8fbKvYrF_EcH239fgIjIkG_q4Q5kyzEGpJtddhyfZY"
+}