feat(wxapi): 新增自定义交易组件资金相关接口

This commit is contained in:
Fu Diwei
2022-04-11 21:49:04 +08:00
parent 2263398e4b
commit 3afba4febf
44 changed files with 950 additions and 2 deletions

View File

@@ -1231,5 +1231,227 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync<Models.ShopWxpayGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Funds
/// <summary>
/// <para>异步调用 [POST] /shop/funds/scanorderflow 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/scanorderflow.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsScanOrderFlowResponse> ExecuteShopFundsScanOrderFlowAsync(this WechatApiClient client, Models.ShopFundsScanOrderFlowRequest 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", "scanorderflow")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsScanOrderFlowResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getorderflow 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/getorderflow.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetOrderFlowResponse> ExecuteShopFundsGetOrderFlowAsync(this WechatApiClient client, Models.ShopFundsGetOrderFlowRequest 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", "getorderflow")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetOrderFlowResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getbalance 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/getbalance.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetBalanceResponse> ExecuteShopFundsGetBalanceAsync(this WechatApiClient client, Models.ShopFundsGetBalanceRequest 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", "getbalance")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetBalanceResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/submitwithdraw 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/submitwithdraw.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsSubmitWithdrawResponse> ExecuteShopFundsSubmitWithdrawAsync(this WechatApiClient client, Models.ShopFundsSubmitWithdrawRequest 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", "submitwithdraw")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsSubmitWithdrawResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/scanwithdraw 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/scanwithdraw.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsScanWithdrawResponse> ExecuteShopFundsScanWithdrawAsync(this WechatApiClient client, Models.ShopFundsScanWithdrawRequest 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", "scanwithdraw")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsScanWithdrawResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getwithdrawdetail 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/getwithdrawdetail.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetWithdrawDetailResponse> ExecuteShopFundsGetWithdrawDetailAsync(this WechatApiClient client, Models.ShopFundsGetWithdrawDetailRequest 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", "getwithdrawdetail")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetWithdrawDetailResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/setbankaccount 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/setbankaccount.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsSetBankAccountResponse> ExecuteShopFundsSetBankAccountAsync(this WechatApiClient client, Models.ShopFundsSetBankAccountRequest 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", "setbankaccount")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsSetBankAccountResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/getbankaccount 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/getbankaccount.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsGetBankAccountResponse> ExecuteShopFundsGetBankAccountAsync(this WechatApiClient client, Models.ShopFundsGetBankAccountRequest 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", "getbankaccount")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsGetBankAccountResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/qrcode/gen 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/gen.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsQrcodeGenerateResponse> ExecuteShopFundsQrcodeGenerateAsync(this WechatApiClient client, Models.ShopFundsQrcodeGenerateRequest 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", "qrcode", "gen")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsQrcodeGenerateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/qrcode/get 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/get.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsQrcodeGetResponse> ExecuteShopFundsQrcodeGetAsync(this WechatApiClient client, Models.ShopFundsQrcodeGetRequest 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", "qrcode", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsQrcodeGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/funds/qrcode/check 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/check.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopFundsQrcodeCheckResponse> ExecuteShopFundsQrcodeCheckAsync(this WechatApiClient client, Models.ShopFundsQrcodeCheckRequest 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", "qrcode", "check")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopFundsQrcodeCheckResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -45,7 +45,7 @@
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_num")]
[System.Text.Json.Serialization.JsonPropertyName("bank_num")]
public string BankAccount { get; set; } = default!;
public string BankAccountNumber { get; set; } = default!;
/// <summary>
/// 获取或设置银行名称。

View File

@@ -21,7 +21,7 @@
/// </summary>
[Newtonsoft.Json.JsonProperty("account_number")]
[System.Text.Json.Serialization.JsonPropertyName("account_number")]
public string BankAccount { get; set; } = string.Empty;
public string BankAccountNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行名称。

View File

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

View File

