diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantSettlementExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantSettlementExtensions.cs new file mode 100644 index 00000000..26a82295 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMerchantSettlementExtensions.cs @@ -0,0 +1,52 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供从业机构特约商户结算规则 ID 管理相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecuteMerchantSettlementExtensions + { + /// + /// 异步调用 [POST] /merchant-settlement/merchant-settle-rule-applications 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter3_1_1.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteCreateMerchantSettlementSettleRuleApplymentAsync(this WechatTenpayClient client, Models.CreateMerchantSettlementSettleRuleApplymentRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "merchant-settlement", "merchant-settle-rule-applications"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /merchant-settlement/merchant-settle-rule-applications/{application_id} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter3_1_2.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteGetMerchantSettlementSettleRuleApplicationByApplymentIdAsync(this WechatTenpayClient client, Models.GetMerchantSettlementSettleRuleApplicationByApplymentIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "merchant-settlement", "merchant-settle-rule-applications", request.ApplymentId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4Subject/GetApplyForSubjectApplymentByBusinessCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4Subject/GetApplyForSubjectApplymentByBusinessCodeResponse.cs index d976a43e..07a5c42b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4Subject/GetApplyForSubjectApplymentByBusinessCodeResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4Subject/GetApplyForSubjectApplymentByBusinessCodeResponse.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { /// /// 表示 [GET] /apply4subject/applyment 接口的响应。 @@ -13,11 +13,11 @@ public string ApplymentState { get; set; } = default!; /// - /// 获取或设置小程序码图片数据(经 Base64 编码)。 + /// 获取或设置经 Base64 编码的小程序码图片数据。 /// [Newtonsoft.Json.JsonProperty("qrcode_data")] [System.Text.Json.Serialization.JsonPropertyName("qrcode_data")] - public string? QrcodeData { get; set; } + public string? EncodingQrcodeData { get; set; } /// /// 获取或设置驳回参数。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBank/UploadMarketingBankPackagesTasksResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBank/UploadMarketingBankPackagesTasksResponse.cs index 0facc8c9..01bdc4e8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBank/UploadMarketingBankPackagesTasksResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBank/UploadMarketingBankPackagesTasksResponse.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { @@ -64,7 +64,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public int? SuccessUserCount { get; set; } /// - /// 获取或设置银行类型。 + /// 获取或设置创建类型。 /// [Newtonsoft.Json.JsonProperty("create_time")] [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] @@ -73,7 +73,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public DateTimeOffset CreateTime { get; set; } /// - /// 获取或设置银行类型。 + /// 获取或设置最后更新类型。 /// [Newtonsoft.Json.JsonProperty("update_time")] [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.cs new file mode 100644 index 00000000..d63e295a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /merchant-settlement/merchant-settle-rule-applications 接口的请求。 + /// + public class CreateMerchantSettlementSettleRuleApplymentRequest : WechatTenpayRequest + { + /// + /// 获取或设置从业机构号。 + /// + [Newtonsoft.Json.JsonProperty("acquiring_bank_id")] + [System.Text.Json.Serialization.JsonPropertyName("acquiring_bank_id")] + public string AcquiringBankId { get; set; } = string.Empty; + + /// + /// 获取或设置特约商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置渠道商户号。 + /// + [Newtonsoft.Json.JsonProperty("channel_id")] + [System.Text.Json.Serialization.JsonPropertyName("channel_id")] + public string ChannelId { get; set; } = string.Empty; + + /// + /// 获取或设置结算规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("settle_rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("settle_rule_id")] + public int SettleRuleId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.cs new file mode 100644 index 00000000..d8863132 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /merchant-settlement/merchant-settle-rule-applications 接口的响应。 + /// + public class CreateMerchantSettlementSettleRuleApplymentResponse : GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdRequest.cs new file mode 100644 index 00000000..b3a67160 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /merchant-settlement/merchant-settle-rule-applications/{application_id} 接口的请求。 + /// + public class GetMerchantSettlementSettleRuleApplicationByApplymentIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ApplymentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.cs new file mode 100644 index 00000000..fc6bcae2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.cs @@ -0,0 +1,68 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /merchant-settlement/merchant-settle-rule-applications/{application_id} 接口的响应。 + /// + public class GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse : WechatTenpayResponse + { + /// + /// 获取或设置申请单编号。 + /// + [Newtonsoft.Json.JsonProperty("application_id")] + [System.Text.Json.Serialization.JsonPropertyName("application_id")] + public string ApplymentId { get; set; } = default!; + + /// + /// 获取或设置申请单处理信息。 + /// + [Newtonsoft.Json.JsonProperty("application_process_info")] + [System.Text.Json.Serialization.JsonPropertyName("application_process_info")] + public string ApplymentProcessInformation { get; set; } = default!; + + /// + /// 获取或设置申请单状态。 + /// + [Newtonsoft.Json.JsonProperty("application_state")] + [System.Text.Json.Serialization.JsonPropertyName("application_state")] + public string? ApplymentState { get; set; } + + /// + /// 获取或设置从业机构号。 + /// + [Newtonsoft.Json.JsonProperty("acquiring_bank_id")] + [System.Text.Json.Serialization.JsonPropertyName("acquiring_bank_id")] + public string? AcquiringBankId { get; set; } + + /// + /// 获取或设置渠道商户号。 + /// + [Newtonsoft.Json.JsonProperty("channel_id")] + [System.Text.Json.Serialization.JsonPropertyName("channel_id")] + public string? ChannelId { get; set; } + + /// + /// 获取或设置特约商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置结算规则 ID。 + /// + [Newtonsoft.Json.JsonProperty("settle_rule_id")] + [System.Text.Json.Serialization.JsonPropertyName("settle_rule_id")] + public int? SettleRuleId { get; set; } + + /// + /// 获取或设置最后更新时间。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? UpdateTime { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.json new file mode 100644 index 00000000..091ece36 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentRequest.json @@ -0,0 +1,6 @@ +{ + "acquiring_bank_id": "1356485", + "channel_id": "20001111", + "sub_mchid": "1346578", + "settle_rule_id": 760 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.json new file mode 100644 index 00000000..969d0ac6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/CreateMerchantSettlementSettleRuleApplymentResponse.json @@ -0,0 +1,10 @@ +{ + "application_id": "20000011111", + "application_process_info": "正在处理中", + "application_state": "PROCESSING", + "update_time": "2015-05-20T13:29:35+08:00", + "acquiring_bank_id": "1356485", + "channel_id": "20001111", + "sub_mchid": "1346578", + "settle_rule_id": 760 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.json new file mode 100644 index 00000000..5a97d72b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingSettlement/GetMerchantSettlementSettleRuleApplicationByApplymentIdResponse.json @@ -0,0 +1,10 @@ +{ + "application_id": "20000011111", + "application_process_info": "正在处理中", + "application_state": "PASSED", + "update_time": "2015-05-20T13:29:35+08:00", + "acquiring_bank_id": "1356485", + "channel_id": "20001111", + "sub_mchid": "1346578", + "settle_rule_id": 760 +}