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}";