From 2f300f45f9be403d3127881a56e0987b70bd8b90 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 7 Jan 2022 13:28:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E9=93=B6?= =?UTF-8?q?=E8=A1=8C=E7=BB=84=E4=BB=B6=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...hatTenpayClientExecuteCapitalExtensions.cs | 141 ++++++++++++++++++ .../Areas/QueryCapitalAreasCitiesRequest.cs | 15 ++ .../Areas/QueryCapitalAreasCitiesResponse.cs | 42 ++++++ .../QueryCapitalAreasProvincesRequest.cs | 9 ++ .../QueryCapitalAreasProvincesResponse.cs | 42 ++++++ .../Banks/QueryCapitalBanksBranchesRequest.cs | 36 +++++ .../QueryCapitalBanksBranchesResponse.cs | 77 ++++++++++ .../QueryCapitalBanksByBankAccountRequest.cs | 17 +++ .../QueryCapitalBanksByBankAccountResponse.cs | 65 ++++++++ ...ueryCapitalBanksCorporateBankingRequest.cs | 9 ++ ...eryCapitalBanksCorporateBankingResponse.cs | 36 +++++ ...QueryCapitalBanksPersonalBankingRequest.cs | 22 +++ ...ueryCapitalBanksPersonalBankingResponse.cs | 36 +++++ .../Areas/QueryCapitalAreasCitiesRequest.json | 1 + .../QueryCapitalAreasCitiesResponse.json | 9 ++ .../QueryCapitalAreasProvincesRequest.json | 1 + .../QueryCapitalAreasProvincesResponse.json | 9 ++ .../QueryCapitalBanksBranchesRequest.json | 1 + .../QueryCapitalBanksBranchesResponse.json | 14 ++ ...QueryCapitalBanksByBankAccountRequest.json | 1 + ...ueryCapitalBanksByBankAccountResponse.json | 12 ++ ...eryCapitalBanksPersonalBankingRequest.json | 1 + ...ryCapitalBanksPersonalBankingResponse.json | 13 ++ 23 files changed, 609 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCapitalExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCapitalExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCapitalExtensions.cs new file mode 100644 index 00000000..c9e2ad70 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCapitalExtensions.cs @@ -0,0 +1,141 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供银行组件相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecuteCapitalExtensions + { + #region Banks + /// + /// 异步调用 [GET] /capital/capitallhh/banks/search-banks-by-bank-account 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_1.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalBanksByBankAccountAsync(this WechatTenpayClient client, Models.QueryCapitalBanksByBankAccountRequest 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, "capital", "capitallhh", "banks", "search-banks-by-bank-account") + .SetQueryParam("account_number", request.AccountNumber); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /capital/capitallhh/banks/personal-banking 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_2.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalBanksPersonalBankingAsync(this WechatTenpayClient client, Models.QueryCapitalBanksPersonalBankingRequest 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, "capital", "capitallhh", "banks", "personal-banking") + .SetQueryParam("limit", request.Limit) + .SetQueryParam("offset", request.Offset); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /capital/capitallhh/banks/corporate-banking 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_3.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalBanksCorporateBankingAsync(this WechatTenpayClient client, Models.QueryCapitalBanksCorporateBankingRequest 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, "capital", "capitallhh", "banks", "corporate-banking") + .SetQueryParam("limit", request.Limit) + .SetQueryParam("offset", request.Offset); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /capital/capitallhh/banks/{bank_alias_code}/branches 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_6.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalBanksBranchesAsync(this WechatTenpayClient client, Models.QueryCapitalBanksBranchesRequest 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, "capital", "capitallhh", "banks", request.BankAliasCode, "branches") + .SetQueryParam("city_code", request.CityCode) + .SetQueryParam("limit", request.Limit) + .SetQueryParam("offset", request.Offset); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Areas + /// + /// 异步调用 [GET] /capital/capitallhh/areas/provinces 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_4.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalAreasProvincesAsync(this WechatTenpayClient client, Models.QueryCapitalAreasProvincesRequest 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, "capital", "capitallhh", "areas", "provinces"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /capital/capitallhh/areas/provinces/{province_code}/cities 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter11_2_5.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryCapitalAreasCitiesAsync(this WechatTenpayClient client, Models.QueryCapitalAreasCitiesRequest 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, "capital", "capitallhh", "areas", "provinces", request.ProvinceCode, "cities"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesRequest.cs new file mode 100644 index 00000000..29e785d7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/areas/provinces/{province_code}/cities 接口的请求。 + /// + public class QueryCapitalAreasCitiesRequest : WechatTenpayRequest + { + /// + /// 获取或设置省份编码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int ProvinceCode { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesResponse.cs new file mode 100644 index 00000000..a55977df --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasCitiesResponse.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/areas/provinces/{province_code}/cities 接口的响应。 + /// + public class QueryCapitalAreasCitiesResponse : WechatTenpayResponse + { + public static class Types + { + public class City + { + /// + /// 获取或设置城市名称。 + /// + [Newtonsoft.Json.JsonProperty("city_name")] + [System.Text.Json.Serialization.JsonPropertyName("city_name")] + public string CityName { get; set; } = default!; + + /// + /// 获取或设置城市编码。 + /// + [Newtonsoft.Json.JsonProperty("city_code")] + [System.Text.Json.Serialization.JsonPropertyName("city_code")] + public int CityCode { get; set; } + } + } + + /// + /// 获取或设置城市列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.City[] CityList { get; set; } = default!; + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesRequest.cs new file mode 100644 index 00000000..2d79be8d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/areas/provinces 接口的请求。 + /// + public class QueryCapitalAreasProvincesRequest : WechatTenpayRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesResponse.cs new file mode 100644 index 00000000..8be7dcec --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Areas/QueryCapitalAreasProvincesResponse.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/areas/provinces 接口的响应。 + /// + public class QueryCapitalAreasProvincesResponse : WechatTenpayResponse + { + public static class Types + { + public class Province + { + /// + /// 获取或设置省份名称。 + /// + [Newtonsoft.Json.JsonProperty("province_name")] + [System.Text.Json.Serialization.JsonPropertyName("province_name")] + public string ProvinceName { get; set; } = default!; + + /// + /// 获取或设置省份编码。 + /// + [Newtonsoft.Json.JsonProperty("province_code")] + [System.Text.Json.Serialization.JsonPropertyName("province_code")] + public int ProvinceCode { get; set; } + } + } + + /// + /// 获取或设置省份列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Province[] ProvinceList { get; set; } = default!; + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesRequest.cs new file mode 100644 index 00000000..6ffe15cb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/{bank_alias_code}/branches 接口的请求。 + /// + public class QueryCapitalBanksBranchesRequest : WechatTenpayRequest + { + /// + /// 获取或设置银行别名编码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BankAliasCode { get; set; } = string.Empty; + + /// + /// 获取或设置城市编码。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int CityCode { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 10; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesResponse.cs new file mode 100644 index 00000000..86d9c533 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksBranchesResponse.cs @@ -0,0 +1,77 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/{bank_alias_code}/branches 接口的响应。 + /// + public class QueryCapitalBanksBranchesResponse : WechatTenpayResponse + { + public static class Types + { + public class Branch + { + /// + /// 获取或设置支行名称。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_name")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_name")] + public string BranchName { get; set; } = default!; + + /// + /// 获取或设置支行联行号。 + /// + [Newtonsoft.Json.JsonProperty("bank_branch_id")] + [System.Text.Json.Serialization.JsonPropertyName("bank_branch_id")] + public string BranchId { get; set; } = default!; + } + } + + /// + /// 获取或设置支行列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Branch[] BranchList { get; set; } = default!; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置银行别名。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias")] + public string BankAlias { get; set; } = default!; + + /// + /// 获取或设置银行别名编码。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias_code")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias_code")] + public string BankAliasCode { get; set; } = default!; + + /// + /// 获取或设置开户银行。 + /// + [Newtonsoft.Json.JsonProperty("account_bank")] + [System.Text.Json.Serialization.JsonPropertyName("account_bank")] + public string AccountBank { get; set; } = default!; + + /// + /// 获取或设置开户银行编码。 + /// + [Newtonsoft.Json.JsonProperty("account_bank_code")] + [System.Text.Json.Serialization.JsonPropertyName("account_bank_code")] + public int AccountBankCode { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountRequest.cs new file mode 100644 index 00000000..23e890e0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountRequest.cs @@ -0,0 +1,17 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/search-banks-by-bank-account 接口的请求。 + /// + [WechatTenpaySensitive] + public class QueryCapitalBanksByBankAccountRequest : WechatTenpayRequest + { + /// + /// 获取或设置银行卡号(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + [WechatTenpaySensitiveProperty(algorithm: Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB)] + public string AccountNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountResponse.cs new file mode 100644 index 00000000..fcced590 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksByBankAccountResponse.cs @@ -0,0 +1,65 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/search-banks-by-bank-account 接口的响应。 + /// + public class QueryCapitalBanksByBankAccountResponse : WechatTenpayResponse + { + public static class Types + { + public class Bank + { + /// + /// 获取或设置银行别名。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias")] + public string BankAlias { get; set; } = default!; + + /// + /// 获取或设置银行别名编码。 + /// + [Newtonsoft.Json.JsonProperty("bank_alias_code")] + [System.Text.Json.Serialization.JsonPropertyName("bank_alias_code")] + public string BankAliasCode { get; set; } = default!; + + /// + /// 获取或设置开户银行。 + /// + [Newtonsoft.Json.JsonProperty("account_bank")] + [System.Text.Json.Serialization.JsonPropertyName("account_bank")] + public string AccountBank { get; set; } = default!; + + /// + /// 获取或设置开户银行编码。 + /// + [Newtonsoft.Json.JsonProperty("account_bank_code")] + [System.Text.Json.Serialization.JsonPropertyName("account_bank_code")] + public int AccountBankCode { get; set; } + + /// + /// 获取或设置是否需要填写支行。 + /// + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualBooleanConverter))] + [Newtonsoft.Json.JsonProperty("need_bank_branch")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualBooleanConverter))] + [System.Text.Json.Serialization.JsonPropertyName("need_bank_branch")] + public bool RequireBankBranch { get; set; } + } + } + + /// + /// 获取或设置银行列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Bank[] BankList { get; set; } = default!; + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingRequest.cs new file mode 100644 index 00000000..1ba5e43d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/corporate-banking 接口的请求。 + /// + public class QueryCapitalBanksCorporateBankingRequest : QueryCapitalBanksPersonalBankingRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingResponse.cs new file mode 100644 index 00000000..86b68048 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksCorporateBankingResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/corporate-banking 接口的响应。 + /// + public class QueryCapitalBanksCorporateBankingResponse : WechatTenpayResponse + { + public static class Types + { + public class Bank : QueryCapitalBanksPersonalBankingResponse.Types.Bank + { + } + } + + /// + /// 获取或设置银行列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Bank[] BankList { get; set; } = default!; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.cs new file mode 100644 index 00000000..e0be5007 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/personal-banking 接口的请求。 + /// + public class QueryCapitalBanksPersonalBankingRequest : WechatTenpayRequest + { + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } = 10; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.cs new file mode 100644 index 00000000..0120bba2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /capital/capitallhh/banks/personal-banking 接口的响应。 + /// + public class QueryCapitalBanksPersonalBankingResponse : WechatTenpayResponse + { + public static class Types + { + public class Bank : QueryCapitalBanksByBankAccountResponse.Types.Bank + { + } + } + + /// + /// 获取或设置银行列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Bank[] BankList { get; set; } = default!; + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置数据总条数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesResponse.json new file mode 100644 index 00000000..394880c1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasCitiesResponse.json @@ -0,0 +1,9 @@ +{ + "data": [ + { + "city_name": "北京市", + "city_code": 10 + } + ], + "total_count": "10" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesResponse.json new file mode 100644 index 00000000..a82ab106 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Areas/QueryCapitalAreasProvincesResponse.json @@ -0,0 +1,9 @@ +{ + "data": [ + { + "province_name": "广东省", + "province_code": 22 + } + ], + "total_count": "10" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesResponse.json new file mode 100644 index 00000000..82ef19b4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksBranchesResponse.json @@ -0,0 +1,14 @@ +{ + "total_count": "10", + "data": [ + { + "bank_branch_name": "中国工商银行上海市周浦支行", + "bank_branch_id": "102290072311" + } + ], + "offset": "0", + "account_bank": "招商银行其他银行", + "account_bank_code": 1001, + "bank_alias": "工商银行深圳前海微众银行", + "bank_alias_code": "1000006247" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountResponse.json new file mode 100644 index 00000000..7b9d0c33 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksByBankAccountResponse.json @@ -0,0 +1,12 @@ +{ + "total_count": "10", + "data": [ + { + "bank_alias": "工商银行深圳前海微众银行", + "bank_alias_code": "1000006247", + "account_bank": "招商银行其他银行", + "account_bank_code": 1001, + "need_bank_branch": "true" + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.json new file mode 100644 index 00000000..59553b9e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Capital/Banks/QueryCapitalBanksPersonalBankingResponse.json @@ -0,0 +1,13 @@ +{ + "total_count": "10", + "data": [ + { + "bank_alias": "工商银行深圳前海微众银行", + "bank_alias_code": "1000006247", + "account_bank": "招商银行其他银行", + "account_bank_code": 1001, + "need_bank_branch": "true" + } + ], + "offset": "0" +} \ No newline at end of file