mirror of
https://gitee.com/myxzgzs/boyue-vue-pro.git
synced 2025-08-08 08:22:45 +08:00
fix(微信小程序确认收货提醒接口): 修复 #839 - received_time 时间戳单位错误(应为秒)
根据微信小程序接口要求,订单签收时间 received_time 应为秒级时间戳,但现有实现传入了毫秒,导致微信接口返回错误代码 10060029(签收时间不合理)。 新增 LocalDateUtils.toEpochSecond 方法,统一将 LocalDateTime 转换为秒级时间戳,用于接口参数转换。 BREAKING CHANGE: 无 Closes #839
This commit is contained in:
parent
501cfe5afa
commit
41b17d4faf
@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.common.util.date;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.date.TemporalAccessorUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.enums.DateIntervalEnum;
|
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;
|
import static cn.hutool.core.date.DatePattern.createFormatter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 时间工具类,用于 {@link java.time.LocalDateTime}
|
* 时间工具类,用于 {@link LocalDateTime}
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
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.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.framework.common.util.json.JsonUtils.toJsonString;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||||
import static java.util.Collections.singletonList;
|
import static java.util.Collections.singletonList;
|
||||||
@ -379,7 +380,7 @@ public class SocialClientServiceImpl implements SocialClientService {
|
|||||||
WxMaService service = getWxMaService(userType);
|
WxMaService service = getWxMaService(userType);
|
||||||
WxMaOrderShippingInfoNotifyConfirmRequest request = WxMaOrderShippingInfoNotifyConfirmRequest.builder()
|
WxMaOrderShippingInfoNotifyConfirmRequest request = WxMaOrderShippingInfoNotifyConfirmRequest.builder()
|
||||||
.transactionId(reqDTO.getTransactionId())
|
.transactionId(reqDTO.getTransactionId())
|
||||||
.receivedTime(LocalDateTimeUtil.toEpochMilli(reqDTO.getReceivedTime()))
|
.receivedTime(toEpochSecond(reqDTO.getReceivedTime()))
|
||||||
.build();
|
.build();
|
||||||
try {
|
try {
|
||||||
WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().notifyConfirmReceive(request);
|
WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().notifyConfirmReceive(request);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user