feat(wxapi): 新增交易组件资金管理相关接口

This commit is contained in:
Fu Diwei
2021-09-18 13:56:38 +08:00
parent 9b1f2407b5
commit 66a237923e
29 changed files with 798 additions and 0 deletions

View File

@@ -1379,5 +1379,127 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync<Models.ProductCouponGetUserResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Funds
/// <summary>
/// <para>异步调用 [POST] /product/funds/getbalance 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/get_balance.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsGetBalanceResponse> ExecuteProductFundsGetBalanceAsync(this WechatApiClient client, Models.ProductFundsGetBalanceRequest 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, "product", "funds", "getbalance")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsGetBalanceResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /product/funds/scanorderflow 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/scan_order_flow.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsScanOrderFlowResponse> ExecuteProductFundsScanOrderFlowAsync(this WechatApiClient client, Models.ProductFundsScanOrderFlowRequest 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, "product", "funds", "scanorderflow")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsScanOrderFlowResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /product/funds/getorderflow 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/get_order_flow.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsGetOrderFlowResponse> ExecuteProductFundsGetOrderFlowAsync(this WechatApiClient client, Models.ProductFundsGetOrderFlowRequest 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, "product", "funds", "getorderflow")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsGetOrderFlowResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /product/funds/scanwithdraw 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/scan_withdraw.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsScanWithdrawResponse> ExecuteProductFundsScanWithdrawAsync(this WechatApiClient client, Models.ProductFundsScanWithdrawRequest 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, "product", "funds", "scanwithdraw")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsScanWithdrawResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /product/funds/getwithdrawdetail 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/get_withdraw_detail.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsGetWithdrawDetailResponse> ExecuteProductFundsGetWithdrawDetailAsync(this WechatApiClient client, Models.ProductFundsGetWithdrawDetailRequest 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, "product", "funds", "getwithdrawdetail")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsGetWithdrawDetailResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /product/funds/setbankaccount 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent/API/funds/set_bank_account.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ProductFundsSetBankAccountResponse> ExecuteProductFundsSetBankAccountAsync(this WechatApiClient client, Models.ProductFundsSetBankAccountRequest 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, "product", "funds", "setbankaccount")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ProductFundsSetBankAccountResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getbalance 接口的请求。</para>
/// </summary>
public class ProductFundsGetBalanceRequest : WechatApiRequest
{
}
}

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getbalance 接口的响应。</para>
/// </summary>
public class ProductFundsGetBalanceResponse : WechatApiResponse
{
/// <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("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getorderflow 接口的请求。</para>
/// </summary>
public class ProductFundsGetOrderFlowRequest : WechatApiRequest
{
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public long OrderId { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getorderflow 接口的响应。</para>
/// </summary>
public class ProductFundsGetOrderFlowResponse : WechatApiResponse
{
public static class Types
{
public class OrderFlow : ProductFundsScanOrderFlowResponse.Types.OrderFlow
{
}
}
/// <summary>
/// 获取或设置订单资金流水信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_flow")]
[System.Text.Json.Serialization.JsonPropertyName("order_flow")]
public Types.OrderFlow OrderFlow { get; set; } = default!;
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getwithdrawdetail 接口的请求。</para>
/// </summary>
public class ProductFundsGetWithdrawDetailRequest : WechatApiRequest
{
/// <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,81 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/getwithdrawdetail 接口的响应。</para>
/// </summary>
public class ProductFundsGetWithdrawDetailResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置商户提现单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = default!;
/// <summary>
/// 获取或设置提现状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public string Status { get; set; } = default!;
/// <summary>
/// 获取或设置提现金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
public int Amount { get; set; }
/// <summary>
/// 获取或设置失败原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("reason")]
[System.Text.Json.Serialization.JsonPropertyName("reason")]
public string? FailReason { 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_num")]
[System.Text.Json.Serialization.JsonPropertyName("bank_num")]
public string BankAccount { 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("bank_memo")]
[System.Text.Json.Serialization.JsonPropertyName("bank_memo")]
public string? BankMemo { 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("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/scanorderflow 接口的请求。</para>
/// </summary>
public class ProductFundsScanOrderFlowRequest : WechatApiRequest
{
/// <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,101 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/scanorderflow 接口的响应。</para>
/// </summary>
public class ProductFundsScanOrderFlowResponse : WechatApiResponse
{
public static class Types
{
public class OrderFlow
{
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public long OrderId { 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("price")]
[System.Text.Json.Serialization.JsonPropertyName("price")]
public int Price { get; set; }
/// <summary>
/// 获取或设置订单总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_price")]
[System.Text.Json.Serialization.JsonPropertyName("order_price")]
public int TotalFee { get; set; }
/// <summary>
/// 获取或设置打折金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("discount_fee")]
[System.Text.Json.Serialization.JsonPropertyName("discount_fee")]
public int DiscountFee { get; set; }
/// <summary>
/// 获取或设置服务费金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_fee")]
[System.Text.Json.Serialization.JsonPropertyName("service_fee")]
public int ServiceFee { get; set; }
/// <summary>
/// 获取或设置手续费金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("handling_fee")]
[System.Text.Json.Serialization.JsonPropertyName("handling_fee")]
public int HandlingFee { get; set; }
/// <summary>
/// 获取或设置退款类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("refunding_type")]
[System.Text.Json.Serialization.JsonPropertyName("refunding_type")]
public int RefundType { get; set; }
/// <summary>
/// 获取或设置已退款金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_fee")]
[System.Text.Json.Serialization.JsonPropertyName("refund_fee")]
public int RefundFee { get; set; }
/// <summary>
/// 获取或设置结算时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("settled_time")]
[System.Text.Json.Serialization.JsonPropertyName("settled_time")]
public long? SettleTimestamp { get; set; }
/// <summary>
/// 获取或设置下单时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_time")]
[System.Text.Json.Serialization.JsonPropertyName("order_time")]
public long OrderTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置订单资金流水列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_flow")]
[System.Text.Json.Serialization.JsonPropertyName("order_flow")]
public Types.OrderFlow[] OrderFlowList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/scanwithdraw 接口的请求。</para>
/// </summary>
public class ProductFundsScanWithdrawRequest : WechatApiRequest
{
/// <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,87 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/scanwithdraw 接口的响应。</para>
/// </summary>
public class ProductFundsScanWithdrawResponse : WechatApiResponse
{
public static class Types
{
public class Withdraw
{
/// <summary>
/// 获取或设置商户提现单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = default!;
/// <summary>
/// 获取或设置提现状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public string Status { get; set; } = default!;
/// <summary>
/// 获取或设置提现金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
public int Amount { get; set; }
/// <summary>
/// 获取或设置失败原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("reason")]
[System.Text.Json.Serialization.JsonPropertyName("reason")]
public string? FailReason { 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; }
/// <summary>
/// 获取或设置更新时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("wxpay_update_time")]
[System.Text.Json.Serialization.JsonPropertyName("wxpay_update_time")]
public long UpdateTimestamp { get; set; }
/// <summary>
/// 获取或设置开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("wxpay_create_time")]
[System.Text.Json.Serialization.JsonPropertyName("wxpay_create_time")]
public long CreateTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置提现记录列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public Types.Withdraw[] WithdrawList { 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,66 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/setbankaccount 接口的请求。</para>
/// </summary>
public class ProductFundsSetBankAccountRequest : WechatApiRequest
{
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_number")]
[System.Text.Json.Serialization.JsonPropertyName("account_number")]
public string BankAccount { 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("account_bank4show")]
[System.Text.Json.Serialization.JsonPropertyName("account_bank4show")]
public string? BankNameForShow { get; set; }
/// <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("bank_branch_id")]
[System.Text.Json.Serialization.JsonPropertyName("bank_branch_id")]
public string? BankBranchId { get; set; }
}
}
/// <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,12 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/setbankaccount 接口的响应。</para>
/// </summary>
public class ProductFundsSetBankAccountResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/submitwithdraw 接口的请求。</para>
/// </summary>
public class ProductFundsSubmitWithdrawRequest : WechatApiRequest
{
/// <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,18 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /product/funds/submitwithdraw 接口的响应。</para>
/// </summary>
public class ProductFundsSubmitWithdrawResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置二维码 Ticket。
/// </summary>
[Newtonsoft.Json.JsonProperty("qrcode_ticket")]
[System.Text.Json.Serialization.JsonPropertyName("qrcode_ticket")]
public string QrcodeTicket { get; set; } = default!;
}
}