feat(tenpayv3): 重命名部分参数名

This commit is contained in:
Fu Diwei 2022-01-21 14:41:40 +08:00
parent 215aea8fb8
commit 25bffda684
15 changed files with 93 additions and 56 deletions

View File

@ -45,7 +45,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample.Services.BackgroundService
foreach (var certificateModel in response.CertificateList) foreach (var certificateModel in response.CertificateList)
{ {
client.CertificateManager.AddEntry(new CertificateEntry(certificateModel)); client.PlatformCertificateManager.AddEntry(new CertificateEntry(certificateModel));
} }
_logger.LogInformation("刷新微信商户平台证书成功。"); _logger.LogInformation("刷新微信商户平台证书成功。");

View File

@ -35,9 +35,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample.Services.HttpClients.Imple
{ {
MerchantId = tenpayMerchantConfig.MerchantId, MerchantId = tenpayMerchantConfig.MerchantId,
MerchantV3Secret = tenpayMerchantConfig.SecretV3, MerchantV3Secret = tenpayMerchantConfig.SecretV3,
MerchantCertSerialNumber = tenpayMerchantConfig.CertSerialNumber, MerchantCertificateSerialNumber = tenpayMerchantConfig.CertSerialNumber,
MerchantCertPrivateKey = tenpayMerchantConfig.CertPrivateKey, MerchantCertificatePrivateKey = tenpayMerchantConfig.CertPrivateKey,
CertificateManager = _tenpayCertificateManagerFactory.Create(tenpayMerchantConfig.MerchantId), PlatformCertificateManager = _tenpayCertificateManagerFactory.Create(tenpayMerchantConfig.MerchantId),
AutoEncryptRequestSensitiveProperty = true, AutoEncryptRequestSensitiveProperty = true,
AutoDecryptResponseSensitiveProperty = true AutoDecryptResponseSensitiveProperty = true
}; };

View File

