Просмотр исходного кода

修复对GetNeedVerify()为false的请求仍验证平台证书存在生的问题。

陈国伟 2 месяцев назад
Родитель
Сommit
2fce5cf193
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);
         }