feat(tenpayv3): 新增银行批量转账相关接口

This commit is contained in:
Fu Diwei
2023-08-11 12:12:55 +08:00
parent f0c89e06bd
commit 647725ac3d
94 changed files with 1463 additions and 102 deletions

View File

@@ -0,0 +1,210 @@
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
/// <summary>
/// <para>异步调用 [POST] /bank-transfer/batches 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_1.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateBankTransferBatchResponse> 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
.CreateRequest(request, HttpMethod.Post, "bank-transfer", "batches");
return await client.SendRequestWithJsonAsync<Models.CreateBankTransferBatchResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_4.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankTransferBatchByOutBatchNumberResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-transfer", "batches", "out-batch-no", request.OutBatchNumber)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_status", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetBankTransferBatchByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-transfer/batches/batch-id/{batch_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankTransferBatchByBatchIdResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_state", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetBankTransferBatchByBatchIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_5.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankTransferBatchDetailByOutDetailNumberResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-transfer", "batches", "out-batch-no", request.OutBatchNumber, "details", "out-detail-no", request.OutDetailNumber);
return await client.SendRequestWithJsonAsync<Models.GetBankTransferBatchDetailByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_3.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankTransferBatchDetailByDetailIdResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendRequestWithJsonAsync<Models.GetBankTransferBatchDetailByDetailIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Receipt
/// <summary>
/// <para>异步调用 [POST] /bank-batch-transfer/receipt/summary-receipts 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_6.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateBankBatchTransferSummaryReceiptResponse> 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
.CreateRequest(request, HttpMethod.Post, "bank-batch-transfer", "receipt", "summary-receipts");
return await client.SendRequestWithJsonAsync<Models.CreateBankBatchTransferSummaryReceiptResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-batch-transfer/receipt/summary-receipts 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_7.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankBatchTransferSummaryReceiptByOutBatchNumberResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-batch-transfer", "receipt", "summary-receipts")
.SetQueryParam("out_batch_no", request.OutBatchNumber);
return await client.SendRequestWithJsonAsync<Models.GetBankBatchTransferSummaryReceiptByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /bank-batch-transfer/receipt/detail-receipts 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_8.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateBankBatchTransferDetailReceiptResponse> 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
.CreateRequest(request, HttpMethod.Post, "bank-batch-transfer", "receipt", "detail-receipts");
return await client.SendRequestWithJsonAsync<Models.CreateBankBatchTransferDetailReceiptResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /bank-batch-transfer/receipt/detail-receipts 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_2_9.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetBankBatchTransferDetailReceiptByOutDetailNumberResponse> 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
.CreateRequest(request, HttpMethod.Get, "bank-batch-transfer", "receipt", "detail-receipts")
.SetQueryParam("out_batch_no", request.OutBatchNumber)
.SetQueryParam("out_detail_no", request.OutDetailNumber);
return await client.SendRequestWithJsonAsync<Models.GetBankBatchTransferDetailReceiptByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Net.Http; using System.Net.Http;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -29,54 +29,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.CreatePartnerTransferBatchResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.CreatePartnerTransferBatchResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/batch-id/{batch_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPartnerTransferBatchByBatchIdResponse> ExecuteGetPartnerTransferBatchByBatchIdAsync(this WechatTenpayClient client, Models.GetPartnerTransferBatchByBatchIdRequest 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, "partner-transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_status", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchByBatchIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_3.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPartnerTransferBatchDetailByDetailIdResponse> ExecuteGetPartnerTransferBatchDetailByDetailIdAsync(this WechatTenpayClient client, Models.GetPartnerTransferBatchDetailByDetailIdRequest 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, "partner-transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchDetailByDetailIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary> /// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/out-batch-no/{out_batch_no} 接口。</para> /// <para>异步调用 [GET] /partner-transfer/batches/out-batch-no/{out_batch_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_4.shtml </para> /// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_4.shtml </para>
@@ -106,6 +58,35 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/batch-id/{batch_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPartnerTransferBatchByBatchIdResponse> ExecuteGetPartnerTransferBatchByBatchIdAsync(this WechatTenpayClient client, Models.GetPartnerTransferBatchByBatchIdRequest 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, "partner-transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_status", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchByBatchIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary> /// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。</para> /// <para>异步调用 [GET] /partner-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_5.shtml </para> /// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_5.shtml </para>
@@ -124,6 +105,25 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchDetailByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchDetailByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /partner-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_3.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPartnerTransferBatchDetailByDetailIdResponse> ExecuteGetPartnerTransferBatchDetailByDetailIdAsync(this WechatTenpayClient client, Models.GetPartnerTransferBatchDetailByDetailIdRequest 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, "partner-transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendRequestWithJsonAsync<Models.GetPartnerTransferBatchDetailByDetailIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion #endregion
} }
} }

View File

@@ -29,54 +29,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.CreateTransferBatchResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.CreateTransferBatchResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /transfer/batches/batch-id/{batch_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransferBatchByBatchIdResponse> ExecuteGetTransferBatchByBatchIdAsync(this WechatTenpayClient client, Models.GetTransferBatchByBatchIdRequest 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, "transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_status", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchByBatchIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransferBatchDetailByDetailIdResponse> ExecuteGetTransferBatchDetailByDetailIdAsync(this WechatTenpayClient client, Models.GetTransferBatchDetailByDetailIdRequest 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, "transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchDetailByDetailIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary> /// <summary>
/// <para>异步调用 [GET] /transfer/batches/out-batch-no/{out_batch_no} 接口。</para> /// <para>异步调用 [GET] /transfer/batches/out-batch-no/{out_batch_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_5.shtml </para> /// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_5.shtml </para>
@@ -106,6 +58,35 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.GetTransferBatchByOutBatchNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /transfer/batches/batch-id/{batch_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransferBatchByBatchIdResponse> ExecuteGetTransferBatchByBatchIdAsync(this WechatTenpayClient client, Models.GetTransferBatchByBatchIdRequest 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, "transfer", "batches", "batch-id", request.BatchId)
.SetQueryParam("need_query_detail", request.RequireQueryDetail);
if (request.DetailStatus != null)
flurlReq.SetQueryParam("detail_status", request.DetailStatus);
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value);
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchByBatchIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary> /// <summary>
/// <para>异步调用 [GET] /transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。</para> /// <para>异步调用 [GET] /transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_6.shtml </para> /// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_6.shtml </para>
@@ -124,6 +105,25 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchDetailByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.GetTransferBatchDetailByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
/// <summary>
/// <para>异步调用 [GET] /transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransferBatchDetailByDetailIdResponse> ExecuteGetTransferBatchDetailByDetailIdAsync(this WechatTenpayClient client, Models.GetTransferBatchDetailByDetailIdRequest 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, "transfer", "batches", "batch-id", request.BatchId, "details", "detail-id", request.DetailId);
return await client.SendRequestWithJsonAsync<Models.GetTransferBatchDetailByDetailIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion #endregion
#region BillReceipt #region BillReceipt
@@ -168,7 +168,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
} }
#endregion #endregion
#region Detail #region DetailReceipt
/// <summary> /// <summary>
/// <para>异步调用 [POST] /transfer-detail/electronic-receipts 接口。</para> /// <para>异步调用 [POST] /transfer-detail/electronic-receipts 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_9.shtml </para> /// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_9.shtml </para>
@@ -214,8 +214,5 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.GetTransferDetailElectronicReceiptByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken); return await client.SendRequestWithJsonAsync<Models.GetTransferDetailElectronicReceiptByOutDetailNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
} }
#endregion #endregion
#region Transfer
#endregion
} }
} }