@@ -0,0 +1,49 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbankaccount 接口的响应。</para>
/// </summary>
public class ShopFundsGetBankAccountResponse : WechatApiResponse
{
public static class Types
{
public class Account
{
/// <summary>
/// 获取或设置银行账户类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_account_type")]
[System.Text.Json.Serialization.JsonPropertyName("bank_account_type")]
public string BankAccountType { get; set; } = default!;
/// <summary>
/// 获取或设置银行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank")]
public string BankName { 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("account_number")]
[System.Text.Json.Serialization.JsonPropertyName("account_number")]
public string BankAccountNumber { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置银行账户信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_info")]
[System.Text.Json.Serialization.JsonPropertyName("account_info")]
public Types.Account Account { get; set; } = default!;
}
}

View File

@@ -0,0 +1,49 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/setbankaccount 接口的请求。</para>
/// </summary>
public class ShopFundsSetBankAccountRequest : WechatApiRequest, IInferable<ShopFundsSetBankAccountRequest, ShopFundsSetBankAccountResponse>
{
public static class Types
{
public class Account
{
/// <summary>
/// 获取或设置银行账户类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_account_type")]
[System.Text.Json.Serialization.JsonPropertyName("bank_account_type")]
public string BankAccountType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_bank")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank")]
public string BankName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行省市编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_address_code")]
[System.Text.Json.Serialization.JsonPropertyName("bank_address_code")]
public string BankAddressCode { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行账户。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_number")]
[System.Text.Json.Serialization.JsonPropertyName("account_number")]
public string BankAccountNumber { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置银行账户信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_info")]
[System.Text.Json.Serialization.JsonPropertyName("account_info")]
public Types.Account Account { get; set; } = new Types.Account();
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/setbankaccount 接口的响应。</para>
/// </summary>
public class ShopFundsSetBankAccountResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/check 接口的请求。</para>
/// </summary>
public class ShopFundsQrcodeCheckRequest : WechatApiRequest, IInferable<ShopFundsQrcodeCheckRequest, ShopFundsQrcodeCheckResponse>
{
/// <summary>
/// 获取或设置二维码 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_ticket")]
public string QrcodeTicket { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/check 接口的响应。</para>
/// </summary>
public class ShopFundsQrcodeCheckResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置扫码状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int Status { get; set; }
/// <summary>
/// 获取或设置扫码者身份类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("scan_user_type")]
[System.Text.Json.Serialization.JsonPropertyName("scan_user_type")]
public int ScanUserType { get; set; }
/// <summary>
/// 获取或设置业务返回错误码。
/// </summary>
[Newtonsoft.Json.JsonProperty("self_check_err_code")]
[System.Text.Json.Serialization.JsonPropertyName("self_check_err_code")]
public int? SelfCheckErrorCode { get; set; }
/// <summary>
/// 获取或设置业务返回错误信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("self_check_err_msg")]
[System.Text.Json.Serialization.JsonPropertyName("self_check_err_msg")]
public string? SelfCheckErrorMessage { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/gen 接口的请求。</para>
/// </summary>
public class ShopFundsQrcodeGenerateRequest : WechatApiRequest, IInferable<ShopFundsQrcodeGenerateRequest, ShopFundsQrcodeGenerateResponse>
{
/// <summary>
/// 获取或设置需要验证的身份类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("identity_type")]
[System.Text.Json.Serialization.JsonPropertyName("identity_type")]
public int IdentityType { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/gen 接口的响应。</para>
/// </summary>
public class ShopFundsQrcodeGenerateResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置二维码 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_ticket")]
public string QrcodeTicket { get; set; } = default!;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/get 接口的请求。</para>
/// </summary>
public class ShopFundsQrcodeGetRequest : WechatApiRequest, IInferable<ShopFundsQrcodeGetRequest, ShopFundsQrcodeGetResponse>
{
/// <summary>
/// 获取或设置二维码 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_ticket")]
public string QrcodeTicket { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/qrcode/get 接口的响应。</para>
/// </summary>
public class ShopFundsQrcodeGetResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置二维码数据(经 Base64 编码)。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_buf")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_buf")]
public string QrcodeData { get; set; } = default!;
}
}

View File

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

View File

@@ -0,0 +1,37 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getbalance 接口的响应。</para>
/// </summary>
public class ShopFundsGetBalanceResponse : WechatApiResponse
{
public static class Types
{
public class Balance
{
/// <summary>
/// 获取或设置可用余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("available_amount")]
[System.Text.Json.Serialization.JsonPropertyName("available_amount")]
public int AvailableAmount { get; set; }
/// <summary>
/// 获取或设置待结算余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("pending_amount")]
[System.Text.Json.Serialization.JsonPropertyName("pending_amount")]
public int PendingAmount { get; set; }
}
}
/// <summary>
/// 获取或设置余额信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance_info")]
[System.Text.Json.Serialization.JsonPropertyName("balance_info")]
public Types.Balance Balance { get; set; } = default!;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getorderflow 接口的请求。</para>
/// </summary>
public class ShopFundsGetOrderFlowRequest : WechatApiRequest, IInferable<ShopFundsGetOrderFlowRequest, ShopFundsGetOrderFlowResponse>
{
/// <summary>
/// 获取或设置资金流水单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_flow_id")]
[System.Text.Json.Serialization.JsonPropertyName("funds_flow_id")]
public string FundsFlowId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,83 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getorderflow 接口的响应。</para>
/// </summary>
public class ShopFundsGetOrderFlowResponse : WechatApiResponse
{
public static class Types
{
public class FundsFlow
{
/// <summary>
/// 获取或设置资金流水单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_flow_id")]
[System.Text.Json.Serialization.JsonPropertyName("funds_flow_id")]
public string FundsFlowId { get; set; } = default!;
/// <summary>
/// 获取或设置资金类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public string Type { get; set; } = default!;
/// <summary>
/// 获取或设置流水类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("flow_type")]
[System.Text.Json.Serialization.JsonPropertyName("flow_type")]
public string FlowType { get; set; } = default!;
/// <summary>
/// 获取或设置金额(单位:元)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public double Amount { get; set; }
/// <summary>
/// 获取或设置余额(单位:元)。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance")]
[System.Text.Json.Serialization.JsonPropertyName("balance")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public double Balance { get; set; }
/// <summary>
/// 获取或设置业务类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("busi_type")]
[System.Text.Json.Serialization.JsonPropertyName("busi_type")]
public string? BusinessType { get; set; }
/// <summary>
/// 获取或设置业务单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("request_no")]
[System.Text.Json.Serialization.JsonPropertyName("request_no")]
public string? RequestNumber { get; set; }
/// <summary>
/// 获取或设置记账时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("bookkeeping_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("bookkeeping_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))]
public DateTimeOffset BookKeepingTIme { get; set; }
}
}
/// <summary>
/// 获取或设置资金流水信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_flow")]
[System.Text.Json.Serialization.JsonPropertyName("funds_flow")]
public Types.FundsFlow FundsFlow { get; set; } = default!;
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/scanorderflow 接口的请求。</para>
/// </summary>
public class ShopFundsScanOrderFlowRequest : WechatApiRequest, IInferable<ShopFundsScanOrderFlowRequest, ShopFundsScanOrderFlowResponse>
{
/// <summary>
/// 获取或设置日期字符串格式yyyyMMdd
/// </summary>
[Newtonsoft.Json.JsonProperty("date")]
[System.Text.Json.Serialization.JsonPropertyName("date")]
public string DateString { get; set; } = string.Empty;
/// <summary>
/// 获取或设置分页页数(从 1 开始)。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_num")]
[System.Text.Json.Serialization.JsonPropertyName("page_num")]
public int Page { get; set; } = 1;
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/scanorderflow 接口的响应。</para>
/// </summary>
public class ShopFundsScanOrderFlowResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置资金流水单号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_flow_ids")]
[System.Text.Json.Serialization.JsonPropertyName("funds_flow_ids")]
public string[] FundsFlowIdList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_num")]
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getwithdrawdetail 接口的请求。</para>
/// </summary>
public class ShopFundsGetWithdrawDetailRequest : WechatApiRequest, IInferable<ShopFundsGetWithdrawDetailRequest, ShopFundsGetWithdrawDetailResponse>
{
/// <summary>
/// 获取或设置提现单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,84 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/getwithdrawdetail 接口的响应。</para>
/// </summary>
public class ShopFundsGetWithdrawDetailResponse : WechatApiResponse
{
public static class Types
{
public class Withdraw
{
/// <summary>
/// 获取或设置提现金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
public int Amount { get; set; }
/// <summary>
/// 获取或设置提现备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string? Remark { get; set; }
/// <summary>
/// 获取或设置银行名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_name")]
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
public string? BankName { get; set; }
/// <summary>
/// 获取或设置银行账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_num")]
[System.Text.Json.Serialization.JsonPropertyName("bank_num")]
public string? BankAccountNumber { get; set; }
/// <summary>
/// 获取或设置银行附言。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_memo")]
[System.Text.Json.Serialization.JsonPropertyName("bank_memo")]
public string? BankMemo { get; set; }
/// <summary>
/// 获取或设置提现状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public string Status { get; set; } = default!;
/// <summary>
/// 获取或设置提现原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("reason")]
[System.Text.Json.Serialization.JsonPropertyName("reason")]
public string? Reason { get; set; }
/// <summary>
/// 获取或设置创建时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
/// <summary>
/// 获取或设置修改时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
public long UpdateTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置提现信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("withdraw_info")]
[System.Text.Json.Serialization.JsonPropertyName("withdraw_info")]
public Types.Withdraw Withdraw { get; set; } = default!;
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/scanwithdraw 接口的请求。</para>
/// </summary>
public class ShopFundsScanWithdrawRequest : WechatApiRequest, IInferable<ShopFundsScanWithdrawRequest, ShopFundsScanWithdrawResponse>
{
/// <summary>
/// 获取或设置分页页数(从 1 开始)。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_num")]
[System.Text.Json.Serialization.JsonPropertyName("page_num")]
public int Page { get; set; } = 1;
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/scanwithdraw 接口的响应。</para>
/// </summary>
public class ShopFundsScanWithdrawResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置提现单号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_nos")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_nos")]
public string[] OutRequestNumberList { get; set; } = default!;
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_num")]
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/submitwithdraw 接口的请求。</para>
/// </summary>
public class ShopFundsSubmitWithdrawRequest : WechatApiRequest, IInferable<ShopFundsSubmitWithdrawRequest, ShopFundsSubmitWithdrawResponse>
{
/// <summary>
/// 获取或设置提现金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
public int Amount { get; set; }
/// <summary>
/// 获取或设置提现备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string? Remark { get; set; }
/// <summary>
/// 获取或设置银行附言。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_memo")]
[System.Text.Json.Serialization.JsonPropertyName("bank_memo")]
public string? BankMemo { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/funds/submitwithdraw 接口的响应。</para>
/// </summary>
public class ShopFundsSubmitWithdrawResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置提现单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = default!;
/// <summary>
/// 获取或设置二维码 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_ticket")]
public string QrcodeTicket { get; set; } = default!;
}
}

View File

@@ -0,0 +1,10 @@
{
"account_info": {
"bank_account_type": "ACCOUNT_TYPE_PRIVATE",
"account_bank": "招商银行",
"bank_address_code": "100000",
"account_number": "1234567890"
},
"errcode": 0,
"errmsg": "OK"
}

View File

@@ -0,0 +1,8 @@
{
"account_info": {
"bank_account_type": "ACCOUNT_TYPE_PRIVATE",
"account_bank": "招商银行",
"bank_address_code": "100000",
"account_number": "1234567890"
}
}

View File

@@ -0,0 +1,3 @@
{
"qrcode_ticket": "05ba627d5b73b6f3ef0dcfc7"
}

View File

@@ -0,0 +1,8 @@
{
"errcode": 0,
"errmsg": "ok",
"status": 0,
"self_check_err_code": 0,
"self_check_err_msg": "",
"scan_user_type": 1
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"qrcode_ticket": "xxxxx"
}

View File

@@ -0,0 +1,3 @@
{
"qrcode_ticket": "05ba627d5b73b6f3ef0dcfc7"
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"qrcode_buf": "xxxxx"
}

View File

@@ -0,0 +1,6 @@
{
"balance_info": {
"available_amount": 45331,
"pending_amount": 7549
}
}

View File

@@ -0,0 +1,3 @@
{
"funds_flow_id": "1651031426690650"
}

View File

@@ -0,0 +1,12 @@
{
"funds_flow": {
"bookkeeping_time": "2020-08-20 00:08:13",
"funds_flow_id": "4200000586202008206907203418",
"type": "交易",
"flow_type": "收入",
"amount": "0.10",
"balance": "115.12",
"busi_type": "订单",
"request_no": "1768262391135651"
}
}

View File

@@ -0,0 +1,5 @@
{
"page_num": 1,
"page_size": 100,
"date": "20211120"
}

View File

@@ -0,0 +1,4 @@
{
"funds_flow_ids": ["123456789123", "12345678229"],
"total_num": 2
}

View File

@@ -0,0 +1,3 @@
{
"out_request_no": "wd13675014323600561372"
}

View File

@@ -0,0 +1,13 @@
{
"withdraw_info": {
"amount": 7,
"create_time": 1590733930,
"update_time": 1590773555,
"reason": "",
"remark": "0529日14点31分提现",
"bank_memo": "0529日14点31分提现",
"bank_name": "",
"bank_num": "",
"status": "SUCCESS"
}
}

View File

@@ -0,0 +1,4 @@
{
"page_num": 1,
"page_size": 2
}

View File

@@ -0,0 +1,4 @@
{
"out_request_nos": ["3163339305837870", "180687538055"],
"total_num": 103
}

View File

@@ -0,0 +1,5 @@
{
"amount": 1,
"remark": "sss",
"bank_memo": ""
}

View File

@@ -0,0 +1,6 @@
{
"errcode": 0,
"errmsg": "OK",
"out_request_no": "xxxxx",
"qrcode_ticket": "xxxxx"
}