fix(微信小程序确认收货提醒接口): 修复 #839 - received_time 时间戳单位错误(应为秒)

根据微信小程序接口要求,订单签收时间 received_time 应为秒级时间戳,但现有实现传入了毫秒,导致微信接口返回错误代码 10060029(签收时间不合理)。

新增 LocalDateUtils.toEpochSecond 方法,统一将 LocalDateTime 转换为秒级时间戳,用于接口参数转换。

BREAKING CHANGE: 无

Closes #839
This commit is contained in:
Ken 2025-05-20 12:57:33 +08:00
parent 501cfe5afa
commit 41b17d4faf
No known key found for this signature in database
2 changed files with 16 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.common.util.date;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.date.TemporalAccessorUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.enums.DateIntervalEnum;
@ -19,7 +20,7 @@ import static cn.hutool.core.date.DatePattern.UTC_MS_WITH_XXX_OFFSET_PATTERN;
import static cn.hutool.core.date.DatePattern.createFormatter;
/**
* 时间工具类用于 {@link java.time.LocalDateTime}
* 时间工具类用于 {@link LocalDateTime}
*
* @author 芋道源码
*/
@ -312,4 +313,16 @@ public class LocalDateTimeUtils {
}
}
/**
* 将给定的 {@link LocalDateTime} 转换为自 Unix 纪元时间1970-01-01T00:00:00Z以来的秒数
*
* @param sourceDateTime 需要转换的本地日期时间不能为空
* @return 1970-01-01T00:00:00Z 起的秒数epoch second
* @throws NullPointerException 如果 {@code sourceDateTime} {@code null}
* @throws DateTimeException 如果转换过程中发生时间超出范围或其他时间处理异常
*/
public static Long toEpochSecond(LocalDateTime sourceDateTime) {
return TemporalAccessorUtil.toInstant(sourceDateTime).getEpochSecond();
}
}

View File

@ -68,6 +68,7 @@ import java.util.Objects;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.UTC_MS_WITH_XXX_OFFSET_FORMATTER;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.toEpochSecond;
import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
import static java.util.Collections.singletonList;
@ -379,7 +380,7 @@ public class SocialClientServiceImpl implements SocialClientService {
WxMaService service = getWxMaService(userType);
WxMaOrderShippingInfoNotifyConfirmRequest request = WxMaOrderShippingInfoNotifyConfirmRequest.builder()
.transactionId(reqDTO.getTransactionId())
.receivedTime(LocalDateTimeUtil.toEpochMilli(reqDTO.getReceivedTime()))
.receivedTime(toEpochSecond(reqDTO.getReceivedTime()))
.build();
try {
WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().notifyConfirmReceive(request);