fix(social): 解决微信小程序订单发货信息上传时间差问题
- 添加 ObjectUtil 和 CompletableFuture 依赖 - 针对错误代码 10060001 实现延迟重试机制 - 在支付回调与订单信息上传间增加 1 秒延时处理 - 添加延迟重试后的日志记录和异常处理 - 优化错误处理流程以应对时间差导致的上传失败pull/230/head
parent
716e2a63c1
commit
ce4cc9c4b2
|
|
@ -14,6 +14,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||
|
|
@ -65,6 +66,8 @@ import java.time.ZonedDateTime;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
||||
|
|
@ -371,6 +374,27 @@ public class SocialClientServiceImpl implements SocialClientService {
|
|||
try {
|
||||
WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().upload(request);
|
||||
if (response.getErrCode() != 0) {
|
||||
if (ObjectUtil.equals(response.getErrCode(),10060001)) {
|
||||
// 错误代码:10060001, 错误信息:支付单不存在
|
||||
// 收到支付回调时同步订单到微信,很大概率会出现10060001
|
||||
// 应对支付回调与订单信息上传之间的时间差
|
||||
CompletableFuture.delayedExecutor(1000, TimeUnit.MILLISECONDS)
|
||||
.execute(() -> {
|
||||
try {
|
||||
WxMaOrderShippingInfoBaseResponse delayedResponse =
|
||||
service.getWxMaOrderShippingService().upload(request);
|
||||
if (delayedResponse.getErrCode() != 0) {
|
||||
log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, delayedResponse);
|
||||
return;
|
||||
}
|
||||
log.info("[uploadWxaOrderShippingInfo][上传微信小程序发货信息成功:request({}) response({})]", request, delayedResponse);
|
||||
} catch (WxErrorException ex) {
|
||||
log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({})]", request,
|
||||
ex);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, response);
|
||||
throw exception(SOCIAL_CLIENT_WEIXIN_MINI_APP_ORDER_UPLOAD_SHIPPING_INFO_ERROR, response.getErrMsg());
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue