2022-11-13 23:17:18 +08:00
|
|
|
using System;
|
2021-07-20 01:20:31 +08:00
|
|
|
|
|
|
|
|
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
|
|
|
|
{
|
2024-02-05 15:58:42 +08:00
|
|
|
using SKIT.FlurlHttpClient.Primitives;
|
|
|
|
|
|
2021-07-20 01:20:31 +08:00
|
|
|
public static class WechatTenpayClientEventVerificationExtensions
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <para>验证回调通知事件签名。</para>
|
2024-01-03 17:17:42 +08:00
|
|
|
/// <para>REF: https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-verification.html </para>
|
|
|
|
|
/// <para>REF: https://pay.weixin.qq.com/docs/partner/development/interface-rules/signature-verification.html </para>
|
2021-07-20 01:20:31 +08:00
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="client"></param>
|
2024-01-29 23:12:37 +08:00
|
|
|
/// <param name="webhookTimestamp">微信回调通知中的 "Wechatpay-Timestamp" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookNonce">微信回调通知中的 "Wechatpay-Nonce" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookBody">微信回调通知中请求正文。</param>
|
|
|
|
|
/// <param name="webhookSignature">微信回调通知中的 "Wechatpay-Signature" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookSerialNumber">微信回调通知中的 "Wechatpay-Serial" 请求标头。</param>
|
2021-07-20 01:20:31 +08:00
|
|
|
/// <returns></returns>
|
2024-02-05 15:58:42 +08:00
|
|
|
public static ErroredResult VerifyEventSignature(this WechatTenpayClient client, string webhookTimestamp, string webhookNonce, string webhookBody, string webhookSignature, string webhookSerialNumber)
|
2021-11-25 11:58:06 +08:00
|
|
|
{
|
2022-11-13 23:17:18 +08:00
|
|
|
return VerifyEventSignature(
|
|
|
|
|
client,
|
2024-01-29 23:12:37 +08:00
|
|
|
webhookTimestamp: webhookTimestamp,
|
|
|
|
|
webhookNonce: webhookNonce,
|
|
|
|
|
webhookBody: webhookBody,
|
|
|
|
|
webhookSignature: webhookSignature,
|
|
|
|
|
webhookSignatureType: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256,
|
|
|
|
|
webhookSerialNumber: webhookSerialNumber
|
2022-11-13 23:17:18 +08:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <para>验证回调通知事件签名。</para>
|
2024-01-03 17:17:42 +08:00
|
|
|
/// <para>REF: https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-verification.html </para>
|
|
|
|
|
/// <para>REF: https://pay.weixin.qq.com/docs/partner/development/interface-rules/signature-verification.html </para>
|
2022-11-13 23:17:18 +08:00
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="client"></param>
|
2024-01-29 23:12:37 +08:00
|
|
|
/// <param name="webhookTimestamp">微信回调通知中的 "Wechatpay-Timestamp" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookNonce">微信回调通知中的 "Wechatpay-Nonce" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookBody">微信回调通知中请求正文。</param>
|
|
|
|
|
/// <param name="webhookSignature">微信回调通知中的 "Wechatpay-Signature" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookSignatureType">微信回调通知中的 "Wechatpay-Signature-Type" 请求标头。</param>
|
|
|
|
|
/// <param name="webhookSerialNumber">微信回调通知中的 "Wechatpay-Serial" 请求标头。</param>
|
2022-11-13 23:17:18 +08:00
|
|
|
/// <returns></returns>
|
2024-02-05 15:58:42 +08:00
|
|
|
public static ErroredResult VerifyEventSignature(this WechatTenpayClient client, string webhookTimestamp, string webhookNonce, string webhookBody, string webhookSignature, string webhookSignatureType, string webhookSerialNumber)
|
2021-07-20 01:20:31 +08:00
|
|
|
{
|
2024-01-29 23:12:37 +08:00
|
|
|
if (client is null) throw new ArgumentNullException(nameof(client));
|
2021-07-20 01:20:31 +08:00
|
|
|
|
2024-02-05 15:58:42 +08:00
|
|
|
return WechatTenpayClientSigningExtensions.VerifySignature(
|
2022-11-13 23:17:18 +08:00
|
|
|
client,
|
2024-01-29 23:12:37 +08:00
|
|
|
strTimestamp: webhookTimestamp,
|
|
|
|
|
strNonce: webhookNonce,
|
|
|
|
|
strContent: webhookBody,
|
|
|
|
|
strSignature: webhookSignature,
|
|
|
|
|
strSignScheme: webhookSignatureType,
|
2024-02-05 15:58:42 +08:00
|
|
|
strSerialNumber: webhookSerialNumber
|
2022-11-13 23:17:18 +08:00
|
|
|
);
|
2021-07-20 01:20:31 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|