fix: 修复微信发货接口 UTF8 编码问题
- 使用字符串模板直接构建 JSON,与 PHP 实现保持一致 - 移除 JsonSerializer 的 SnakeCaseLower 策略避免双重转换 - 添加请求内容的调试日志
This commit is contained in:
parent
d9dc8e4a6e
commit
ba0d0548d3
|
|
@ -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}";
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user