feat(wxapi): 新增小程序自定义交易组件银行信息相关接口

This commit is contained in:
Fu Diwei
2022-06-18 22:06:36 +08:00
parent 1a3e957ef3
commit 8a67fc3d58
20 changed files with 713 additions and 0 deletions

View File

@@ -1646,6 +1646,106 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync<Models.ShopFundsQrcodeCheckResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getbanklist 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/bank/getbanklist.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetBankListResponse> ExecuteShopFundsGetBankListAsync(this WechatApiClient client, Models.ShopFundsGetBankListRequest 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, "shop", "funds", "getbanklist")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetBankListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getbankbynum 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/bank/getbankbynum.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetBankByNumberResponse> ExecuteShopFundsGetBankByNumberAsync(this WechatApiClient client, Models.ShopFundsGetBankByNumberRequest 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, "shop", "funds", "getbankbynum")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetBankByNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getprovince 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/bank/getprovince.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetProvinceResponse> ExecuteShopFundsGetProvinceAsync(this WechatApiClient client, Models.ShopFundsGetProvinceRequest 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, "shop", "funds", "getprovince")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetProvinceResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getcity 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/bank/getcity.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetCityResponse> ExecuteShopFundsGetCityAsync(this WechatApiClient client, Models.ShopFundsGetCityRequest 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, "shop", "funds", "getcity")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetCityResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getsubbranch 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/bank/getsubbranch.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetSubBranchResponse> ExecuteShopFundsGetSubBranchAsync(this WechatApiClient client, Models.ShopFundsGetSubBranchRequest 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, "shop", "funds", "getsubbranch")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetSubBranchResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Complaint

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbankbynum 接口的请求。</para>
/// </summary>
public class ShopFundsGetBankByNumberRequest : WechatApiRequest, IInferable<ShopFundsGetBankByNumberRequest, ShopFundsGetBankByNumberResponse>
{
/// <summary>
/// 获取或设置银行账户。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_number")]
[System.Text.Json.Serialization.JsonPropertyName("account_number")]
public string BankAccountNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,64 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbankbynum 接口的响应。</para>
/// </summary>
public class ShopFundsGetBankByNumberResponse : WechatApiResponse
{
public static class Types
{
public class Bank
{
/// <summary>
/// 获取或设置开户银行。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank")]
public string AccountBank { get; set; } = default!;
/// <summary>
/// 获取或设置银行联号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_id")]
[System.Text.Json.Serialization.JsonPropertyName("bank_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string BankId { get; set; } = default!;
/// <summary>
/// 获取或设置银行编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_code")]
public string BankCode { get; set; } = default!;
/// <summary>
/// 获取或设置银行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_name")]
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
public string BankName { get; set; } = default!;
/// <summary>
/// 获取或设置是否需要填写支行信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("need_branch")]
[System.Text.Json.Serialization.JsonPropertyName("need_branch")]
public bool RequireBranch { get; set; }
}
}
/// <summary>
/// 获取或设置银行列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Bank[] BankList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbanklist 接口的请求。</para>
/// </summary>
public class ShopFundsGetBankListRequest : WechatApiRequest, IInferable<ShopFundsGetBankListRequest, ShopFundsGetBankListResponse>
{
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int? Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
/// <summary>
/// 获取或设置关键词。
/// </summary>
[Newtonsoft.Json.JsonProperty("key_words")]
[System.Text.Json.Serialization.JsonPropertyName("key_words")]
public string? Keywords { get; set; }
/// <summary>
/// 获取或设置银行类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_type")]
[System.Text.Json.Serialization.JsonPropertyName("bank_type")]
public int? BankType { get; set; }
}
}

View File

@@ -0,0 +1,64 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbanklist 接口的响应。</para>
/// </summary>
public class ShopFundsGetBankListResponse : WechatApiResponse
{
public static class Types
{
public class Bank
{
/// <summary>
/// 获取或设置开户银行。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank")]
public string AccountBank { get; set; } = default!;
/// <summary>
/// 获取或设置银行类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_type")]
[System.Text.Json.Serialization.JsonPropertyName("bank_type")]
public int BankType { get; set; }
/// <summary>
/// 获取或设置银行联号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_id")]
[System.Text.Json.Serialization.JsonPropertyName("bank_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string BankId { get; set; } = default!;
/// <summary>
/// 获取或设置银行编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_code")]
public string BankCode { get; set; } = default!;
/// <summary>
/// 获取或设置银行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_name")]
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
public string BankName { get; set; } = default!;
/// <summary>
/// 获取或设置是否需要填写支行信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("need_branch")]
[System.Text.Json.Serialization.JsonPropertyName("need_branch")]
public bool RequireBranch { get; set; }
}
}
/// <summary>
/// 获取或设置银行列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Bank[] BankList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getcity 接口的请求。</para>
/// </summary>
public class ShopFundsGetCityRequest : WechatApiRequest, IInferable<ShopFundsGetCityRequest, ShopFundsGetCityResponse>
{
/// <summary>
/// 获取或设置省份编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("province_code")]
[System.Text.Json.Serialization.JsonPropertyName("province_code")]
public int ProvinceCode { get; set; }
}
}

View File

@@ -0,0 +1,49 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getcity 接口的响应。</para>
/// </summary>
public class ShopFundsGetCityResponse : WechatApiResponse
{
public static class Types
{
public class City
{
/// <summary>
/// 获取或设置城市编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("city_code")]
[System.Text.Json.Serialization.JsonPropertyName("city_code")]
public int CityCode { get; set; }
/// <summary>
/// 获取或设置城市名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("city_name")]
[System.Text.Json.Serialization.JsonPropertyName("city_name")]
public string CityName { get; set; } = default!;
/// <summary>
/// 获取或设置银行省市编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_address_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_address_code")]
public string BankAddressCode { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置城市列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.City[] CityList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getprovince 接口的请求。</para>
/// </summary>
public class ShopFundsGetProvinceRequest : WechatApiRequest, IInferable<ShopFundsGetProvinceRequest, ShopFundsGetProvinceResponse>
{
}
}

View File

@@ -0,0 +1,42 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getprovince 接口的响应。</para>
/// </summary>
public class ShopFundsGetProvinceResponse : WechatApiResponse
{
public static class Types
{
public class Province
{
/// <summary>
/// 获取或设置省份编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("province_code")]
[System.Text.Json.Serialization.JsonPropertyName("province_code")]
public int ProvinceCode { get; set; }
/// <summary>
/// 获取或设置省份名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("province_name")]
[System.Text.Json.Serialization.JsonPropertyName("province_name")]
public string ProvinceName { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置省份列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Province[] ProvinceList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getsubbranch 接口的请求。</para>
/// </summary>
public class ShopFundsGetSubBranchRequest : WechatApiRequest, IInferable<ShopFundsGetSubBranchRequest, ShopFundsGetSubBranchResponse>
{
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int? Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
/// <summary>
/// 获取或设置城市编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("city_code")]
[System.Text.Json.Serialization.JsonPropertyName("city_code")]
public int CityCode { get; set; }
/// <summary>
/// 获取或设置银行编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_code")]
public string BankCode { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,80 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getsubbranch 接口的响应。</para>
/// </summary>
public class ShopFundsGetSubBranchResponse : WechatApiResponse
{
public static class Types
{
public class Branch
{
/// <summary>
/// 获取或设置支行联号。
/// </summary>
[Newtonsoft.Json.JsonProperty("branch_id")]
[System.Text.Json.Serialization.JsonPropertyName("branch_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string BranchId { get; set; } = default!;
/// <summary>
/// 获取或设置支行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("branch_name")]
[System.Text.Json.Serialization.JsonPropertyName("branch_name")]
public string BranchName { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置开户银行。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank")]
public string AccountBank { get; set; } = default!;
/// <summary>
/// 获取或设置开户银行编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank_code")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank_code")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string AccountBankCode { get; set; } = default!;
/// <summary>
/// 获取或设置银行别名。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_alias")]
[System.Text.Json.Serialization.JsonPropertyName("bank_alias")]
public string BankAlias { get; set; }= default!;
/// <summary>
/// 获取或设置银行别名编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_alias_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_alias_code")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
public string BankAliasCode { get; set; } = default!;
/// <summary>
/// 获取或设置支行列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Branch[] BranchList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置总页数。
/// </summary>
[Newtonsoft.Json.JsonProperty("count")]
[System.Text.Json.Serialization.JsonPropertyName("count")]
public int PageCount { get; set; }
}
}

View File

@@ -0,0 +1,3 @@
{
"account_number": "621xxxxxxxxxxxxxx"
}

View File

@@ -0,0 +1,12 @@
{
"data": [
{
"bank_code": "1000009561",
"bank_id": "1001",
"bank_name": "招商银行",
"need_branch": false,
"account_bank": "招商银行"
}
],
"total_count": 1
}

View File

@@ -0,0 +1,6 @@
{
"offset": 0,
"limit": 10,
"key_words": "招商",
"bank_type": 0
}

View File

@@ -0,0 +1,20 @@
{
"data": [
{
"account_bank": "招商银行",
"bank_code": "1000009561",
"bank_id": "1001",
"bank_name": "招商银行",
"bank_type": 1,
"need_branch": false
},
{
"account_bank": "其他银行",
"bank_code": "1000009580",
"bank_id": "1099",
"bank_name": "招商永隆银行",
"bank_type": 1,
"need_branch": true
}
]
}

View File

@@ -0,0 +1,10 @@
{
"data": [
{
"bank_address_code": "110000",
"city_code": 10,
"city_name": "北京市"
}
],
"total_count": 1
}

View File

@@ -0,0 +1,129 @@
{
"data": [
{
"province_code": 1,
"province_name": "北京市"
},
{
"province_code": 2,
"province_name": "上海市"
},
{
"province_code": 3,
"province_name": "天津市"
},
{
"province_code": 4,
"province_name": "重庆市"
},
{
"province_code": 5,
"province_name": "河北省"
},
{
"province_code": 6,
"province_name": "山西省"
},
{
"province_code": 7,
"province_name": "内蒙古"
},
{
"province_code": 8,
"province_name": "辽宁省"
},
{
"province_code": 9,
"province_name": "吉林省"
},
{
"province_code": 10,
"province_name": "黑龙江省"
},
{
"province_code": 11,
"province_name": "江苏省"
},
{
"province_code": 12,
"province_name": "浙江省"
},
{
"province_code": 13,
"province_name": "安徽省"
},
{
"province_code": 14,
"province_name": "福建省"
},
{
"province_code": 15,
"province_name": "江西省"
},
{
"province_code": 16,
"province_name": "山东省"
},
{
"province_code": 17,
"province_name": "河南省"
},
{
"province_code": 18,
"province_name": "湖北省"
},
{
"province_code": 19,
"province_name": "湖南省"
},
{
"province_code": 20,
"province_name": "广东省"
},
{
"province_code": 21,
"province_name": "广西"
},
{
"province_code": 22,
"province_name": "海南省"
},
{
"province_code": 23,
"province_name": "四川省"
},
{
"province_code": 24,
"province_name": "贵州省"
},
{
"province_code": 25,
"province_name": "云南省"
},
{
"province_code": 26,
"province_name": "西藏"
},
{
"province_code": 27,
"province_name": "陕西省"
},
{
"province_code": 28,
"province_name": "甘肃省"
},
{
"province_code": 29,
"province_name": "宁夏"
},
{
"province_code": 30,
"province_name": "青海省"
},
{
"province_code": 31,
"province_name": "新疆"
}
],
"total_count": 31
}

View File

@@ -0,0 +1,6 @@
{
"bank_code": "1000009501",
"city_code": "571",
"offset": 0,
"limit": 1
}

View File

@@ -0,0 +1,14 @@
{
"account_bank": "其他银行",
"account_bank_code": 1099,
"bank_alias": "浙江网商银行",
"bank_alias_code": "1000009501",
"count": 1,
"data": [
{
"branch_id": "323331000001",
"branch_name": "浙江网商银行股份有限公司"
}
],
"total_count": 1
}