diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayEntrustResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayEntrustResource.cs
index 97039ac9..33cba196 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayEntrustResource.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayEntrustResource.cs
@@ -3,8 +3,8 @@ using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
{
///
- /// 表示委托代扣 ENTRUST.SIGN 通知的数据。
- /// 表示委托代扣 ENTRUST.TERMINATE 通知的数据。
+ /// 表示委托代扣 ENTRUST.SIGN (仅限直连商户)通知的数据。
+ /// 表示委托代扣 ENTRUST.TERMINATE (仅限直连商户)通知的数据。
///
public class PAPayEntrustResource : WechatTenpayEvent.Types.IDecryptedResource
{
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayInsuranceEntrustResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayInsuranceEntrustResource.cs
new file mode 100644
index 00000000..06227376
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PAPay/PAPayInsuranceEntrustResource.cs
@@ -0,0 +1,106 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
+{
+ ///
+ /// 表示保险委托代扣 INSURANCE_ENTRUST.SIGN 通知的数据。
+ /// 表示保险委托代扣 INSURANCE_ENTRUST.TERMINATE 通知的数据。
+ ///
+ public class PAPayInsuranceEntrustResource : WechatTenpayEvent.Types.IDecryptedResource
+ {
+ public static class Types
+ {
+ public class Termination : Models.GetPAPayInsuranceSignContractByOutContractCodeResponse.Types.Termination
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置微信商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("mchid")]
+ public string MerchantId { get; set; } = default!;
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("plan_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("plan_id")]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_contract_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_contract_code")]
+ public string OutContractCode { get; set; } = default!;
+
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_id")]
+ public string ContractId { get; set; } = default!;
+
+ ///
+ /// 获取或设置协议状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_state")]
+ public string ContractState { get; set; } = default!;
+
+ ///
+ /// 获取或设置签署时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_signed_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_signed_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
+ public DateTimeOffset? SignTime { get; set; }
+
+ ///
+ /// 获取或设置到期时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_expired_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_expired_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
+ public DateTimeOffset? ExpireTime { get; set; }
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置被保人姓名。
+ ///
+ [Newtonsoft.Json.JsonProperty("insured_display_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("insured_display_name")]
+ public string InsuredDisplayAccount { get; set; } = default!;
+
+ ///
+ /// 获取或设置商户侧用户标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_user_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_user_code")]
+ public string? OutUserCode { get; set; }
+
+ ///
+ /// 获取或设置解约信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_terminate_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_terminate_info")]
+ public Types.Termination? Termination { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs
index f0978aa7..ea94bfa0 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs
@@ -12,7 +12,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
///
///
///
- ///
+ ///
+ ///
///
///
public class TransactionResource : WechatTenpayEvent.Types.IDecryptedResource
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePAPayExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePAPayExtensions.cs
index bd1d6d9e..4315e13a 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePAPayExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePAPayExtensions.cs
@@ -33,6 +33,236 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
+ #region InsurancePayPolicyPeriods
+ ///
+ /// 异步调用 [GET] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id} 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteGetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdAsync(this WechatTenpayClient client, Models.GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdRequest 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, "papay", "insurance-pay", "policy-periods", "contract-id", request.ContractId, "policy-period-id", request.PolicyPeriodId);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id}/schedule 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCreatePAPayInsurancePayPolicyPeriodScheduleAsync(this WechatTenpayClient client, Models.CreatePAPayInsurancePayPolicyPeriodScheduleRequest 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, "papay", "insurance-pay", "policy-periods", "contract-id", request.ContractId, "policy-period-id", request.PolicyPeriodId, "schedule");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
+ #region InsuranceSign
+ ///
+ /// 异步调用 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/jsapi 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecutePresignPAPayInsuranceSignContractEntrustJsapiAsync(this WechatTenpayClient client, Models.PresignPAPayInsuranceSignContractEntrustJsapiRequest 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, "papay", "insurance-sign", "contracts", "pre-entrust-sign", "jsapi");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/mini-program 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecutePresignPAPayInsuranceSignContractEntrustMiniProgramAsync(this WechatTenpayClient client, Models.PresignPAPayInsuranceSignContractEntrustMiniProgramRequest 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, "papay", "insurance-sign", "contracts", "pre-entrust-sign", "mini-program");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/h5 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecutePresignPAPayInsuranceSignContractEntrustH5Async(this WechatTenpayClient client, Models.PresignPAPayInsuranceSignContractEntrustH5Request 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, "papay", "insurance-sign", "contracts", "pre-entrust-sign", "h5");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
+ #region InsuranceSignContracts
+ ///
+ /// 异步调用 [GET] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteGetPAPayInsuranceSignContractByOutContractCodeAsync(this WechatTenpayClient client, Models.GetPAPayInsuranceSignContractByOutContractCodeRequest 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, "papay", "insurance-sign", "contracts", "plan-id", request.PlanId, "out-contract-code", request.OutContractCode);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code}/terminate 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteTerminatePAPayInsuranceSignContractAsync(this WechatTenpayClient client, Models.TerminatePAPayInsuranceSignContractRequest 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, "papay", "insurance-sign", "contracts", "plan-id", request.PlanId, "out-contract-code", request.OutContractCode, "terminate");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [GET] /papay/insurance-sign/policy_periods/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteQueryPAPayInsuranceSignPolicyPeriodsAsync(this WechatTenpayClient client, Models.QueryPAPayInsuranceSignPolicyPeriodsRequest 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, "papay", "insurance-sign", "policy_periods", "plan-id", request.PlanId, "out-contract-code", request.OutContractCode)
+ .SetQueryParam("limit", request.Limit)
+ .SetQueryParam("offset", request.Offset);
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// 异步调用 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/contract-id/{contract_id}/renew 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteRenewPAPayInsuranceSignContractAsync(this WechatTenpayClient client, Models.RenewPAPayInsuranceSignContractRequest 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, "papay", "insurance-sign", "contracts", "plan-id", request.PlanId, "contract-id", request.ContractId, "renew");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
+ #region InsurancePayTransactions
+ ///
+ /// 异步调用 [POST] /papay/insurance-pay/transactions/apply 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteApplyPAPayInsurancePayTransactionAsync(this WechatTenpayClient client, Models.ApplyPAPayInsurancePayTransactionRequest 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, "papay", "insurance-pay", "transactions", "apply");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+
#region PaySchedules
///
/// 异步调用 [GET] /papay/pay/schedules/contract-id/{contract_id} 接口。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.cs
new file mode 100644
index 00000000..119ccf39
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.cs
@@ -0,0 +1,43 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id}/schedule 接口的请求。
+ ///
+ public class CreatePAPayInsurancePayPolicyPeriodScheduleRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.Amount
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ContractId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保单的扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public int PolicyPeriodId { get; set; }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置预约的金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("scheduled_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("scheduled_amount")]
+ public Types.Amount ScheduledAmount { get; set; } = new Types.Amount();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.cs
new file mode 100644
index 00000000..e183c05f
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id}/schedule 接口的响应。
+ ///
+ public class CreatePAPayInsurancePayPolicyPeriodScheduleResponse : GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdRequest.cs
new file mode 100644
index 00000000..ede9ed2b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id} 接口的请求。
+ ///
+ public class GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdRequest : WechatTenpayRequest
+ {
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ContractId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保单的扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public int PolicyPeriodId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.cs
new file mode 100644
index 00000000..623a8282
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.cs
@@ -0,0 +1,77 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-pay/policy-periods/contract-id/{contract_id}/policy-period-id/{policy_period_id} 接口的响应。
+ ///
+ public class GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse : WechatTenpayResponse
+ {
+ public static class Types
+ {
+ public class Amount
+ {
+ ///
+ /// 获取或设置金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int Total { get; set; }
+
+ ///
+ /// 获取或设置货币类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("currency")]
+ [System.Text.Json.Serialization.JsonPropertyName("currency")]
+ public string? Currency { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置保单的扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_id")]
+ public int PolicyPeriodId { get; set; } = default!;
+
+ ///
+ /// 获取或设置当前扣费周期的状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_state")]
+ public string PolicyPeriodState { get; set; } = default!;
+
+ ///
+ /// 获取或设置可扣费开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_start_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_start_date")]
+ public string? DeductStartDateString { get; set; }
+
+ ///
+ /// 获取或设置可扣费结束日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_end_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_end_date")]
+ public string? DeductEndDateString { get; set; }
+
+ ///
+ /// 获取或设置已预约的扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("scheduled_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("scheduled_amount")]
+ public Types.Amount? ScheduledAmount { get; set; }
+
+ ///
+ /// 获取或设置实际扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_amount")]
+ public Types.Amount? DeductAmount { get; set; }
+
+ ///
+ /// 获取或设置实际扣费日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_date")]
+ public string? DeductDateString { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.cs
new file mode 100644
index 00000000..048622ee
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.cs
@@ -0,0 +1,78 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-pay/transactions/apply 接口的请求。
+ ///
+ public class ApplyPAPayInsurancePayTransactionRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.Amount
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
+ public string OutTradeNumber { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商品描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("description")]
+ [System.Text.Json.Serialization.JsonPropertyName("description")]
+ public string Description { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_id")]
+ public string ContractId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保单的扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_id")]
+ public int PolicyPeriodId { get; set; }
+
+ ///
+ /// 获取或设置回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("transaction_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("transaction_notify_url")]
+ public string NotifyUrl { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置订单优惠标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("goods_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("goods_tag")]
+ public string? GoodsTag { get; set; }
+
+ ///
+ /// 获取或设置附加数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("attach")]
+ [System.Text.Json.Serialization.JsonPropertyName("attach")]
+ public string? Attachment { get; set; }
+
+ ///
+ /// 获取或设置金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("amount")]
+ public Types.Amount Amount { get; set; } = new Types.Amount();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.cs
new file mode 100644
index 00000000..94b5a24a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-pay/transactions/apply 接口的响应。
+ ///
+ public class ApplyPAPayInsurancePayTransactionResponse : WechatTenpayResponse
+ {
+ public static class Types
+ {
+ public class Amount : GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.Types.Amount
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
+ public string OutTradeNumber { get; set; } = default!;
+
+ ///
+ /// 获取或设置扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("amount")]
+ public Types.Amount Amount { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.cs
new file mode 100644
index 00000000..94f7abd9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.cs
@@ -0,0 +1,175 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/h5 接口的请求。
+ ///
+ public class PresignPAPayInsuranceSignContractEntrustH5Request : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.Amount
+ {
+ }
+
+ public class PolicyPeriod : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.PolicyPeriod
+ {
+ }
+
+ public class RealIdentity : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.RealIdentity
+ {
+ }
+
+ public class JumpControl
+ {
+ ///
+ /// 获取或设置跳转应用的 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("jump_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("jump_appid")]
+ public string JumpAppId { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("plan_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("plan_id")]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_contract_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_contract_code")]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置被保人的展示名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("insured_display_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("insured_display_name")]
+ public string InsuredDisplayAccount { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置签约结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_notify_url")]
+ public string ContractNotifyUrl { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户侧用户标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_user_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_user_code")]
+ public string? OutUserCode { get; set; }
+
+ ///
+ /// 获取或设置保险保单的开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_start_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_start_date")]
+ public string PolicyStartDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的结束日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_end_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_end_date")]
+ public string PolicyEndDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的扣费周期列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_periods")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_periods")]
+ public IList? PolicyPeriodList { get; set; }
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
+ public string? OutTradeNumber { get; set; }
+
+ ///
+ /// 获取或设置商品描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("description")]
+ [System.Text.Json.Serialization.JsonPropertyName("description")]
+ public string? Description { get; set; }
+
+ ///
+ /// 获取或设置扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("amount")]
+ public Types.Amount? Amount { get; set; }
+
+ ///
+ /// 获取或设置支付结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("transaction_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("transaction_notify_url")]
+ public string? TransactionNotifyUrl { get; set; }
+
+ ///
+ /// 获取或设置订单优惠标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("goods_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("goods_tag")]
+ public string? GoodsTag { get; set; }
+
+ ///
+ /// 获取或设置附加数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("attach")]
+ [System.Text.Json.Serialization.JsonPropertyName("attach")]
+ public string? Attachment { get; set; }
+
+ ///
+ /// 获取或设置是否自动续保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_insure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_insure")]
+ public bool? CanAutoInsure { get; set; }
+
+ ///
+ /// 获取或设置是否自动重新投保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_reinsure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_reinsure")]
+ public bool? CanAutoReinsure { get; set; }
+
+ ///
+ /// 获取或设置用户实名信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("real_identity")]
+ [System.Text.Json.Serialization.JsonPropertyName("real_identity")]
+ public Types.RealIdentity? RealIdentity { get; set; }
+
+ ///
+ /// 获取或设置跳转控制信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("jump_control")]
+ [System.Text.Json.Serialization.JsonPropertyName("jump_control")]
+ public Types.JumpControl? JumpControl { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.cs
new file mode 100644
index 00000000..c6cd4f14
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/h5 接口的响应。
+ ///
+ public class PresignPAPayInsuranceSignContractEntrustH5Response : WechatTenpayResponse
+ {
+ ///
+ /// 获取或设置跳转 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("redirect_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("redirect_url")]
+ public string RedirectUrl { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.cs
new file mode 100644
index 00000000..c6e5b4bb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.cs
@@ -0,0 +1,217 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/jsapi 接口的请求。
+ ///
+ [WechatTenpaySensitive]
+ public class PresignPAPayInsuranceSignContractEntrustJsapiRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount
+ {
+ ///
+ /// 获取或设置金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("total")]
+ [System.Text.Json.Serialization.JsonPropertyName("total")]
+ public int Total { get; set; }
+
+ ///
+ /// 获取或设置货币类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("currency")]
+ [System.Text.Json.Serialization.JsonPropertyName("currency")]
+ public string? Currency { get; set; }
+ }
+
+ public class PolicyPeriod
+ {
+ ///
+ /// 获取或设置保险扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_id")]
+ public int PolicyPeriodId { get; set; }
+
+ ///
+ /// 获取或设置保险扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("estimated_deduct_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("estimated_deduct_date")]
+ public string EstimatedDeductDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置预计扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("estimated_deduct_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("estimated_deduct_amount")]
+ public Types.Amount EstimatedDeductAmount { get; set; } = new Types.Amount();
+ }
+
+ public class RealIdentity
+ {
+ ///
+ /// 获取或设置实名验证类型。
+ /// 默认值:"ID_CARD"
+ ///
+ [Newtonsoft.Json.JsonProperty("identity_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("identity_type")]
+ public string IdentityType { get; set; } = "ID_CARD";
+
+ ///
+ /// 获取或设置真实姓名(需使用平台公钥/证书加密)。
+ ///
+ [Newtonsoft.Json.JsonProperty("real_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("real_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 RealName { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置身份证号码(需使用平台公钥/证书加密)。
+ ///
+ [Newtonsoft.Json.JsonProperty("id_card_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("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 IdCardNumber { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("plan_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("plan_id")]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_contract_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_contract_code")]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置被保人的展示名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("insured_display_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("insured_display_name")]
+ public string InsuredDisplayAccount { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置签约结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_notify_url")]
+ public string ContractNotifyUrl { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户侧用户标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_user_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_user_code")]
+ public string? OutUserCode { get; set; }
+
+ ///
+ /// 获取或设置保险保单的开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_start_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_start_date")]
+ public string PolicyStartDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的结束日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_end_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_end_date")]
+ public string PolicyEndDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的扣费周期列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_periods")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_periods")]
+ public IList? PolicyPeriodList { get; set; }
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
+ public string? OutTradeNumber { get; set; }
+
+ ///
+ /// 获取或设置商品描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("description")]
+ [System.Text.Json.Serialization.JsonPropertyName("description")]
+ public string? Description { get; set; }
+
+ ///
+ /// 获取或设置扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("amount")]
+ public Types.Amount? Amount { get; set; }
+
+ ///
+ /// 获取或设置支付结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("transaction_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("transaction_notify_url")]
+ public string? TransactionNotifyUrl { get; set; }
+
+ ///
+ /// 获取或设置订单优惠标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("goods_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("goods_tag")]
+ public string? GoodsTag { get; set; }
+
+ ///
+ /// 获取或设置附加数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("attach")]
+ [System.Text.Json.Serialization.JsonPropertyName("attach")]
+ public string? Attachment { get; set; }
+
+ ///
+ /// 获取或设置是否自动续保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_insure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_insure")]
+ public bool? CanAutoInsure { get; set; }
+
+ ///
+ /// 获取或设置是否自动重新投保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_reinsure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_reinsure")]
+ public bool? CanAutoReinsure { get; set; }
+
+ ///
+ /// 获取或设置用户实名信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("real_identity")]
+ [System.Text.Json.Serialization.JsonPropertyName("real_identity")]
+ public Types.RealIdentity? RealIdentity { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.cs
new file mode 100644
index 00000000..827e8606
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/jsapi 接口的响应。
+ ///
+ public class PresignPAPayInsuranceSignContractEntrustJsapiResponse : WechatTenpayResponse
+ {
+ ///
+ /// 获取或设置跳转 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("redirect_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("redirect_url")]
+ public string RedirectUrl { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.cs
new file mode 100644
index 00000000..f816a0bd
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.cs
@@ -0,0 +1,158 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/mini-program 接口的请求。
+ ///
+ public class PresignPAPayInsuranceSignContractEntrustMiniProgramRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.Amount
+ {
+ }
+
+ public class PolicyPeriod : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.PolicyPeriod
+ {
+ }
+
+ public class RealIdentity : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.RealIdentity
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("plan_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("plan_id")]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_contract_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_contract_code")]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置被保人的展示名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("insured_display_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("insured_display_name")]
+ public string InsuredDisplayAccount { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置签约结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_notify_url")]
+ public string ContractNotifyUrl { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户侧用户标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_user_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_user_code")]
+ public string? OutUserCode { get; set; }
+
+ ///
+ /// 获取或设置保险保单的开始日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_start_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_start_date")]
+ public string PolicyStartDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的结束日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_end_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_end_date")]
+ public string PolicyEndDateString { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的扣费周期列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_periods")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_periods")]
+ public IList? PolicyPeriodList { get; set; }
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
+ public string? OutTradeNumber { get; set; }
+
+ ///
+ /// 获取或设置商品描述。
+ ///
+ [Newtonsoft.Json.JsonProperty("description")]
+ [System.Text.Json.Serialization.JsonPropertyName("description")]
+ public string? Description { get; set; }
+
+ ///
+ /// 获取或设置扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("amount")]
+ public Types.Amount? Amount { get; set; }
+
+ ///
+ /// 获取或设置支付结果回调通知地址。
+ ///
+ [Newtonsoft.Json.JsonProperty("transaction_notify_url")]
+ [System.Text.Json.Serialization.JsonPropertyName("transaction_notify_url")]
+ public string? TransactionNotifyUrl { get; set; }
+
+ ///
+ /// 获取或设置订单优惠标记。
+ ///
+ [Newtonsoft.Json.JsonProperty("goods_tag")]
+ [System.Text.Json.Serialization.JsonPropertyName("goods_tag")]
+ public string? GoodsTag { get; set; }
+
+ ///
+ /// 获取或设置附加数据。
+ ///
+ [Newtonsoft.Json.JsonProperty("attach")]
+ [System.Text.Json.Serialization.JsonPropertyName("attach")]
+ public string? Attachment { get; set; }
+
+ ///
+ /// 获取或设置是否自动续保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_insure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_insure")]
+ public bool? CanAutoInsure { get; set; }
+
+ ///
+ /// 获取或设置是否自动重新投保。
+ ///
+ [Newtonsoft.Json.JsonProperty("can_auto_reinsure")]
+ [System.Text.Json.Serialization.JsonPropertyName("can_auto_reinsure")]
+ public bool? CanAutoReinsure { get; set; }
+
+ ///
+ /// 获取或设置用户实名信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("real_identity")]
+ [System.Text.Json.Serialization.JsonPropertyName("real_identity")]
+ public Types.RealIdentity? RealIdentity { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.cs
new file mode 100644
index 00000000..a737f841
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/pre-entrust-sign/mini-program 接口的响应。
+ ///
+ public class PresignPAPayInsuranceSignContractEntrustMiniProgramResponse : WechatTenpayResponse
+ {
+ ///
+ /// 获取或设置预签约会话 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("pre_entrustweb_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("pre_entrustweb_id")]
+ public string PresignSessionId { get; set; } = default!;
+
+ ///
+ /// 获取或设置跳转小程序 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("redirect_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("redirect_appid")]
+ public string RedirectAppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置跳转小程序页面路径。
+ ///
+ [Newtonsoft.Json.JsonProperty("redirect_path")]
+ [System.Text.Json.Serialization.JsonPropertyName("redirect_path")]
+ public string RedirectPagePath { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeRequest.cs
new file mode 100644
index 00000000..ab3c29bb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口的请求。
+ ///
+ public class GetPAPayInsuranceSignContractByOutContractCodeRequest : WechatTenpayRequest
+ {
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public long PlanId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.cs
new file mode 100644
index 00000000..a76869fb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.cs
@@ -0,0 +1,127 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口的响应。
+ ///
+ public class GetPAPayInsuranceSignContractByOutContractCodeResponse : WechatTenpayResponse
+ {
+ public static class Types
+ {
+ public class Termination
+ {
+ ///
+ /// 获取或设置解约时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_terminated_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_terminated_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
+ public DateTimeOffset TerminateTime { get; set; }
+
+ ///
+ /// 获取或设置解约方式。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_termination_mode")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_termination_mode")]
+ public string TerminationMode { get; set; } = default!;
+
+ ///
+ /// 获取或设置解约备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_termination_remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_termination_remark")]
+ public string TerminationRemark { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置微信商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("mchid")]
+ public string MerchantId { get; set; } = default!;
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = default!;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("plan_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("plan_id")]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_contract_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_contract_code")]
+ public string OutContractCode { get; set; } = default!;
+
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_id")]
+ public string ContractId { get; set; } = default!;
+
+ ///
+ /// 获取或设置协议状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_state")]
+ public string ContractState { get; set; } = default!;
+
+ ///
+ /// 获取或设置签署时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_signed_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_signed_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
+ public DateTimeOffset? SignTime { get; set; }
+
+ ///
+ /// 获取或设置到期时间。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_expired_time")]
+ [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_expired_time")]
+ [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
+ public DateTimeOffset? ExpireTime { get; set; }
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置被保人姓名。
+ ///
+ [Newtonsoft.Json.JsonProperty("insured_display_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("insured_display_name")]
+ public string InsuredDisplayAccount { get; set; } = default!;
+
+ ///
+ /// 获取或设置商户侧用户标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("out_user_code")]
+ [System.Text.Json.Serialization.JsonPropertyName("out_user_code")]
+ public string? OutUserCode { get; set; }
+
+ ///
+ /// 获取或设置解约信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_terminate_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_terminate_info")]
+ public Types.Termination? Termination { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsRequest.cs
new file mode 100644
index 00000000..3ada0627
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsRequest.cs
@@ -0,0 +1,37 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-sign/policy_periods/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口的请求。
+ ///
+ public class QueryPAPayInsuranceSignPolicyPeriodsRequest : WechatTenpayRequest
+ {
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置分页大小。
+ /// 默认值:20
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public int Limit { get; set; } = 20;
+
+ ///
+ /// 获取或设置分页开始位置。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public int Offset { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.cs
new file mode 100644
index 00000000..2e6c3f06
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.cs
@@ -0,0 +1,99 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [GET] /papay/insurance-sign/policy_periods/plan-id/{plan_id}/out-contract-code/{out_contract_code} 接口的响应。
+ ///
+ public class QueryPAPayInsuranceSignPolicyPeriodsResponse : WechatTenpayResponse
+ {
+ public static class Types
+ {
+ public class PolicyPeriod
+ {
+ public static class Types
+ {
+ public class Amount : GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.Types.Amount
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置保险扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_id")]
+ public int PolicyPeriodId { get; set; }
+
+ ///
+ /// 获取或设置保险扣费周期编号。
+ ///
+ [Newtonsoft.Json.JsonProperty("estimated_deduct_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("estimated_deduct_date")]
+ public string EstimatedDeductDateString { get; set; } = default!;
+
+ ///
+ /// 获取或设置预计扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("estimated_deduct_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("estimated_deduct_amount")]
+ public Types.Amount EstimatedDeductAmount { get; set; } = default!;
+
+ ///
+ /// 获取或设置扣费周期预约状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_period_state")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_period_state")]
+ public string PolicyPeriodState { get; set; } = default!;
+
+ ///
+ /// 获取或设置已预约的扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("scheduled_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("scheduled_amount")]
+ public Types.Amount? ScheduledAmount { get; set; }
+
+ ///
+ /// 获取或设置实际扣费金额信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_amount")]
+ public Types.Amount? DeductAmount { get; set; }
+
+ ///
+ /// 获取或设置实际扣费日期字符串(格式:yyyy-MM-dd)。
+ ///
+ [Newtonsoft.Json.JsonProperty("deduct_date")]
+ [System.Text.Json.Serialization.JsonPropertyName("deduct_date")]
+ public string? DeductDateString { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置微信商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public Types.PolicyPeriod[] PolicyPeriodList { get; set; } = default!;
+
+ ///
+ /// 获取或设置记录总数。
+ ///
+ [Newtonsoft.Json.JsonProperty("total_count")]
+ [System.Text.Json.Serialization.JsonPropertyName("total_count")]
+ [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
+ public int TotalCount { get; set; }
+
+ ///
+ /// 获取或设置分页大小。
+ ///
+ [Newtonsoft.Json.JsonProperty("limit")]
+ [System.Text.Json.Serialization.JsonPropertyName("limit")]
+ public int Limit { get; set; }
+
+ ///
+ /// 获取或设置分页开始位置。
+ ///
+ [Newtonsoft.Json.JsonProperty("offset")]
+ [System.Text.Json.Serialization.JsonPropertyName("offset")]
+ public int Offset { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.cs
new file mode 100644
index 00000000..fcf29a0d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.cs
@@ -0,0 +1,49 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/contract-id/{contract_id}/renew 接口的请求。
+ ///
+ public class RenewPAPayInsuranceSignContractRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class Amount : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.Amount
+ {
+ }
+
+ public class PolicyPeriod : PresignPAPayInsuranceSignContractEntrustJsapiRequest.Types.PolicyPeriod
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置委托代扣签约协议 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string ContractId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置保险保单的扣费周期列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("policy_periods")]
+ [System.Text.Json.Serialization.JsonPropertyName("policy_periods")]
+ public IList? PolicyPeriodList { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractResponse.cs
new file mode 100644
index 00000000..a122582a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/contract-id/{contract_id}/renew 接口的响应。
+ ///
+ public class RenewPAPayInsuranceSignContractResponse : WechatTenpayResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.cs
new file mode 100644
index 00000000..98dae381
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code}/terminate 接口的请求。
+ ///
+ public class TerminatePAPayInsuranceSignContractRequest : WechatTenpayRequest
+ {
+ ///
+ /// 获取或设置商户签约协议号。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public string OutContractCode { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置模板 ID。
+ ///
+ [Newtonsoft.Json.JsonIgnore]
+ [System.Text.Json.Serialization.JsonIgnore]
+ public long PlanId { get; set; }
+
+ ///
+ /// 获取或设置解约备注。
+ ///
+ [Newtonsoft.Json.JsonProperty("contract_termination_remark")]
+ [System.Text.Json.Serialization.JsonPropertyName("contract_termination_remark")]
+ public string TerminationRemark { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.cs
new file mode 100644
index 00000000..78082d28
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /papay/insurance-sign/contracts/plan-id/{plan_id}/out-contract-code/{out_contract_code}/terminate 接口的响应。
+ ///
+ public class TerminatePAPayInsuranceSignContractResponse : GetPAPayInsuranceSignContractByOutContractCodeResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/PaySchedules/CreatePAPayPaySchedulesContractScheduleRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/PaySchedules/CreatePAPayPaySchedulesContractScheduleRequest.cs
index f59ff283..399cadfd 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/PaySchedules/CreatePAPayPaySchedulesContractScheduleRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PAPay/PaySchedules/CreatePAPayPaySchedulesContractScheduleRequest.cs
@@ -31,6 +31,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
///
[Newtonsoft.Json.JsonProperty("schedule_amount")]
[System.Text.Json.Serialization.JsonPropertyName("schedule_amount")]
- public Types.Amount ScheduleAmount { get; set; } = new Types.Amount();
+ public Types.Amount ScheduledAmount { get; set; } = new Types.Amount();
}
}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PAPay/PAPayInsuranceEntrustResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PAPay/PAPayInsuranceEntrustResource.json
new file mode 100644
index 00000000..6b000ba6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PAPay/PAPayInsuranceEntrustResource.json
@@ -0,0 +1,13 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "contract_expired_time": "2021-09-10T13:29:35+08:00",
+ "contract_id": "123124412412423431",
+ "contract_signed_time": "2020-09-10T13:29:35+08:00",
+ "contract_state": "SIGNED",
+ "insured_display_name": "*明",
+ "mchid": "1900000109",
+ "openid": "o-MYE42l80oelYMDE34nYD456Xoy",
+ "out_contract_code": "wxwtdk20200910100000",
+ "out_user_code": "用户A",
+ "plan_id": 12535
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.json
new file mode 100644
index 00000000..c5ce3cce
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleRequest.json
@@ -0,0 +1,7 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "scheduled_amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.json
new file mode 100644
index 00000000..6a454028
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/CreatePAPayInsurancePayPolicyPeriodScheduleResponse.json
@@ -0,0 +1,15 @@
+{
+ "policy_period_id": 1,
+ "policy_period_state": "NO_SCHEDULED",
+ "deduct_start_date": "2019-11-22",
+ "deduct_end_date": "2019-11-22",
+ "scheduled_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_date": "2019-11-22"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.json
new file mode 100644
index 00000000..6a454028
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayPolicyPeriods/GetPAPayInsurancePayPolicyPeriodByPolicyPeriodIdResponse.json
@@ -0,0 +1,15 @@
+{
+ "policy_period_id": 1,
+ "policy_period_state": "NO_SCHEDULED",
+ "deduct_start_date": "2019-11-22",
+ "deduct_end_date": "2019-11-22",
+ "scheduled_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_date": "2019-11-22"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.json
new file mode 100644
index 00000000..0507d0e8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionRequest.json
@@ -0,0 +1,14 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "out_trade_no": "1217752501201407033233368018",
+ "description": "Image形象店-深圳腾大-QQ公仔",
+ "transaction_notify_url": "https://www.qq.com/",
+ "contract_id": "123124412412423431",
+ "policy_period_id": 1,
+ "amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "goods_tag": "DISCOUNTS",
+ "attach": "自定义数据"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.json
new file mode 100644
index 00000000..b00f2f76
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsurancePayTransactions/ApplyPAPayInsurancePayTransactionResponse.json
@@ -0,0 +1,7 @@
+{
+ "out_trade_no": "1217752501201407033233368018",
+ "amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.json
new file mode 100644
index 00000000..8612f324
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Request.json
@@ -0,0 +1,40 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "openid": "oYobu0MVnQfWpSMOYJz2AHPG_gQw",
+ "plan_id": 12535,
+ "out_contract_code": "wxwtdk20200910100000",
+ "insured_display_name": "*明",
+ "contract_notify_url": "https://yourapp.com/notify",
+ "policy_start_date": "2019-11-22",
+ "policy_end_date": "2020-11-22",
+ "policy_periods": [
+ {
+ "policy_period_id": 1,
+ "estimated_deduct_date": "2019-11-22",
+ "estimated_deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+ }
+ ],
+ "amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "out_trade_no": "1217752501201407033233368018",
+ "description": "Image形象店-深圳腾大-QQ公仔",
+ "transaction_notify_url": "https://www.qq.com/",
+ "out_user_code": "用户昵称",
+ "goods_tag": "DISCOUNTS",
+ "attach": "自定义数据",
+ "can_auto_insure": true,
+ "can_auto_reinsure": false,
+ "real_identity": {
+ "real_name": "OEimkKuua8igpd+0YDgqF2Z61leeGD7x87j3PhzsBhAK+/lltXENEOf6ThgV7niChzIpDujIpefE2JFZCJFurf6IV5rxNWBbjFeHYyUGAbf8zDx2Wbi7y7BGjApltIhsxAk+LhQ648Kcw4FMidL/79Gh3nHUfSGX+nEl3gtNi24Ilt8Vu0MMXhA1suDzlpbNDDrYnAhb1eeMziSu8jW7lDouwJXjGh9zgFPUuTxfOpteJIZSy8HWR+QPugdXBNouEezDPN8kojKbJHRtjaBJY3n3agkXShI5yvnc+DCYM+4VgNWZpTx9D0w3KAylJPKAAluYMzj4VXzZurjpruDg2A==",
+ "id_card_number": "1axtI9EZUr0343c89xQznxau+cRWPKP4YhVAoj/mEoNSgJh0nvuqQJ1cdXZHGUzyBjOtuLeVq+OLOaWGUScSM8+QLBk+kOK8QyR1TUo44YrmIl5KkjWLa3dpNJt+nIkpN1e7yr2mxO9LGqJdeQXDCHvOiUTK6lnAVxWY0ZrF4OQFmHqOCvqTaF3VxD5a8AT3gxyayF04IJSfPV0NheZvWFBHIUeRPf1/WQmJ/wXu2MfAuESB0dLBglT85i0Rws2GopaTUNiBuJBHdg01bR+YZvSYv8EJPyxuyYVh5bg/wSotNTYnVp13OUzMBKu25yOW5+RnunesXwq9ogPnSj7EDA==",
+ "identity_type": "ID_CARD"
+ },
+ "jump_control": {
+ "jump_appid": "wxd678efh567hg6787"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.json
new file mode 100644
index 00000000..9649bd25
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustH5Response.json
@@ -0,0 +1,3 @@
+{
+ "redirect_url": "https://www.xxx.com/xxxtemplate?session_id=wx12334"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.json
new file mode 100644
index 00000000..b4ed0089
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiRequest.json
@@ -0,0 +1,37 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "openid": "oYobu0MVnQfWpSMOYJz2AHPG_gQw",
+ "plan_id": 12535,
+ "out_contract_code": "wxwtdk20200910100000",
+ "insured_display_name": "*明",
+ "contract_notify_url": "https://yourapp.com/notify",
+ "policy_start_date": "2019-11-22",
+ "policy_end_date": "2020-11-22",
+ "policy_periods": [
+ {
+ "policy_period_id": 1,
+ "estimated_deduct_date": "2019-11-22",
+ "estimated_deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+ }
+ ],
+ "amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "out_trade_no": "1217752501201407033233368018",
+ "description": "Image形象店-深圳腾大-QQ公仔",
+ "transaction_notify_url": "https://www.qq.com/",
+ "out_user_code": "用户昵称",
+ "goods_tag": "DISCOUNTS",
+ "attach": "自定义数据",
+ "can_auto_insure": true,
+ "can_auto_reinsure": false,
+ "real_identity": {
+ "real_name": "OEimkKuua8igpd+0YDgqF2Z61leeGD7x87j3PhzsBhAK+/lltXENEOf6ThgV7niChzIpDujIpefE2JFZCJFurf6IV5rxNWBbjFeHYyUGAbf8zDx2Wbi7y7BGjApltIhsxAk+LhQ648Kcw4FMidL/79Gh3nHUfSGX+nEl3gtNi24Ilt8Vu0MMXhA1suDzlpbNDDrYnAhb1eeMziSu8jW7lDouwJXjGh9zgFPUuTxfOpteJIZSy8HWR+QPugdXBNouEezDPN8kojKbJHRtjaBJY3n3agkXShI5yvnc+DCYM+4VgNWZpTx9D0w3KAylJPKAAluYMzj4VXzZurjpruDg2A==",
+ "id_card_number": "1axtI9EZUr0343c89xQznxau+cRWPKP4YhVAoj/mEoNSgJh0nvuqQJ1cdXZHGUzyBjOtuLeVq+OLOaWGUScSM8+QLBk+kOK8QyR1TUo44YrmIl5KkjWLa3dpNJt+nIkpN1e7yr2mxO9LGqJdeQXDCHvOiUTK6lnAVxWY0ZrF4OQFmHqOCvqTaF3VxD5a8AT3gxyayF04IJSfPV0NheZvWFBHIUeRPf1/WQmJ/wXu2MfAuESB0dLBglT85i0Rws2GopaTUNiBuJBHdg01bR+YZvSYv8EJPyxuyYVh5bg/wSotNTYnVp13OUzMBKu25yOW5+RnunesXwq9ogPnSj7EDA==",
+ "identity_type": "ID_CARD"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.json
new file mode 100644
index 00000000..c2b3f00c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustJsapiResponse.json
@@ -0,0 +1,3 @@
+{
+ "redirect_url": "https://www.xxx.com?pre_entrust_id=wx12334"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.json
new file mode 100644
index 00000000..b4ed0089
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramRequest.json
@@ -0,0 +1,37 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "openid": "oYobu0MVnQfWpSMOYJz2AHPG_gQw",
+ "plan_id": 12535,
+ "out_contract_code": "wxwtdk20200910100000",
+ "insured_display_name": "*明",
+ "contract_notify_url": "https://yourapp.com/notify",
+ "policy_start_date": "2019-11-22",
+ "policy_end_date": "2020-11-22",
+ "policy_periods": [
+ {
+ "policy_period_id": 1,
+ "estimated_deduct_date": "2019-11-22",
+ "estimated_deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+ }
+ ],
+ "amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "out_trade_no": "1217752501201407033233368018",
+ "description": "Image形象店-深圳腾大-QQ公仔",
+ "transaction_notify_url": "https://www.qq.com/",
+ "out_user_code": "用户昵称",
+ "goods_tag": "DISCOUNTS",
+ "attach": "自定义数据",
+ "can_auto_insure": true,
+ "can_auto_reinsure": false,
+ "real_identity": {
+ "real_name": "OEimkKuua8igpd+0YDgqF2Z61leeGD7x87j3PhzsBhAK+/lltXENEOf6ThgV7niChzIpDujIpefE2JFZCJFurf6IV5rxNWBbjFeHYyUGAbf8zDx2Wbi7y7BGjApltIhsxAk+LhQ648Kcw4FMidL/79Gh3nHUfSGX+nEl3gtNi24Ilt8Vu0MMXhA1suDzlpbNDDrYnAhb1eeMziSu8jW7lDouwJXjGh9zgFPUuTxfOpteJIZSy8HWR+QPugdXBNouEezDPN8kojKbJHRtjaBJY3n3agkXShI5yvnc+DCYM+4VgNWZpTx9D0w3KAylJPKAAluYMzj4VXzZurjpruDg2A==",
+ "id_card_number": "1axtI9EZUr0343c89xQznxau+cRWPKP4YhVAoj/mEoNSgJh0nvuqQJ1cdXZHGUzyBjOtuLeVq+OLOaWGUScSM8+QLBk+kOK8QyR1TUo44YrmIl5KkjWLa3dpNJt+nIkpN1e7yr2mxO9LGqJdeQXDCHvOiUTK6lnAVxWY0ZrF4OQFmHqOCvqTaF3VxD5a8AT3gxyayF04IJSfPV0NheZvWFBHIUeRPf1/WQmJ/wXu2MfAuESB0dLBglT85i0Rws2GopaTUNiBuJBHdg01bR+YZvSYv8EJPyxuyYVh5bg/wSotNTYnVp13OUzMBKu25yOW5+RnunesXwq9ogPnSj7EDA==",
+ "identity_type": "ID_CARD"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.json
new file mode 100644
index 00000000..baa0ec81
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSign/PresignPAPayInsuranceSignContractEntrustMiniProgramResponse.json
@@ -0,0 +1,5 @@
+{
+ "pre_entrustweb_id": "5778aadY9nltAsZzXixCkFIGYnV2V",
+ "redirect_appid": "wxbd687630cd02ce1d",
+ "redirect_path": "pages/PwdExemptContract/index"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.json
new file mode 100644
index 00000000..6e44d657
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/GetPAPayInsuranceSignContractByOutContractCodeResponse.json
@@ -0,0 +1,18 @@
+{
+ "mchid": "1900000109",
+ "contract_id": "123124412412423431",
+ "appid": "wxd678efh567hg6787",
+ "plan_id": 12535,
+ "out_contract_code": "wxwtdk20200910100000",
+ "insured_display_name": "*明",
+ "contract_state": "SIGNED",
+ "contract_signed_time": "2020-09-10T13:29:35+08:00",
+ "contract_expired_time": "2021-09-10T13:29:35+08:00",
+ "contract_terminate_info": {
+ "contract_termination_mode": "USER_TERMINATE",
+ "contract_terminated_time": "2020-10-10T13:29:35+08:00",
+ "contract_termination_remark": "用户解约"
+ },
+ "openid": "o-MYE42l80oelYMDE34nYD456Xoy",
+ "out_user_code": "用户A"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.json
new file mode 100644
index 00000000..fe2d48f4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/QueryPAPayInsuranceSignPolicyPeriodsResponse.json
@@ -0,0 +1,25 @@
+{
+ "data": [
+ {
+ "policy_period_id": 1,
+ "estimated_deduct_date": "2019-11-22",
+ "estimated_deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "policy_period_state": "NO_SCHEDULED",
+ "scheduled_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ },
+ "deduct_date": "2019-11-22"
+ }
+ ],
+ "limit": 20,
+ "offset": 50,
+ "total_count": 360
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.json
new file mode 100644
index 00000000..692adccb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/RenewPAPayInsuranceSignContractRequest.json
@@ -0,0 +1,13 @@
+{
+ "appid": "wxd678efh567hg6787",
+ "policy_periods": [
+ {
+ "policy_period_id": 1,
+ "estimated_deduct_date": "2019-11-22",
+ "estimated_deduct_amount": {
+ "total": 1,
+ "currency": "CNY"
+ }
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.json
new file mode 100644
index 00000000..4394aed8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractRequest.json
@@ -0,0 +1,3 @@
+{
+ "contract_termination_remark": "用户解约"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.json
new file mode 100644
index 00000000..6e44d657
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PAPay/InsuranceSignContracts/TerminatePAPayInsuranceSignContractResponse.json
@@ -0,0 +1,18 @@
+{
+ "mchid": "1900000109",
+ "contract_id": "123124412412423431",
+ "appid": "wxd678efh567hg6787",
+ "plan_id": 12535,
+ "out_contract_code": "wxwtdk20200910100000",
+ "insured_display_name": "*明",
+ "contract_state": "SIGNED",
+ "contract_signed_time": "2020-09-10T13:29:35+08:00",
+ "contract_expired_time": "2021-09-10T13:29:35+08:00",
+ "contract_terminate_info": {
+ "contract_termination_mode": "USER_TERMINATE",
+ "contract_terminated_time": "2020-10-10T13:29:35+08:00",
+ "contract_termination_remark": "用户解约"
+ },
+ "openid": "o-MYE42l80oelYMDE34nYD456Xoy",
+ "out_user_code": "用户A"
+}