From ba0d0548d3fc56d8fbaa5dcbd45915baecc54e3f Mon Sep 17 00:00:00 2001 From: zpc Date: Tue, 10 Feb 2026 16:18:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3=20UTF8=20=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用字符串模板直接构建 JSON,与 PHP 实现保持一致 - 移除 JsonSerializer 的 SnakeCaseLower 策略避免双重转换 - 添加请求内容的调试日志 --- .../HoneyBox.Core/Services/WechatService.cs | 45 +++++++++---------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs b/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs index 6a7a7edd..abfd4107 100644 --- a/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs +++ b/server/HoneyBox/src/HoneyBox.Core/Services/WechatService.cs @@ -1013,38 +1013,35 @@ public class WechatService : IWechatService }; } - // 4. 构建请求参数 + // 4. 构建请求参数 - 直接构建 JSON 字符串,与 PHP 保持一致 var itemDesc = request.ItemDesc ?? GetDefaultItemDesc(request.OrderNo); var uploadTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + "+08:00"; - var requestBody = new - { - order_key = new + // 使用字符串模板构建 JSON,确保格式与微信要求一致 + var jsonContent = $$""" { - order_number_type = 1, // 使用商户订单号 - mchid = mchId, - out_trade_no = request.OrderNo - }, - logistics_type = request.LogisticsType, // 4=虚拟商品 - delivery_mode = 1, // 1=统一发货 - shipping_list = new[] - { - new { item_desc = itemDesc } - }, - upload_time = uploadTime, - payer = new - { - openid = request.OpenId + "order_key": { + "order_number_type": 1, + "mchid": "{{mchId}}", + "out_trade_no": "{{request.OrderNo}}" + }, + "logistics_type": {{request.LogisticsType}}, + "delivery_mode": 1, + "shipping_list": [ + { + "item_desc": "{{itemDesc}}" + } + ], + "upload_time": "{{uploadTime}}", + "payer": { + "openid": "{{request.OpenId}}" + } } - }; - - var jsonContent = JsonSerializer.Serialize(requestBody, new JsonSerializerOptions - { - PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower - }); + """; _logger.LogInformation("调用微信发货接口: OrderNo={OrderNo}, MchId={MchId}, OpenId={OpenId}", request.OrderNo, mchId, request.OpenId); + _logger.LogDebug("发货请求内容: {JsonContent}", jsonContent); // 5. 发送请求 var url = $"{uploadShippingUrl}?access_token={accessToken}";