From ce4cc9c4b21025e27a791bb122106527da01a7f6 Mon Sep 17 00:00:00 2001 From: wuKong Date: Sun, 4 Jan 2026 11:19:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(social):=20=E8=A7=A3=E5=86=B3=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=AE=A2=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E4=BF=A1=E6=81=AF=E4=B8=8A=E4=BC=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=B7=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ObjectUtil 和 CompletableFuture 依赖 - 针对错误代码 10060001 实现延迟重试机制 - 在支付回调与订单信息上传间增加 1 秒延时处理 - 添加延迟重试后的日志记录和异常处理 - 优化错误处理流程以应对时间差导致的上传失败 --- .../social/SocialClientServiceImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java index fc81be23b..428b7b680 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java @@ -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()); }