@ -60,11 +60,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
if (callbackSignature == null) throw new ArgumentNullException(nameof(callbackSignature)); if (callbackSignature == null) throw new ArgumentNullException(nameof(callbackSignature));
if (callbackSerialNumber == null) throw new ArgumentNullException(nameof(callbackSerialNumber)); if (callbackSerialNumber == null) throw new ArgumentNullException(nameof(callbackSerialNumber));
if (client.CertificateManager != null) if (client.PlatformCertificateManager != null)
{ {
try try
{ {
var cert = client.CertificateManager.GetEntry(callbackSerialNumber); var cert = client.PlatformCertificateManager.GetEntry(callbackSerialNumber);
if (!cert.HasValue) if (!cert.HasValue)
{ {
error = new Exceptions.WechatTenpayEventVerificationException("Verify signature of event failed, because there is no platform certificate matched the serial number."); error = new Exceptions.WechatTenpayEventVerificationException("Verify signature of event failed, because there is no platform certificate matched the serial number.");

View File

@ -36,7 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
string nonce = Guid.NewGuid().ToString("N"); string nonce = Guid.NewGuid().ToString("N");
string package = $"prepay_id={prepayId}"; string package = $"prepay_id={prepayId}";
string sign = Utilities.RSAUtility.SignWithSHA256( string sign = Utilities.RSAUtility.SignWithSHA256(
privateKey: client.Credentials.MerchantCertPrivateKey, privateKey: client.Credentials.MerchantCertificatePrivateKey,
plainText: $"{appId}\n{timestamp}\n{nonce}\n{package}\n" plainText: $"{appId}\n{timestamp}\n{nonce}\n{package}\n"
); );
@ -91,7 +91,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString(); string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
string nonce = Guid.NewGuid().ToString("N"); string nonce = Guid.NewGuid().ToString("N");
string sign = Utilities.RSAUtility.SignWithSHA256( string sign = Utilities.RSAUtility.SignWithSHA256(
privateKey: client.Credentials.MerchantCertPrivateKey, privateKey: client.Credentials.MerchantCertificatePrivateKey,
plainText: $"{appId}\n{timestamp}\n{nonce}\n{prepayId}\n" plainText: $"{appId}\n{timestamp}\n{nonce}\n{prepayId}\n"
); );

View File

@ -35,15 +35,15 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
if (Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB.Equals(attr.Algorithm)) if (Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB.Equals(attr.Algorithm))
{ {
if (client.CertificateManager == null) if (client.PlatformCertificateManager == null)
throw new Exceptions.WechatTenpayRequestEncryptionException("Encrypt request failed, because there is no platform certificate in the manager."); throw new Exceptions.WechatTenpayRequestEncryptionException("Encrypt request failed, because there is no platform certificate in the manager.");
string certificate; string certificate;
if (!string.IsNullOrEmpty(request.WechatpayCertSerialNumber)) if (!string.IsNullOrEmpty(request.WechatpayCertificateSerialNumber))
{ {
// 如果已在请求中指定特定的平台证书序列号,直接从管理器中取值 // 如果已在请求中指定特定的平台证书序列号,直接从管理器中取值
var cert = client.CertificateManager.GetEntry(request.WechatpayCertSerialNumber!); var cert = client.PlatformCertificateManager.GetEntry(request.WechatpayCertificateSerialNumber!);
if (!cert.HasValue) if (!cert.HasValue)
{ {
throw new Exceptions.WechatTenpayEventVerificationException("Encrypt request failed, because there is no platform certificate matched the serial number."); throw new Exceptions.WechatTenpayEventVerificationException("Encrypt request failed, because there is no platform certificate matched the serial number.");
@ -54,7 +54,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
else else
{ {
// 如果未在请求中指定特定的平台证书序列号,从管理器中取过期时间最远的 // 如果未在请求中指定特定的平台证书序列号,从管理器中取过期时间最远的
var certs = client.CertificateManager.AllEntries().OrderByDescending(e => e.ExpireTime); var certs = client.PlatformCertificateManager.AllEntries().OrderByDescending(e => e.ExpireTime);
if (!certs.Any()) if (!certs.Any())
{ {
throw new Exceptions.WechatTenpayEventVerificationException("Encrypt request failed, because there is no platform certificate in the manager."); throw new Exceptions.WechatTenpayEventVerificationException("Encrypt request failed, because there is no platform certificate in the manager.");
@ -62,7 +62,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
var cert = certs.First(); var cert = certs.First();
certificate = cert.Certificate; certificate = cert.Certificate;
request.WechatpayCertSerialNumber = cert.SerialNumber; request.WechatpayCertificateSerialNumber = cert.SerialNumber;
} }
string newValue = Utilities.RSAUtility.EncryptWithECBByCertificate( string newValue = Utilities.RSAUtility.EncryptWithECBByCertificate(

View File

@ -36,7 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{ {
if (Constants.EncryptionAlgorithms.AEAD_AES_256_GCM.Equals(certificateModel.EncryptCertificate?.Algorithm)) if (Constants.EncryptionAlgorithms.AEAD_AES_256_GCM.Equals(certificateModel.EncryptCertificate?.Algorithm))
{ {
if (string.IsNullOrEmpty(client.Credentials.MerchantCertPrivateKey)) if (string.IsNullOrEmpty(client.Credentials.MerchantCertificatePrivateKey))
throw new Exceptions.WechatTenpayResponseDecryptionException("Decrypt response failed, because there is no merchant private key."); throw new Exceptions.WechatTenpayResponseDecryptionException("Decrypt response failed, because there is no merchant private key.");
certificateModel.EncryptCertificate.CipherText = Utilities.AESUtility.DecryptWithGCM( certificateModel.EncryptCertificate.CipherText = Utilities.AESUtility.DecryptWithGCM(
@ -68,7 +68,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
if (Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB.Equals(attr.Algorithm)) if (Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB.Equals(attr.Algorithm))
{ {
string newValue = Utilities.RSAUtility.DecryptWithECB( string newValue = Utilities.RSAUtility.DecryptWithECB(
privateKey: client.Credentials.MerchantCertPrivateKey, privateKey: client.Credentials.MerchantCertificatePrivateKey,
cipherText: oldValue cipherText: oldValue
); );
return (true, newValue); return (true, newValue);

View File

@ -40,11 +40,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
if (client == null) throw new ArgumentNullException(nameof(client)); if (client == null) throw new ArgumentNullException(nameof(client));
if (response == null) throw new ArgumentNullException(nameof(response)); if (response == null) throw new ArgumentNullException(nameof(response));
if (client.CertificateManager != null) if (client.PlatformCertificateManager != null)
{ {
try try
{ {
var cert = client.CertificateManager.GetEntry(response.WechatpayCertSerialNumber)!; var cert = client.PlatformCertificateManager.GetEntry(response.WechatpayCertificateSerialNumber)!;
if (!cert.HasValue) if (!cert.HasValue)
{ {
error = new Exceptions.WechatTenpayResponseVerificationException("Verify signature of response failed, because there is no platform certificate matched the serial number."); error = new Exceptions.WechatTenpayResponseVerificationException("Verify signature of response failed, because there is no platform certificate matched the serial number.");

View File

@ -15,14 +15,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings
public string MerchantV3Secret { get; } public string MerchantV3Secret { get; }
/// <summary> /// <summary>
/// 初始化客户端时 <see cref="WechatTenpayClientOptions.MerchantCertSerialNumber"/> 的副本。 /// 初始化客户端时 <see cref="WechatTenpayClientOptions.MerchantCertificateSerialNumber"/> 的副本。
/// </summary> /// </summary>
public string MerchantCertSerialNumber { get; } public string MerchantCertificateSerialNumber { get; }
/// <summary> /// <summary>
/// 初始化客户端时 <see cref="WechatTenpayClientOptions.MerchantCertPrivateKey"/> 的副本。 /// 初始化客户端时 <see cref="WechatTenpayClientOptions.MerchantCertificatePrivateKey"/> 的副本。
/// </summary> /// </summary>
public string MerchantCertPrivateKey { get; } public string MerchantCertificatePrivateKey { get; }
internal Credentials(WechatTenpayClientOptions options) internal Credentials(WechatTenpayClientOptions options)
{ {
@ -30,8 +30,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings
MerchantId = options.MerchantId; MerchantId = options.MerchantId;
MerchantV3Secret = options.MerchantV3Secret; MerchantV3Secret = options.MerchantV3Secret;
MerchantCertSerialNumber = options.MerchantCertSerialNumber; MerchantCertificateSerialNumber = options.MerchantCertificateSerialNumber;
MerchantCertPrivateKey = options.MerchantCertPrivateKey; MerchantCertificatePrivateKey = options.MerchantCertificatePrivateKey;
} }
} }
} }

View File

@ -14,14 +14,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
public class WechatTenpayClient : CommonClientBase, ICommonClient public class WechatTenpayClient : CommonClientBase, ICommonClient
{ {
/// <summary> /// <summary>
/// 获取当前客户端使用的微信商户平台凭证。 /// 获取当前客户端使用的微信支付商户凭证。
/// </summary> /// </summary>
public Settings.Credentials Credentials { get; } public Settings.Credentials Credentials { get; }
/// <summary> /// <summary>
/// 获取当前客户端使用的微信商户平台证书管理器。 /// 获取当前客户端使用的微信支付平台证书管理器。
/// </summary> /// </summary>
public Settings.CertificateManager CertificateManager { get; } public Settings.CertificateManager PlatformCertificateManager { get; }
/// <summary> /// <summary>
/// 获取是否自动加密请求中的敏感信息字段。 /// 获取是否自动加密请求中的敏感信息字段。
@ -42,7 +42,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
if (options == null) throw new ArgumentNullException(nameof(options)); if (options == null) throw new ArgumentNullException(nameof(options));
Credentials = new Settings.Credentials(options); Credentials = new Settings.Credentials(options);
CertificateManager = options.CertificateManager; PlatformCertificateManager = options.PlatformCertificateManager;
AutoEncryptRequestSensitiveProperty = options.AutoEncryptRequestSensitiveProperty; AutoEncryptRequestSensitiveProperty = options.AutoEncryptRequestSensitiveProperty;
AutoDecryptResponseSensitiveProperty = options.AutoDecryptResponseSensitiveProperty; AutoDecryptResponseSensitiveProperty = options.AutoDecryptResponseSensitiveProperty;
@ -58,8 +58,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
Interceptors.Add(new Interceptors.WechatTenpaySignInterceptor( Interceptors.Add(new Interceptors.WechatTenpaySignInterceptor(
scheme: options.SignAlgorithm, scheme: options.SignAlgorithm,
mchId: options.MerchantId, mchId: options.MerchantId,
mchCertSn: options.MerchantCertSerialNumber, mchCertSn: options.MerchantCertificateSerialNumber,
mchCertPk: options.MerchantCertPrivateKey mchCertPk: options.MerchantCertificatePrivateKey
)); ));
} }
@ -84,10 +84,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
flurlRequest.WithTimeout(TimeSpan.FromMilliseconds(request.Timeout.Value)); flurlRequest.WithTimeout(TimeSpan.FromMilliseconds(request.Timeout.Value));
} }
if (request.WechatpayCertSerialNumber != null) if (request.WechatpayCertificateSerialNumber != null)
{ {
flurlRequest.Headers.Remove("Wechatpay-Serial"); flurlRequest.Headers.Remove("Wechatpay-Serial");
flurlRequest.WithHeader("Wechatpay-Serial", request.WechatpayCertSerialNumber); flurlRequest.WithHeader("Wechatpay-Serial", request.WechatpayCertificateSerialNumber);
} }
return flurlRequest; return flurlRequest;
@ -161,7 +161,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
result.WechatpayNonce = flurlResponse.Headers.GetAll("Wechatpay-Nonce").FirstOrDefault() ?? string.Empty; result.WechatpayNonce = flurlResponse.Headers.GetAll("Wechatpay-Nonce").FirstOrDefault() ?? string.Empty;
result.WechatpayTimestamp = flurlResponse.Headers.GetAll("Wechatpay-Timestamp").FirstOrDefault() ?? string.Empty; result.WechatpayTimestamp = flurlResponse.Headers.GetAll("Wechatpay-Timestamp").FirstOrDefault() ?? string.Empty;
result.WechatpaySignature = flurlResponse.Headers.GetAll("Wechatpay-Signature").FirstOrDefault() ?? string.Empty; result.WechatpaySignature = flurlResponse.Headers.GetAll("Wechatpay-Signature").FirstOrDefault() ?? string.Empty;
result.WechatpayCertSerialNumber = flurlResponse.Headers.GetAll("Wechatpay-Serial").FirstOrDefault() ?? string.Empty; result.WechatpayCertificateSerialNumber = flurlResponse.Headers.GetAll("Wechatpay-Serial").FirstOrDefault() ?? string.Empty;
if (AutoDecryptResponseSensitiveProperty && result.IsSuccessful()) if (AutoDecryptResponseSensitiveProperty && result.IsSuccessful())
{ {

View File

@ -39,24 +39,36 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
public string SignAlgorithm { get; set; } = Constants.SignAlgorithms.WECHATPAY2_SHA256_RSA2048; public string SignAlgorithm { get; set; } = Constants.SignAlgorithms.WECHATPAY2_SHA256_RSA2048;
/// <summary> /// <summary>
/// 获取或设置微信商户号。 /// 获取或设置微信支付商户号。
/// </summary> /// </summary>
public string MerchantId { get; set; } = default!; public string MerchantId { get; set; } = default!;
/// <summary> /// <summary>
/// 获取或设置微信商户 API v3 密钥(注意与 API 密钥相区分)。 /// 获取或设置微信支付商户 API v3 密钥(注意与 API 密钥相区分)。
/// </summary> /// </summary>
public string MerchantV3Secret { get; set; } = default!; public string MerchantV3Secret { get; set; } = default!;
/// <summary> /// <summary>
/// 获取或设置微信商户 API 证书序列号。 /// <i>(本参数已废弃,请使用 <see cref="MerchantCertificateSerialNumber"/> 参数)</i>
/// </summary> /// </summary>
public string MerchantCertSerialNumber { get; set; } = default!; [Obsolete("本参数已废弃,请使用 `MerchantCertificateSerialNumber` 参数")]
public string MerchantCertSerialNumber { get { return MerchantCertificateSerialNumber; } set { MerchantCertificateSerialNumber = value; } }
/// <summary> /// <summary>
/// 获取或设置微信商户 API 证书私钥 /// 获取或设置微信支付商户 API 证书序列号
/// </summary> /// </summary>
public string MerchantCertPrivateKey { get; set; } = default!; public string MerchantCertificateSerialNumber { get; set; } = default!;
/// <summary>
/// <i>(本参数已废弃,请使用 <see cref="MerchantCertificatePrivateKey"/> 参数)</i>
/// </summary>
[Obsolete("本参数已废弃,请使用 `MerchantCertificatePrivateKey` 参数")]
public string MerchantCertPrivateKey { get { return MerchantCertificatePrivateKey; } set { MerchantCertificatePrivateKey = value; } }
/// <summary>
/// 获取或设置微信支付商户 API 证书私钥(通常为 `apiclient_key.pem` 文件内容)。
/// </summary>
public string MerchantCertificatePrivateKey { get; set; } = default!;
/// <summary> /// <summary>
/// 获取或设置是否自动加密请求中的敏感字段数据。 /// 获取或设置是否自动加密请求中的敏感字段数据。
@ -69,9 +81,15 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
public bool AutoDecryptResponseSensitiveProperty { get; set; } public bool AutoDecryptResponseSensitiveProperty { get; set; }
/// <summary> /// <summary>
/// 获取或设置微信商户平台证书管理器。 /// <i>(本参数已废弃,请使用 <see cref="PlatformCertificateManager"/> 参数)</i>
/// </summary>
[Obsolete("本参数已废弃,请使用 `PlatformCertificateManager` 参数")]
public Settings.CertificateManager CertificateManager { get { return PlatformCertificateManager; } set { PlatformCertificateManager = value; } }
/// <summary>
/// 获取或设置微信支付平台证书管理器。
/// <para>默认值:<see cref="Settings.InMemoryCertificateManager"/></para> /// <para>默认值:<see cref="Settings.InMemoryCertificateManager"/></para>
/// </summary> /// </summary>
public Settings.CertificateManager CertificateManager { get; set; } = new Settings.InMemoryCertificateManager(); public Settings.CertificateManager PlatformCertificateManager { get; set; } = new Settings.InMemoryCertificateManager();
} }
} }

View File

@ -1,4 +1,6 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{ {
/// <summary> /// <summary>
/// 表示微信支付 API 请求的基类。 /// 表示微信支付 API 请求的基类。
@ -12,11 +14,19 @@
[System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]
public virtual int? Timeout { get; set; } public virtual int? Timeout { get; set; }
/// <summary>
/// <i>(本参数已废弃,请使用 <see cref="WechatpayCertificateSerialNumber"/> 参数)</i>
/// </summary>
[Obsolete("本参数已废弃,请使用 `WechatpayCertificateSerialNumber` 参数")]
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? WechatpayCertSerialNumber { get { return WechatpayCertificateSerialNumber; } set { WechatpayCertificateSerialNumber = value; } }
/// <summary> /// <summary>
/// 获取或设置微信请求使用的微信支付平台证书序列号。 /// 获取或设置微信请求使用的微信支付平台证书序列号。
/// </summary> /// </summary>
[Newtonsoft.Json.JsonIgnore] [Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]
public virtual string? WechatpayCertSerialNumber { get; set; } public virtual string? WechatpayCertificateSerialNumber { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{ {
@ -83,12 +84,20 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
[System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]
public string WechatpaySignature { get; internal set; } = default!; public string WechatpaySignature { get; internal set; } = default!;
/// <summary>
/// <i>(本参数已废弃,请使用 <see cref="WechatpayCertificateSerialNumber"/> 参数)</i>
/// </summary>
[Obsolete("本参数已废弃,请使用 `WechatpayCertificateSerialNumber` 参数")]
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string WechatpayCertSerialNumber { get { return WechatpayCertificateSerialNumber; } set { WechatpayCertificateSerialNumber = value; } }
/// <summary> /// <summary>
/// 获取微信应答签名使用的微信支付平台证书序列号。 /// 获取微信应答签名使用的微信支付平台证书序列号。
/// </summary> /// </summary>
[Newtonsoft.Json.JsonIgnore] [Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore]
public string WechatpayCertSerialNumber { get; internal set; } = default!; public string WechatpayCertificateSerialNumber { get; internal set; } = default!;
/// <summary> /// <summary>
/// 获取微信支付 API 返回的错误码。 /// 获取微信支付 API 返回的错误码。

View File

@ -21,7 +21,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
)); ));
return new WechatTenpayClient(new WechatTenpayClientOptions() return new WechatTenpayClient(new WechatTenpayClientOptions()
{ {
CertificateManager = certManager PlatformCertificateManager = certManager
}); });
}, isThreadSafe: false); }, isThreadSafe: false);
@ -35,7 +35,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
}; };
var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock); var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock);
Assert.Equal(RSA_CERTSN, data.WechatpayCertSerialNumber); Assert.Equal(RSA_CERTSN, data.WechatpayCertificateSerialNumber);
Assert.Equal(MockText, data.Account); Assert.Equal(MockText, data.Account);
Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.Name!)); Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.Name!));
} }
@ -56,7 +56,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
}; };
var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock); var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock);
Assert.Equal(RSA_CERTSN, data.WechatpayCertSerialNumber); Assert.Equal(RSA_CERTSN, data.WechatpayCertificateSerialNumber);
Assert.Equal(MockText, data.ReceiverList[0].Account); Assert.Equal(MockText, data.ReceiverList[0].Account);
Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.ReceiverList[0].Name!)); Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.ReceiverList[0].Name!));
} }