View File

@@ -0,0 +1,115 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-transfer/batches 接口的请求。</para>
/// </summary>
public class CreateBankTransferBatchRequest : WechatTenpayRequest
{
public static class Types
{
public class TransferDetail : CreateTransferBatchRequest.Types.TransferDetail
{
}
}
/// <summary>
/// 获取或设置服务平台商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("platform_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("platform_mchid")]
public string PlatformMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置付款企业商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("specialized_payment_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("specialized_payment_mchid")]
public string SpecializedPaymentMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置实际出资商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sponsor_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sponsor_mchid")]
public string SponsorMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户授权商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_mchid")]
public string UserAuthorizedMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户授权 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_appid")]
public string UserAuthorizedAppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置批次名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_name")]
[System.Text.Json.Serialization.JsonPropertyName("batch_name")]
public string BatchName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置批次备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_remark")]
[System.Text.Json.Serialization.JsonPropertyName("batch_remark")]
public string BatchRemark { get; set; } = string.Empty;
/// <summary>
/// 获取或设置附加信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("attach_remark")]
[System.Text.Json.Serialization.JsonPropertyName("attach_remark")]
public string? Attachment { get; set; }
/// <summary>
/// 获取或设置转账总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_amount")]
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
public int TotalAmount { get; set; }
/// <summary>
/// 获取或设置转账总笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置转账明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_detail_list")]
public IList<Types.TransferDetail> TransferDetailList { get; set; } = new List<Types.TransferDetail>();
/// <summary>
/// 获取或设置转账场景。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_scene")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_scene")]
public string? TransferScene { get; set; }
/// <summary>
/// 获取或设置转账用途。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_purpose")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_purpose")]
public string? TransferPurpose { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-transfer/batches 接口的响应。</para>
/// </summary>
public class CreateBankTransferBatchResponse : CreateTransferBatchResponse
{
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/batch-id/{batch_id} 接口的请求。</para>
/// </summary>
public class GetBankTransferBatchByBatchIdRequest : GetTransferBatchByBatchIdRequest
{
}
}

View File

@@ -0,0 +1,189 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/batch-id/{batch_id} 接口的响应。</para>
/// </summary>
public class GetBankTransferBatchByBatchIdResponse : WechatTenpayResponse
{
public static class Types
{
public class TransferDetail : GetBankTransferBatchByOutBatchNumberResponse.Types.TransferDetail
{
}
}
/// <summary>
/// 获取或设置银行服务商号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_sp_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("bank_sp_mchid")]
public string BankMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置服务平台商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("platform_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("platform_mchid")]
public string PlatformMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置付款企业商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("specialized_payment_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("specialized_payment_mchid")]
public string SpecializedPaymentMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置实际出资商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sponsor_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sponsor_mchid")]
public string SponsorMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_mchid")]
public string UserAuthorizedMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_appid")]
public string UserAuthorizedAppId { get; set; } = default!;
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_id")]
[System.Text.Json.Serialization.JsonPropertyName("batch_id")]
public string BatchId { get; set; } = default!;
/// <summary>
/// 获取或设置批次状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_state")]
[System.Text.Json.Serialization.JsonPropertyName("batch_state")]
public string BatchStatus { get; set; } = default!;
/// <summary>
/// 获取或设置批次名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_name")]
[System.Text.Json.Serialization.JsonPropertyName("batch_name")]
public string BatchName { get; set; } = default!;
/// <summary>
/// 获取或设置批次备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_remark")]
[System.Text.Json.Serialization.JsonPropertyName("batch_remark")]
public string BatchRemark { get; set; } = default!;
/// <summary>
/// 获取或设置附加信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("attach_remark")]
[System.Text.Json.Serialization.JsonPropertyName("attach_remark")]
public string? Attachment { get; set; }
/// <summary>
/// 获取或设置批次关闭原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("close_reason")]
[System.Text.Json.Serialization.JsonPropertyName("close_reason")]
public string? CloseReason { get; set; }
/// <summary>
/// 获取或设置转账总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_amount")]
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
public int TotalAmount { get; set; }
/// <summary>
/// 获取或设置转账总笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置批次创建时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset CreateTime { get; set; }
/// <summary>
/// 获取或设置批次更新时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
public DateTimeOffset? UpdateTime { get; set; }
/// <summary>
/// 获取或设置转账成功金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_amount")]
[System.Text.Json.Serialization.JsonPropertyName("success_amount")]
public int SuccessAmount { get; set; }
/// <summary>
/// 获取或设置转账成功笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_count")]
[System.Text.Json.Serialization.JsonPropertyName("success_count")]
public int SuccessCount { get; set; }
/// <summary>
/// 获取或设置转账失败金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_amount")]
[System.Text.Json.Serialization.JsonPropertyName("fail_amount")]
public int FailAmount { get; set; }
/// <summary>
/// 获取或设置转账失败笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_count")]
[System.Text.Json.Serialization.JsonPropertyName("fail_count")]
public int FailCount { get; set; }
/// <summary>
/// 获取或设置转账场景。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_scene")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_scene")]
public string? TransferScene { get; set; }
/// <summary>
/// 获取或设置转账用途。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_purpose")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_purpose")]
public string? TransferPurpose { get; set; }
/// <summary>
/// 获取或设置转账明细单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_detail_list")]
public Types.TransferDetail[]? TransferDetailList { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no} 接口的请求。</para>
/// </summary>
public class GetBankTransferBatchByOutBatchNumberRequest : GetTransferBatchByOutBatchNumberRequest
{
}
}

View File

@@ -0,0 +1,216 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no} 接口的响应。</para>
/// </summary>
public class GetBankTransferBatchByOutBatchNumberResponse : WechatTenpayResponse
{
public static class Types
{
public class TransferDetail
{
/// <summary>
/// 获取或设置商户明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_detail_no")]
public string OutDetailNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("detail_id")]
[System.Text.Json.Serialization.JsonPropertyName("detail_id")]
public string DetailId { get; set; } = default!;
/// <summary>
/// 获取或设置明细状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("detail_state")]
[System.Text.Json.Serialization.JsonPropertyName("detail_state")]
public string DetailStatus { get; set; } = default!;
/// <summary>
/// 获取或设置失败原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_reason")]
[System.Text.Json.Serialization.JsonPropertyName("fail_reason")]
public string? FailReason { get; set; }
}
}
/// <summary>
/// 获取或设置银行服务商号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_sp_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("bank_sp_mchid")]
public string BankMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置服务平台商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("platform_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("platform_mchid")]
public string PlatformMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置付款企业商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("specialized_payment_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("specialized_payment_mchid")]
public string SpecializedPaymentMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置实际出资商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sponsor_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sponsor_mchid")]
public string SponsorMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_mchid")]
public string UserAuthorizedMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_appid")]
public string UserAuthorizedAppId { get; set; } = default!;
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_id")]
[System.Text.Json.Serialization.JsonPropertyName("batch_id")]
public string BatchId { get; set; } = default!;
/// <summary>
/// 获取或设置批次状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_state")]
[System.Text.Json.Serialization.JsonPropertyName("batch_state")]
public string BatchStatus { get; set; } = default!;
/// <summary>
/// 获取或设置批次名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_name")]
[System.Text.Json.Serialization.JsonPropertyName("batch_name")]
public string BatchName { get; set; } = default!;
/// <summary>
/// 获取或设置批次备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_remark")]
[System.Text.Json.Serialization.JsonPropertyName("batch_remark")]
public string BatchRemark { get; set; } = default!;
/// <summary>
/// 获取或设置附加信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("attach_remark")]
[System.Text.Json.Serialization.JsonPropertyName("attach_remark")]
public string? Attachment { get; set; }
/// <summary>
/// 获取或设置批次关闭原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("close_reason")]
[System.Text.Json.Serialization.JsonPropertyName("close_reason")]
public string? CloseReason { get; set; }
/// <summary>
/// 获取或设置转账总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_amount")]
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
public int TotalAmount { get; set; }
/// <summary>
/// 获取或设置转账总笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置批次创建时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset CreateTime { get; set; }
/// <summary>
/// 获取或设置批次更新时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
public DateTimeOffset? UpdateTime { get; set; }
/// <summary>
/// 获取或设置转账成功金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_amount")]
[System.Text.Json.Serialization.JsonPropertyName("success_amount")]
public int SuccessAmount { get; set; }
/// <summary>
/// 获取或设置转账成功笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_count")]
[System.Text.Json.Serialization.JsonPropertyName("success_count")]
public int SuccessCount { get; set; }
/// <summary>
/// 获取或设置转账失败金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_amount")]
[System.Text.Json.Serialization.JsonPropertyName("fail_amount")]
public int FailAmount { get; set; }
/// <summary>
/// 获取或设置转账失败笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_count")]
[System.Text.Json.Serialization.JsonPropertyName("fail_count")]
public int FailCount { get; set; }
/// <summary>
/// 获取或设置转账场景。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_scene")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_scene")]
public string? TransferScene { get; set; }
/// <summary>
/// 获取或设置转账用途。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_purpose")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_purpose")]
public string? TransferPurpose { get; set; }
/// <summary>
/// 获取或设置转账明细单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_detail_list")]
public Types.TransferDetail[]? TransferDetailList { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口的请求。</para>
/// </summary>
public class GetBankTransferBatchDetailByDetailIdRequest : GetTransferBatchDetailByDetailIdRequest
{
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/batch-id/{batch_id}/details/detail-id/{detail_id} 接口的响应。</para>
/// </summary>
public class GetBankTransferBatchDetailByDetailIdResponse : GetBankTransferBatchDetailByOutDetailNumberResponse
{
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口的请求。</para>
/// </summary>
public class GetBankTransferBatchDetailByOutDetailNumberRequest : GetTransferBatchDetailByOutDetailNumberRequest
{
}
}

View File

@@ -0,0 +1,171 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-transfer/batches/out-batch-no/{out_batch_no}/details/out-detail-no/{out_detail_no} 接口的响应。</para>
/// </summary>
[WechatTenpaySensitive]
public class GetBankTransferBatchDetailByOutDetailNumberResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置银行服务商号。
/// </summary>
[Newtonsoft.Json.JsonProperty("bank_sp_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("bank_sp_mchid")]
public string BankMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置服务平台商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("platform_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("platform_mchid")]
public string PlatformMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置付款企业商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("specialized_payment_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("specialized_payment_mchid")]
public string SpecializedPaymentMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置实际出资商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sponsor_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sponsor_mchid")]
public string SponsorMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_mchid")]
public string UserAuthorizedMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置用户授权 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("user_authorized_appid")]
public string UserAuthorizedAppId { get; set; } = default!;
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("batch_id")]
[System.Text.Json.Serialization.JsonPropertyName("batch_id")]
public string BatchId { get; set; } = default!;
/// <summary>
/// 获取或设置商户明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_detail_no")]
public string OutDetailNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("detail_id")]
[System.Text.Json.Serialization.JsonPropertyName("detail_id")]
public string DetailId { get; set; } = default!;
/// <summary>
/// 获取或设置明细状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("detail_state")]
[System.Text.Json.Serialization.JsonPropertyName("detail_state")]
public string DetailStatus { get; set; } = default!;
/// <summary>
/// 获取或设置转账金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_amount")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_amount")]
public int TransferAmount { get; set; }
/// <summary>
/// 获取或设置转账备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_remark")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_remark")]
public string TransferRemark { get; set; } = default!;
/// <summary>
/// 获取或设置转账场景。
/// </summary>
[Newtonsoft.Json.JsonProperty("transfer_scene")]
[System.Text.Json.Serialization.JsonPropertyName("transfer_scene")]
public string? TransferScene { get; set; }
/// <summary>
/// 获取或设置失败原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_reason")]
[System.Text.Json.Serialization.JsonPropertyName("fail_reason")]
public string? FailReason { get; set; }
/// <summary>
/// 获取或设置收款账户类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("account_type")]
[System.Text.Json.Serialization.JsonPropertyName("account_type")]
public string AccountType { get; set; } = default!;
/// <summary>
/// 获取或设置收款用户 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置收款用户姓名(需使用商户私钥解密)。
/// </summary>
[Newtonsoft.Json.JsonProperty("username")]
[System.Text.Json.Serialization.JsonPropertyName("username")]
[WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)]
[WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)]
public string UserName { get; set; } = default!;
/// <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_card_number_tail")]
[System.Text.Json.Serialization.JsonPropertyName("bank_card_number_tail")]
public string? BankCardNumberTail { get; set; }
/// <summary>
/// 获取或设置转账发起时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("initiate_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("initiate_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset InitiateTime { get; set; }
/// <summary>
/// 获取或设置明细更新时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-batch-transfer/receipt/detail-receipts 接口的请求。</para>
/// </summary>
public class CreateBankBatchTransferDetailReceiptRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_detail_no")]
public string OutDetailNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-batch-transfer/receipt/detail-receipts 接口的响应。</para>
/// </summary>
public class CreateBankBatchTransferDetailReceiptResponse : GetBankBatchTransferDetailReceiptByOutDetailNumberResponse
{
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-batch-transfer/receipt/summary-receipts 接口的请求。</para>
/// </summary>
public class CreateBankBatchTransferSummaryReceiptRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,11 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /bank-batch-transfer/receipt/summary-receipts 接口的响应。</para>
/// </summary>
public class CreateBankBatchTransferSummaryReceiptResponse : GetBankBatchTransferSummaryReceiptByOutBatchNumberResponse
{
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-batch-transfer/receipt/detail-receipts 接口的请求。</para>
/// </summary>
public class GetBankBatchTransferDetailReceiptByOutDetailNumberRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutBatchNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置银行明细单号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutDetailNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,57 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-batch-transfer/receipt/detail-receipts 接口的响应。</para>
/// </summary>
public class GetBankBatchTransferDetailReceiptByOutDetailNumberResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = default!;
/// <summary>
/// 获取或设置银行明细单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_detail_no")]
public string OutDetailNumber { get; set; } = default!;
/// <summary>
/// 获取或设置电子回单申请单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("receipt_no")]
[System.Text.Json.Serialization.JsonPropertyName("receipt_no")]
public string ReceiptNumber { get; set; } = default!;
/// <summary>
/// 获取或设置电子回单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("receipt_state")]
[System.Text.Json.Serialization.JsonPropertyName("receipt_state")]
public string? ReceiptStatus { get; set; }
/// <summary>
/// 获取或设置电子回单文件的哈希方法。
/// </summary>
[Newtonsoft.Json.JsonProperty("hash_type")]
[System.Text.Json.Serialization.JsonPropertyName("hash_type")]
public string? HashType { get; set; }
/// <summary>
/// 获取或设置电子回单文件的哈希值。
/// </summary>
[Newtonsoft.Json.JsonProperty("hash_value")]
[System.Text.Json.Serialization.JsonPropertyName("hash_value")]
public string? HashValue { get; set; }
/// <summary>
/// 获取或设置电子回单文件的下载地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("download_url")]
[System.Text.Json.Serialization.JsonPropertyName("download_url")]
public string? DownloadUrl { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-batch-transfer/receipt/summary-receipts 接口的请求。</para>
/// </summary>
public class GetBankBatchTransferSummaryReceiptByOutBatchNumberRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutBatchNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,70 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /bank-batch-transfer/receipt/summary-receipts 接口的响应。</para>
/// </summary>
public class GetBankBatchTransferSummaryReceiptByOutBatchNumberResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置银行批次单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_batch_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_batch_no")]
public string OutBatchNumber { get; set; } = default!;
/// <summary>
/// 获取或设置电子回单申请单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("receipt_no")]
[System.Text.Json.Serialization.JsonPropertyName("receipt_no")]
public string ReceiptNumber { get; set; } = default!;
/// <summary>
/// 获取或设置电子回单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("receipt_state")]
[System.Text.Json.Serialization.JsonPropertyName("receipt_state")]
public string? ReceiptStatus { get; set; }
/// <summary>
/// 获取或设置电子回单文件的哈希方法。
/// </summary>
[Newtonsoft.Json.JsonProperty("hash_type")]
[System.Text.Json.Serialization.JsonPropertyName("hash_type")]
public string? HashType { get; set; }
/// <summary>
/// 获取或设置电子回单文件的哈希值。
/// </summary>
[Newtonsoft.Json.JsonProperty("hash_value")]
[System.Text.Json.Serialization.JsonPropertyName("hash_value")]
public string? HashValue { get; set; }
/// <summary>
/// 获取或设置电子回单文件的下载地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("download_url")]
[System.Text.Json.Serialization.JsonPropertyName("download_url")]
public string? DownloadUrl { get; set; }
/// <summary>
/// 获取或设置创建时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
public DateTimeOffset? CreateTime { get; set; }
/// <summary>
/// 获取或设置更新时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
public DateTimeOffset? UpdateTime { get; set; }
}
}

View File

@@ -1,4 +1,4 @@
using System; using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{ {

View File

@@ -0,0 +1,24 @@
{
"attach_remark": "付款专用商户单号11111",
"batch_name": "2019年1月深圳分部报销单",
"batch_remark": "2019年1月深圳分部报销单",
"out_batch_no": "plfk2020042013",
"platform_mchid": "1900001109",
"specialized_payment_mchid": "1900001109",
"sponsor_mchid": "1900001109",
"total_amount": 4000000,
"total_count": 200,
"transfer_detail_list": [
{
"openid": "o-MYE42l80oelYMDE34nYD456Xoy",
"out_detail_no": "x23zy545Bd5436",
"transfer_amount": 200000,
"transfer_remark": "2020年4月报销"
}
],
"transfer_purpose": "COMMISSION",
"transfer_scene": "ORDINARY_TRANSFER",
"user_authorized_appid": "wxaffdakkk11112e3",
"user_authorized_mchid": "1900001109"
}

View File

@@ -0,0 +1,5 @@
{
"batch_id": "1130000071100999991182020050700019480001",
"create_time": "2015-05-20T13:29:35+08:00",
"out_batch_no": "plfk2020042013"
}

View File

@@ -0,0 +1,33 @@
{
"attach_remark": "付款专用商户单号11111",
"bank_sp_mchid": "1900001109",
"batch_id": "1130000071100999991182020050700019480001",
"batch_name": "2019年1月深圳分部报销单",
"batch_remark": "2019年1月深圳分部报销单",
"batch_state": "ACCEPTED",
"close_reason": "OVERDUE_CLOSE",
"create_time": "2015-05-20T13:29:35+08:00",
"fail_amount": 100000,
"fail_count": 1,
"out_batch_no": "plfk2020042013",
"platform_mchid": "1900001109",
"specialized_payment_mchid": "1900001109",
"sponsor_mchid": "1900001109",
"success_amount": 3900000,
"success_count": 199,
"total_amount": 4000000,
"total_count": 200,
"transfer_detail_list": [
{
"detail_id": "1140000071100999991182020050700019500100",
"detail_state": "SUCCESS",
"fail_reason": "ACCOUNT_FROZEN",
"out_detail_no": "x23zy545Bd5436"
}
],
"transfer_purpose": "COMMISSION",
"transfer_scene": "ORDINARY_TRANSFER",
"update_time": "2015-05-20T13:29:35+08:00",
"user_authorized_appid": "wxf636efh567hg4356",
"user_authorized_mchid": "1900001109"
}

View File

@@ -0,0 +1,33 @@
{
"attach_remark": "付款专用商户单号11111",
"bank_sp_mchid": "1900001109",
"batch_id": "1130000071100999991182020050700019480001",
"batch_name": "2019年1月深圳分部报销单",
"batch_remark": "2019年1月深圳分部报销单",
"batch_state": "ACCEPTED",
"close_reason": "OVERDUE_CLOSE",
"create_time": "2015-05-20T13:29:35+08:00",
"fail_amount": 100000,
"fail_count": 1,
"out_batch_no": "plfk2020042013",
"platform_mchid": "1900001109",
"specialized_payment_mchid": "1900001109",
"sponsor_mchid": "1900001109",
"success_amount": 3900000,
"success_count": 199,
"total_amount": 4000000,
"total_count": 200,
"transfer_detail_list": [
{
"detail_id": "1140000071100999991182020050700019500100",
"detail_state": "SUCCESS",
"fail_reason": "ACCOUNT_FROZEN",
"out_detail_no": "x23zy545Bd5436"
}
],
"transfer_purpose": "COMMISSION",
"transfer_scene": "ORDINARY_TRANSFER",
"update_time": "2015-05-20T13:29:35+08:00",
"user_authorized_appid": "wxf636efh567hg4356",
"user_authorized_mchid": "1900001109"
}

View File

@@ -0,0 +1,24 @@
{
"account_type": "BANK_ACCOUNT",
"bank_card_number_tail": "1234",
"bank_name": "招商银行",
"bank_sp_mchid": "1900001109",
"batch_id": "1130000071100999991182020050700019480001",
"detail_id": "1140000071100999991182020050700019500100",
"detail_state": "SUCCESS",
"fail_reason": "ACCOUNT_FROZEN",
"initiate_time": "2015-05-20T13:29:35+08:00",
"openid": "o-MYE42l80oelYMDE34nYD456Xoy",
"out_batch_no": "plfk2020042013",
"out_detail_no": "x23zy545Bd5436",
"platform_mchid": "1900001109",
"specialized_payment_mchid": "1900001109",
"sponsor_mchid": "1900001109",
"transfer_amount": 200000,
"transfer_remark": "2020年4月报销",
"transfer_scene": "PAYROLL_CARD_TRANSFER",
"update_time": "2015-05-20T13:29:35+08:00",
"user_authorized_appid": "wxaffdakkk11112e3",
"user_authorized_mchid": "1900001109",
"username": "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"
}

View File

@@ -0,0 +1,24 @@
{
"account_type": "BANK_ACCOUNT",
"bank_card_number_tail": "1234",
"bank_name": "招商银行",
"bank_sp_mchid": "1900001109",
"batch_id": "1130000071100999991182020050700019480001",
"detail_id": "1140000071100999991182020050700019500100",
"detail_state": "SUCCESS",
"fail_reason": "ACCOUNT_FROZEN",
"initiate_time": "2015-05-20T13:29:35+08:00",
"openid": "o-MYE42l80oelYMDE34nYD456Xoy",
"out_batch_no": "plfk2020042013",
"out_detail_no": "x23zy545Bd5436",
"platform_mchid": "1900001109",
"specialized_payment_mchid": "1900001109",
"sponsor_mchid": "1900001109",
"transfer_amount": 200000,
"transfer_remark": "2020年4月报销",
"transfer_scene": "PAYROLL_CARD_TRANSFER",
"update_time": "2015-05-20T13:29:35+08:00",
"user_authorized_appid": "wxaffdakkk11112e3",
"user_authorized_mchid": "1900001109",
"username": "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"
}

View File

@@ -0,0 +1,4 @@
{
"out_batch_no": "GD2021011610162610BBdkkIwcu3",
"out_detail_no": "mx0911231610162610v4CNkO4HAf"
}

View File

@@ -0,0 +1,9 @@
{
"download_url": "https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx",
"hash_type": "SHA256",
"hash_value": "DE731F35146A0BEFADE5DB9D1E468D96C01CA8898119C674FEE9F11F4DBE5529",
"out_batch_no": "GD2021011610162610BBdkkIwcu3",
"out_detail_no": "mx0911231610162610v4CNkO4HAf",
"receipt_no": "1050000010509999485212020110200058820001",
"receipt_state": "ACCEPTED"
}

View File

@@ -0,0 +1,3 @@
{
"out_batch_no": "GD2021011610162610BBdkkIwcu3"
}

View File

@@ -0,0 +1,10 @@
{
"create_time": "2020-05-20T13:29:35.120+08:00",
"download_url": "https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx",
"hash_type": "SHA256",
"hash_value": "DE731F35146A0BEFADE5DB9D1E468D96C01CA8898119C674FEE9F11F4DBE5529",
"out_batch_no": "plfk2020042013",
"receipt_no": "1050000010509999485212020110200058820001",
"receipt_state": "ACCEPTED",
"update_time": "2020-05-21T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,9 @@
{
"download_url": "https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx",
"hash_type": "SHA256",
"hash_value": "DE731F35146A0BEFADE5DB9D1E468D96C01CA8898119C674FEE9F11F4DBE5529",
"out_batch_no": "GD2021011610162610BBdkkIwcu3",
"out_detail_no": "mx0911231610162610v4CNkO4HAf",
"receipt_no": "1050000010509999485212020110200058820001",
"receipt_state": "ACCEPTED"
}

View File

@@ -0,0 +1,10 @@
{
"create_time": "2020-05-20T13:29:35.120+08:00",
"download_url": "https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx",
"hash_type": "SHA256",
"hash_value": "DE731F35146A0BEFADE5DB9D1E468D96C01CA8898119C674FEE9F11F4DBE5529",
"out_batch_no": "plfk2020042013",
"receipt_no": "1050000010509999485212020110200058820001",
"receipt_state": "ACCEPTED",
"update_time": "2020-05-21T13:29:35.120+08:00"
}