using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
public static class WechatTenpayClientExecuteBankTransferExtensions
{
#region Batches
///
/// 异步调用 [POST] /bank-transfer/batches 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteCreateBankTransferBatchAsync(this WechatTenpayClient client, Models.CreateBankTransferBatchRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "bank-transfer", "batches");
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no} 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankTransferBatchByOutBatchNumberAsync(this WechatTenpayClient client, Models.GetBankTransferBatchByOutBatchNumberRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-transfer", "batches", "out-batch-no", request.OutBatchNumber)
.SetQueryParam("need_query_detail", request.RequireQueryDetail)
.SetQueryParam("detail_status", request.DetailStatus)
.SetQueryParam("offset", request.Offset)
.SetQueryParam("limit", request.Limit);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-transfer/batches/batch-id/{batch_id} 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankTransferBatchByBatchIdAsync(this WechatTenpayClient client, Models.GetBankTransferBatchByBatchIdRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail)
.SetQueryParam("detail_state", request.DetailStatus)
.SetQueryParam("offset", request.Offset)
.SetQueryParam("limit", request.Limit);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankTransferBatchDetailByOutDetailNumberAsync(this WechatTenpayClient client, Models.GetBankTransferBatchDetailByOutDetailNumberRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-transfer", "batches", "out-batch-no", request.OutBatchNumber, "details", "out-detail-no", request.OutDetailNumber);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankTransferBatchDetailByDetailIdAsync(this WechatTenpayClient client, Models.GetBankTransferBatchDetailByDetailIdRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Receipt
///
/// 异步调用 [POST] /bank-batch-transfer/receipt/summary-receipts 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteCreateBankBatchTransferSummaryReceiptAsync(this WechatTenpayClient client, Models.CreateBankBatchTransferSummaryReceiptRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "bank-batch-transfer", "receipt", "summary-receipts");
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-batch-transfer/receipt/summary-receipts 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankBatchTransferSummaryReceiptByOutBatchNumberAsync(this WechatTenpayClient client, Models.GetBankBatchTransferSummaryReceiptByOutBatchNumberRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-batch-transfer", "receipt", "summary-receipts")
.SetQueryParam("out_batch_no", request.OutBatchNumber);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /bank-batch-transfer/receipt/detail-receipts 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteCreateBankBatchTransferDetailReceiptAsync(this WechatTenpayClient client, Models.CreateBankBatchTransferDetailReceiptRequest 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
.CreateFlurlRequest(request, HttpMethod.Post, "bank-batch-transfer", "receipt", "detail-receipts");
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /bank-batch-transfer/receipt/detail-receipts 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteGetBankBatchTransferDetailReceiptByOutDetailNumberAsync(this WechatTenpayClient client, Models.GetBankBatchTransferDetailReceiptByOutDetailNumberRequest 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
.CreateFlurlRequest(request, HttpMethod.Get, "bank-batch-transfer", "receipt", "detail-receipts")
.SetQueryParam("out_batch_no", request.OutBatchNumber)
.SetQueryParam("out_detail_no", request.OutDetailNumber);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}