فهرست منبع

Merge pull request #190 from xljiulang/WeChatPayClient-fix

修复对GetNeedVerify()为false的请求仍验证平台证书存在生的问题。
Roc 1 ماه پیش
والد
کامیت
050d017826
1فایلهای تغییر یافته به همراه7 افزوده شده و 7 حذف شده
  1. 7 7
      src/Essensoft.Paylinks.WeChatPay.Client/WeChatPayClient.cs

+ 7 - 7
src/Essensoft.Paylinks.WeChatPay.Client/WeChatPayClient.cs

@@ -24,19 +24,19 @@ public class WeChatPayClient(IHttpClientFactory httpClientFactory, IWeChatPayPla
         else
         {
             var certificateManager = certificateManagerFactory.Create(options.MchId);
-            var certificate = certificateManager.GetAvailableCertificates().OrderByDescending(c => c.EffectiveTime).FirstOrDefault() ?? throw new WeChatPayException("验签失败: 微信平台证书管理器中未找到有效平台证书");
-            if (string.IsNullOrEmpty(certificate.PublicKey))
-            {
-                throw new WeChatPayException("验签失败: 平台证书公钥为空");
-            }
+            var certificate = certificateManager.GetAvailableCertificates().OrderByDescending(c => c.EffectiveTime).FirstOrDefault();
 
-            certSerialNo = certificate.SerialNo;
-            certPublicKey = certificate.PublicKey;
+            certSerialNo = certificate?.SerialNo;
+            certPublicKey = certificate?.PublicKey;
         }
 
         if (request is IWeChatPaySecretRequest<T> secretRequest)
         {
             // 加密敏感信息
+            if (string.IsNullOrEmpty(certPublicKey))
+            {
+                throw new WeChatPayException("验签失败: 微信平台证书管理器中未找到有效平台证书");
+            }
             secretRequest.EncryptSecretRequest(certPublicKey);
         }