View File

@ -15,7 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
{ {
return new WechatTenpayClient(new WechatTenpayClientOptions() return new WechatTenpayClient(new WechatTenpayClientOptions()
{ {
MerchantCertPrivateKey = RSA_PRIVATE_KEY MerchantCertificatePrivateKey = RSA_PRIVATE_KEY
}); });
}, isThreadSafe: false); }, isThreadSafe: false);
@ -26,8 +26,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
{ {
MerchantId = TestConfigs.WechatMerchantId, MerchantId = TestConfigs.WechatMerchantId,
MerchantV3Secret = TestConfigs.WechatMerchantSecret, MerchantV3Secret = TestConfigs.WechatMerchantSecret,
MerchantCertSerialNumber = TestConfigs.WechatMerchantCertSerialNumber, MerchantCertificateSerialNumber = TestConfigs.WechatMerchantCertSerialNumber,
MerchantCertPrivateKey = TestConfigs.WechatMerchantCertPrivateKey, MerchantCertificatePrivateKey = TestConfigs.WechatMerchantCertPrivateKey,
AutoEncryptRequestSensitiveProperty = true, AutoEncryptRequestSensitiveProperty = true,
AutoDecryptResponseSensitiveProperty = true AutoDecryptResponseSensitiveProperty = true
}); });
@ -39,8 +39,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
{ {
MerchantId = TestConfigs.WechatMerchantId, MerchantId = TestConfigs.WechatMerchantId,
MerchantV3Secret = TestConfigs.WechatMerchantSecret, MerchantV3Secret = TestConfigs.WechatMerchantSecret,
MerchantCertSerialNumber = TestConfigs.WechatMerchantCertSerialNumber, MerchantCertificateSerialNumber = TestConfigs.WechatMerchantCertSerialNumber,
MerchantCertPrivateKey = TestConfigs.WechatMerchantCertPrivateKey, MerchantCertificatePrivateKey = TestConfigs.WechatMerchantCertPrivateKey,
AutoEncryptRequestSensitiveProperty = false, AutoEncryptRequestSensitiveProperty = false,
AutoDecryptResponseSensitiveProperty = false AutoDecryptResponseSensitiveProperty = false
}); });

View File

@ -11,9 +11,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
{ {
MerchantId = TestConfigs.WechatMerchantId, MerchantId = TestConfigs.WechatMerchantId,
MerchantV3Secret = TestConfigs.WechatMerchantSecret, MerchantV3Secret = TestConfigs.WechatMerchantSecret,
MerchantCertSerialNumber = TestConfigs.WechatMerchantCertSerialNumber, MerchantCertificateSerialNumber = TestConfigs.WechatMerchantCertSerialNumber,
MerchantCertPrivateKey = TestConfigs.WechatMerchantCertPrivateKey, MerchantCertificatePrivateKey = TestConfigs.WechatMerchantCertPrivateKey,
CertificateManager = certificateManager PlatformCertificateManager = certificateManager
}); });
} }
@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
response = Instance.DecryptResponseSensitiveProperty(response); response = Instance.DecryptResponseSensitiveProperty(response);
foreach (var certificateModel in response.CertificateList) foreach (var certificateModel in response.CertificateList)
{ {
Instance.CertificateManager.AddEntry(new Settings.CertificateEntry(certificateModel)); Instance.PlatformCertificateManager.AddEntry(new Settings.CertificateEntry(certificateModel));
} }
} }