diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/CombineTransactions/CombineTransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/CombineTransactions/CombineTransactionResource.cs
index 7d7569de..dac33f80 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/CombineTransactions/CombineTransactionResource.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/CombineTransactions/CombineTransactionResource.cs
@@ -4,7 +4,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
/// 表示 TRANSACTION.SUCCESS 通知的数据。
///
/// REF:
+ ///
///
+ ///
///
///
///
@@ -24,6 +26,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
public class Payer : Models.GetCombineTransactionByCombineOutTradeNumberResponse.Types.Payer
{
}
+
+ public class Installment : Models.GetCombineTransactionByCombineOutTradeNumberResponse.Types.Installment
+ {
+ }
}
///
@@ -74,5 +80,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
[Newtonsoft.Json.JsonProperty("scene_info")]
[System.Text.Json.Serialization.JsonPropertyName("scene_info")]
public Types.Scene? Scene { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { 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 6a9a633e..465b377e 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs
@@ -34,6 +34,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
public class Promotion : Models.GetPayTransactionByOutTradeNumberResponse.Types.Promotion
{
}
+
+ public class Installment : Models.GetPayTransactionByOutTradeNumberResponse.Types.Installment
+ {
+ }
}
///
@@ -135,5 +139,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
[Newtonsoft.Json.JsonProperty("promotion_detail")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_detail")]
public Types.Promotion[]? PromotionList { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/Transactions/PartnerTransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/Transactions/PartnerTransactionResource.cs
index c498a5d7..e7951c0c 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/Transactions/PartnerTransactionResource.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/Transactions/PartnerTransactionResource.cs
@@ -34,6 +34,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
public class Promotion : Models.GetPayPartnerTransactionByOutTradeNumberResponse.Types.Promotion
{
}
+
+ public class Installment : Models.GetPayPartnerTransactionByOutTradeNumberResponse.Types.Installment
+ {
+ }
}
///
@@ -149,5 +153,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
[Newtonsoft.Json.JsonProperty("promotion_detail")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_detail")]
public Types.Promotion[]? PromotionList { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCombineTransactionExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCombineTransactionExtensions.cs
index 4114869c..f12863fd 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCombineTransactionExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCombineTransactionExtensions.cs
@@ -12,7 +12,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [POST] /combine-transactions/app 接口。
///
/// REF:
+ ///
///
+ ///
///
///
///
@@ -49,8 +51,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [POST] /combine-transactions/jsapi 接口。
///
/// REF:
+ ///
///
///
+ ///
///
///
///
@@ -88,7 +92,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [POST] /combine-transactions/h5 接口。
///
/// REF:
+ ///
///
+ ///
///
///
///
@@ -124,7 +130,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [POST] /combine-transactions/native 接口。
///
/// REF:
+ ///
///
+ ///
///
///
///
@@ -194,7 +202,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [GET] /combine-transactions/out-trade-no/{combine_out_trade_no} 接口。
///
/// REF:
+ ///
///
+ ///
///
///
///
@@ -241,7 +251,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// 异步调用 [POST] /combine-transactions/out-trade-no/{combine_out_trade_no}/close 接口。
///
/// REF:
+ ///
///
+ ///
///
///
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayInstallmentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayInstallmentExtensions.cs
new file mode 100644
index 00000000..8dce34fb
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayInstallmentExtensions.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Flurl;
+using Flurl.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
+{
+ public static class WechatTenpayClientExecutePayInstallmentExtensions
+ {
+ #region Exposure
+ ///
+ /// 异步调用 [POST] /pay/instal/exposure 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCreatePayInstallmentExposureAsync(this WechatTenpayClient client, Models.CreatePayInstallmentExposureRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ if (request.MerchantId is null)
+ request.MerchantId = client.Credentials.MerchantId;
+
+ IFlurlRequest flurlReq = client
+ .CreateFlurlRequest(request, HttpMethod.Post, "pay", "instal", "exposure");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayPartnerInstallmentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayPartnerInstallmentExtensions.cs
new file mode 100644
index 00000000..7e82375a
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayPartnerInstallmentExtensions.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Flurl.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
+{
+ public static class WechatTenpayClientExecutePayPartnerInstallmentExtensions
+ {
+ #region Exposure
+ ///
+ /// 异步调用 [POST] /pay/instal/partner/exposure 接口。
+ ///
+ /// REF:
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCreatePayPartnerInstallmentExposureAsync(this WechatTenpayClient client, Models.CreatePayPartnerInstallmentExposureRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ if (request.MerchantId is null)
+ request.MerchantId = client.Credentials.MerchantId;
+
+ IFlurlRequest flurlReq = client
+ .CreateFlurlRequest(request, HttpMethod.Post, "pay", "instal", "partner", "exposure");
+
+ return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
+ }
+ #endregion
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionAppRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionAppRequest.cs
index e8266e87..077f646a 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionAppRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionAppRequest.cs
@@ -6,6 +6,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
///
/// 表示 [POST] /combine-transactions/app 接口的请求。
///
+ [WechatTenpaySensitive]
public class CreateCombineTransactionAppRequest : WechatTenpayRequest
{
public static class Types
@@ -70,6 +71,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
+ ///
+ /// 获取或设置商品服务类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_service_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_service_type")]
+ public string? OrderServiceType { get; set; }
+
///
/// 获取或设置个人收款方受理授权 ID。
///
@@ -129,6 +137,37 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Payer
{
+ public static class Types
+ {
+ public class Identity
+ {
+ ///
+ /// 获取或设置证件类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("type")]
+ [System.Text.Json.Serialization.JsonPropertyName("type")]
+ public string? IdentityType { get; set; }
+
+ ///
+ /// 获取或设置证件姓名(需使用平台公钥/证书加密)。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("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? IdName { get; set; }
+
+ ///
+ /// 获取或设置证件号码(需使用平台公钥/证书加密)。
+ ///
+ [Newtonsoft.Json.JsonProperty("number")]
+ [System.Text.Json.Serialization.JsonPropertyName("number")]
+ [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)]
+ [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)]
+ public string? IdNumber { get; set; }
+ }
+ }
+
///
/// 获取或设置用户唯一标识。
///
@@ -142,6 +181,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
+
+ ///
+ /// 获取或设置实名支付信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("identity")]
+ [System.Text.Json.Serialization.JsonPropertyName("identity")]
+ public Types.Identity? Identity { get; set; }
}
public class Scene
@@ -160,6 +206,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("device_id")]
public string? DeviceId { get; set; }
}
+
+ public class Subsidy : CreatePayTransactionAppRequest.Types.Subsidy
+ {
+ }
}
///
@@ -235,5 +285,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("trade_scenario")]
[System.Text.Json.Serialization.JsonPropertyName("trade_scenario")]
public string? TradeScenario { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionH5Request.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionH5Request.cs
index 7be30af6..198e44d0 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionH5Request.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionH5Request.cs
@@ -6,6 +6,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
///
/// 表示 [POST] /combine-transactions/h5 接口的请求。
///
+ [WechatTenpaySensitive]
public class CreateCombineTransactionH5Request : WechatTenpayRequest
{
public static class Types
@@ -14,6 +15,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
}
+ public class Payer : CreateCombineTransactionAppRequest.Types.Payer
+ {
+ }
+
public class Scene : CreateCombineTransactionAppRequest.Types.Scene
{
public static class Types
@@ -85,6 +90,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("sub_orders")]
public IList SubOrderList { get; set; } = new List();
+ ///
+ /// 获取或设置支付者信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("combine_payer_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("combine_payer_info")]
+ public Types.Payer? CombinePayer { get; set; }
+
///
/// 获取或设置场景信息。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionJsapiRequest.cs
index 6f5ba1c7..f2ce8552 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionJsapiRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionJsapiRequest.cs
@@ -6,6 +6,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
///
/// 表示 [POST] /combine-transactions/jsapi 接口的请求。
///
+ [WechatTenpaySensitive]
public class CreateCombineTransactionJsapiRequest : WechatTenpayRequest
{
public static class Types
@@ -21,6 +22,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Scene : CreateCombineTransactionAppRequest.Types.Scene
{
}
+
+ public class Subsidy : CreateCombineTransactionAppRequest.Types.Subsidy
+ {
+ }
}
///
@@ -96,5 +101,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("trade_scenario")]
[System.Text.Json.Serialization.JsonPropertyName("trade_scenario")]
public string? TradeScenario { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionNativeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionNativeRequest.cs
index 0a539049..0702d772 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionNativeRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/CreateCombineTransactionNativeRequest.cs
@@ -14,6 +14,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
}
+ public class Payer : CreateCombineTransactionAppRequest.Types.Payer
+ {
+ }
+
public class Scene : CreateCombineTransactionAppRequest.Types.Scene
{
}
@@ -72,6 +76,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("sub_orders")]
public IList SubOrderList { get; set; } = new List();
+ ///
+ /// 获取或设置支付者信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("combine_payer_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("combine_payer_info")]
+ public Types.Payer? CombinePayer { get; set; }
+
///
/// 获取或设置场景信息。
///
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/GetCombineTransactionByCombineOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/GetCombineTransactionByCombineOutTradeNumberResponse.cs
index 13d8a3c8..9c64b461 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/GetCombineTransactionByCombineOutTradeNumberResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/CombineTransactions/GetCombineTransactionByCombineOutTradeNumberResponse.cs
@@ -172,6 +172,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("device_id")]
public string? DeviceId { get; set; }
}
+
+ public class Installment : GetPayTransactionByOutTradeNumberResponse.Types.Installment
+ {
+ }
}
///
@@ -229,5 +233,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("trade_scenario")]
[System.Text.Json.Serialization.JsonPropertyName("trade_scenario")]
public string? TradeScenario { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.cs
new file mode 100644
index 00000000..3ceaffaa
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.cs
@@ -0,0 +1,43 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /pay/instal/exposure 接口的请求。
+ ///
+ public class CreatePayInstallmentExposureRequest : WechatTenpayRequest
+ {
+ ///
+ /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。
+ ///
+ [Newtonsoft.Json.JsonProperty("mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("mchid")]
+ public string? MerchantId { get; set; }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户 ID 类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("user_id_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("user_id_type")]
+ public string UserIdType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户唯一标识。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string? OpenId { get; set; }
+
+ ///
+ /// 获取或设置手机号哈希值。
+ ///
+ [Newtonsoft.Json.JsonProperty("phone_number_hash")]
+ [System.Text.Json.Serialization.JsonPropertyName("phone_number_hash")]
+ public string? PhoneNumberHash { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.cs
new file mode 100644
index 00000000..096f7fe7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /pay/instal/exposure 接口的响应。
+ ///
+ public class CreatePayInstallmentExposureResponse : WechatTenpayResponse
+ {
+ ///
+ /// 获取或设置是否建议曝光微信分付。
+ ///
+ [Newtonsoft.Json.JsonProperty("recommend_exposure")]
+ [System.Text.Json.Serialization.JsonPropertyName("recommend_exposure")]
+ public bool IsRecommendExposed { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionAppRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionAppRequest.cs
index d5696536..47ce6ffb 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionAppRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionAppRequest.cs
@@ -181,6 +181,56 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("subsidy_amount")]
public int? SubsidyAmount { get; set; }
}
+
+ public class Subsidy
+ {
+ public static class Types
+ {
+ public class SubsidyDetail
+ {
+ public static class Types
+ {
+ public class SubsidyPlan
+ {
+ ///
+ /// 获取或设置贴息期数。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_installment_num")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_installment_num")]
+ public int SubsidyInstallmentNumber { get; set; }
+
+ ///
+ /// 获取或设置贴息百分比。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_percent")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_percent")]
+ public int SubsidyPercent { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置还款类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_period_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_period_type")]
+ public string SubsidyPeriodType { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置还款计划列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_plan")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_plan")]
+ public IList SubsidyPlanList { get; set; } = new List();
+ }
+ }
+
+ ///
+ /// 获取或设置贴息详情列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_detail")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_detail")]
+ public IList? SubsidyDetailList { get; set; }
+ }
}
///
@@ -275,5 +325,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("settle_info")]
[System.Text.Json.Serialization.JsonPropertyName("settle_info")]
public Types.Settlement? Settlement { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionJsapiRequest.cs
index f4c9c3ff..fb678c7a 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionJsapiRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/CreatePayTransactionJsapiRequest.cs
@@ -34,6 +34,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Settlement : CreatePayTransactionAppRequest.Types.Settlement
{
}
+
+ public class Subsidy : CreatePayTransactionAppRequest.Types.Subsidy
+ {
+ }
}
///
@@ -135,5 +139,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("settle_info")]
[System.Text.Json.Serialization.JsonPropertyName("settle_info")]
public Types.Settlement? Settlement { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/Exposure/CreatePayTransactionExposureResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/Exposure/CreatePayTransactionExposureResponse.cs
index f023da45..826416ba 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/Exposure/CreatePayTransactionExposureResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/Exposure/CreatePayTransactionExposureResponse.cs
@@ -10,7 +10,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
///
[Newtonsoft.Json.JsonProperty("fqf_exposure")]
[System.Text.Json.Serialization.JsonPropertyName("fqf_exposure")]
- public bool IsExposed { get; set; }
+ public bool IsRecommendExposed { get; set; }
///
/// 获取或设置曝光凭证。
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/GetPayTransactionByOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/GetPayTransactionByOutTradeNumberResponse.cs
index 1555544d..d8d4294f 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/GetPayTransactionByOutTradeNumberResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayTransactions/GetPayTransactionByOutTradeNumberResponse.cs
@@ -180,6 +180,23 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[System.Text.Json.Serialization.JsonPropertyName("goods_detail")]
public Types.GoodsDetail[]? GoodsList { get; set; }
}
+
+ public class Installment
+ {
+ ///
+ /// 获取或设置是否使用了商户贴息。
+ ///
+ [Newtonsoft.Json.JsonProperty("use_subsidy")]
+ [System.Text.Json.Serialization.JsonPropertyName("use_subsidy")]
+ public bool IsUseSubsidy { get; set; }
+
+ ///
+ /// 获取或设置用户实际选择的分期期数。
+ ///
+ [Newtonsoft.Json.JsonProperty("selected_installment_number")]
+ [System.Text.Json.Serialization.JsonPropertyName("selected_installment_number")]
+ public int SelectedInstallmentNumber { get; set; }
+ }
}
///
@@ -281,5 +298,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("promotion_detail")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_detail")]
public Types.Promotion[]? PromotionList { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.cs
new file mode 100644
index 00000000..a77a3b4b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.cs
@@ -0,0 +1,56 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /pay/instal/partner/exposure 接口的请求。
+ ///
+ public class CreatePayPartnerInstallmentExposureRequest : WechatTenpayRequest
+ {
+ public static class Types
+ {
+ public class User : CreatePayPartnerTransactionExposureRequest.Types.Payer
+ {
+ ///
+ /// 获取或设置用户 ID 类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("user_id_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("user_id_type")]
+ public string UserIdType { get; set; } = string.Empty;
+ }
+ }
+
+ ///
+ /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。
+ ///
+ [Newtonsoft.Json.JsonProperty("sp_mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")]
+ public string? MerchantId { get; set; }
+
+ ///
+ /// 获取或设置子商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("sub_mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
+ public string? SubMerchantId { get; set; }
+
+ ///
+ /// 获取或设置微信 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("sp_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("sp_appid")]
+ public string AppId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置子商户 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("sub_appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
+ public string? SubAppId { get; set; }
+
+ ///
+ /// 获取或设置用户信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("user_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("user_id")]
+ public Types.User User { get; set; } = new Types.User();
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.cs
new file mode 100644
index 00000000..f7fa1e83
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
+{
+ ///
+ /// 表示 [POST] /pay/instal/partner/exposure 接口的响应。
+ ///
+ public class CreatePayPartnerInstallmentExposureResponse : CreatePayInstallmentExposureResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionAppRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionAppRequest.cs
index ced48696..14e17b23 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionAppRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionAppRequest.cs
@@ -24,6 +24,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Settlement : CreatePayTransactionAppRequest.Types.Settlement
{
}
+
+ public class Subsidy : CreatePayTransactionAppRequest.Types.Subsidy
+ {
+ }
}
///
@@ -132,5 +136,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("settle_info")]
[System.Text.Json.Serialization.JsonPropertyName("settle_info")]
public Types.Settlement? Settlement { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionJsapiRequest.cs
index 2e72e4d8..a712375d 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionJsapiRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/CreatePayPartnerTransactionJsapiRequest.cs
@@ -41,6 +41,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Settlement : CreatePayTransactionJsapiRequest.Types.Settlement
{
}
+
+ public class Subsidy : CreatePayTransactionJsapiRequest.Types.Subsidy
+ {
+ }
}
///
@@ -156,5 +160,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("settle_info")]
[System.Text.Json.Serialization.JsonPropertyName("settle_info")]
public Types.Settlement? Settlement { get; set; }
+
+ ///
+ /// 获取或设置贴息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("subsidy_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("subsidy_info")]
+ public Types.Subsidy? Subsidy { get; set; }
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/GetPayPartnerTransactionByOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/GetPayPartnerTransactionByOutTradeNumberResponse.cs
index 33907f49..8791075e 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/GetPayPartnerTransactionByOutTradeNumberResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayTransactions/GetPayPartnerTransactionByOutTradeNumberResponse.cs
@@ -37,6 +37,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public class Promotion : GetPayTransactionByOutTradeNumberResponse.Types.Promotion
{
}
+
+ public class Installment : GetPayTransactionByOutTradeNumberResponse.Types.Installment
+ {
+ }
}
///
@@ -152,5 +156,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
[Newtonsoft.Json.JsonProperty("promotion_detail")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_detail")]
public Types.Promotion[]? PromotionList { get; set; }
+
+ ///
+ /// 获取或设置分期信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("installment_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("installment_info")]
+ public Types.Installment? Installment { get; set; }
}
}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.json
new file mode 100644
index 00000000..b097a687
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureRequest.json
@@ -0,0 +1,7 @@
+{
+ "mchid": "12345",
+ "appid": "123abc",
+ "user_id_type": "OPENID",
+ "openid": "123456789",
+ "phone_number_hash": "EF879546FFFF"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.json
new file mode 100644
index 00000000..b26cd30d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayInstallment/Exposure/CreatePayInstallmentExposureResponse.json
@@ -0,0 +1,3 @@
+{
+ "recommend_exposure": true
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionAppRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionAppRequest.json
index 856c5805..6ea73bee 100644
--- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionAppRequest.json
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionAppRequest.json
@@ -1,4 +1,4 @@
-{
+{
"mchid": "1900006XXX",
"out_trade_no": "APP1217752501201407033233368018",
"appid": "wxb4ba3c02aa476XXX",
@@ -7,5 +7,22 @@
"amount": {
"total": 1,
"currency": "CNY"
+ },
+ "subsidy_info": {
+ "subsidy_detail": [
+ {
+ "subsidy_period_type": "PERIOD",
+ "subsidy_plan": [
+ {
+ "subsidy_installment_num": 3,
+ "subsidy_percent": 100
+ },
+ {
+ "subsidy_installment_num": 6,
+ "subsidy_percent": 100
+ }
+ ]
+ }
+ ]
}
}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionJsapiRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionJsapiRequest.json
index 1ecbeefb..a442afd5 100644
--- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionJsapiRequest.json
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayTransactions/CreatePayTransactionJsapiRequest.json
@@ -1,4 +1,4 @@
-{
+{
"mchid": "1900006XXX",
"out_trade_no": "1217752501201407033233368318",
"appid": "wxdace645e0bc2cXXX",
@@ -10,5 +10,22 @@
},
"payer": {
"openid": "o4GgauInH_RCEdvrrNGrntXDuXXX"
+ },
+ "subsidy_info": {
+ "subsidy_detail": [
+ {
+ "subsidy_period_type": "PERIOD",
+ "subsidy_plan": [
+ {
+ "subsidy_installment_num": 3,
+ "subsidy_percent": 100
+ },
+ {
+ "subsidy_installment_num": 6,
+ "subsidy_percent": 100
+ }
+ ]
+ }
+ ]
}
}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.json
new file mode 100644
index 00000000..54c4199e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureRequest.json
@@ -0,0 +1,12 @@
+{
+ "sp_mchid": "12345",
+ "sp_appid": "123abc",
+ "sub_mchid": "12345",
+ "sub_appid": "123abc",
+ "user_id": {
+ "user_id_type": "SP_OPENID",
+ "sp_openid": "123456789",
+ "sub_openid": "123456789",
+ "phone_number_hash": "EF879546FFFF"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.json
new file mode 100644
index 00000000..b26cd30d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayInstallment/Exposure/CreatePayPartnerInstallmentExposureResponse.json
@@ -0,0 +1,3 @@
+{
+ "recommend_exposure": true
+}