From c7bf41920846a8dbfd31efb27ec2dcb2acf62201 Mon Sep 17 00:00:00 2001 From: zpc Date: Thu, 19 Mar 2026 05:55:06 +0800 Subject: [PATCH] 21 --- .../Services/WechatPayV3Service.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/WechatPayV3Service.cs b/server/MiAssessment/src/MiAssessment.Core/Services/WechatPayV3Service.cs index c447eec..3a2683f 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/WechatPayV3Service.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/WechatPayV3Service.cs @@ -151,7 +151,25 @@ public class WechatPayV3Service : IWechatPayV3Service _logger.LogDebug("V3 下单请求: URL={Url}, Body={Body}", V3_JSAPI_URL, requestBody); - var response = await _httpClient.SendAsync(httpRequest); + HttpResponseMessage response; + try + { + response = await _httpClient.SendAsync(httpRequest); + } + catch (HttpRequestException ex) when (ex.InnerException is IOException) + { + // SSL 冷启动可能导致首次连接失败,重试一次 + _logger.LogWarning(ex, "V3 下单首次请求失败(SSL冷启动),正在重试: OrderNo={OrderNo}", request.OrderNo); + + using var retryRequest = new HttpRequestMessage(HttpMethod.Post, V3_JSAPI_URL); + retryRequest.Headers.Add("Authorization", authorization); + retryRequest.Headers.Add("Accept", "application/json"); + retryRequest.Headers.Add("User-Agent", "MiAssessment/1.0"); + retryRequest.Content = new StringContent(requestBody, Encoding.UTF8, "application/json"); + + response = await _httpClient.SendAsync(retryRequest); + } + var responseContent = await response.Content.ReadAsStringAsync(); _logger.LogDebug("V3 下单响应: StatusCode={StatusCode}, Body={Body}", response.StatusCode, responseContent);