feat(tenpayv3): 新增微信分付支付方式前置曝光相关接口
Some checks are pending
CodeQL / Analyze (csharp) (push) Waiting to run
CodeLint / Lint (push) Waiting to run

This commit is contained in:
Fu Diwei
2025-07-13 22:30:22 +08:00
parent 223232fe5b
commit 992bbf1ee0
15 changed files with 392 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
public static class WechatTenpayClientExecutePayAcquiringBankTransactionsExtensions
{
#region Exposure
/// <summary>
/// <para>异步调用 [POST] /pay/acquiring-bank/transactions/exposure 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014326541 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayAcquiringBankTransactionExposureResponse> ExecuteCreatePayAcquiringBankTransactionExposureAsync(this WechatTenpayClient client, Models.CreatePayAcquiringBankTransactionExposureRequest 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, "pay", "acquiring-bank", "transactions", "exposure");
return await client.SendFlurlRequestAsJsonAsync<Models.CreatePayAcquiringBankTransactionExposureResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}

View File

@@ -283,5 +283,32 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendFlurlRequestAsJsonAsync<Models.ReversePayPartnerTransactionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#region Exposure
/// <summary>
/// <para>异步调用 [POST] /pay/partner/transactions/exposure 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014326522 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayPartnerTransactionExposureResponse> ExecuteCreatePayPartnerTransactionExposureAsync(this WechatTenpayClient client, Models.CreatePayPartnerTransactionExposureRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.MerchantId is null)
request.MerchantId = client.Credentials.MerchantId;
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "pay", "partner", "transactions", "exposure");
return await client.SendFlurlRequestAsJsonAsync<Models.CreatePayPartnerTransactionExposureResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}

View File

@@ -248,5 +248,32 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendFlurlRequestAsJsonAsync<Models.ReversePayTransactionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#region Exposure
/// <summary>
/// <para>异步调用 [POST] /pay/transactions/exposure 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/merchant/4014326314 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayTransactionExposureResponse> ExecuteCreatePayTransactionExposureAsync(this WechatTenpayClient client, Models.CreatePayTransactionExposureRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.MerchantId is null)
request.MerchantId = client.Credentials.MerchantId;
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "pay", "transactions", "exposure");
return await client.SendFlurlRequestAsJsonAsync<Models.CreatePayTransactionExposureResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}