Explorar o código

微信错误代码10060003

xw hai 2 semanas
pai
achega
6b14c67835

+ 18 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -5466,6 +5466,10 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 if(re.getErrCode() == 10060001){
                     log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
                     return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
                 } else {
                     log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
                     return false;
@@ -5480,6 +5484,11 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
                 return true; // 返回true让订单状态正常更新
             }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getOrderNumber(), e);
             return false;
         }
@@ -5767,6 +5776,10 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 if(re.getErrCode() == 10060001){
                     log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
                     return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
                 } else {
                     log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
                     return false;
@@ -5781,6 +5794,11 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
                 return true; // 返回true让订单状态正常更新
             }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getOrderNumber(), e);
             return false;
         }

+ 28 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -1313,8 +1313,35 @@ public class FsStorePaymentScrmServiceImpl implements IFsStorePaymentScrmService
             payerBean.setOpenid(dto.getOpenId());
             request.setPayer(payerBean);
             // 上传物流信息
-            return wxService.getWxMaOrderShippingService().upload(request).getErrCode() == 0;
+            WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
+            if(re.getErrCode() != 0){
+                // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
+                if(re.getErrCode() == 10060001){
+                    log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getBankTransactionId());
+                    return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getBankTransactionId());
+                    return true; // 返回true让订单状态正常更新
+                } else {
+                    log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getBankTransactionId());
+                    return false;
+                }
+            }
+            return re.getErrCode() == 0;
         } catch (Exception e) {
+            // 捕获WxErrorException等异常
+            String errorMsg = e.getMessage();
+            // 检查是否是支付单不存在的错误
+            if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
+                log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getBankTransactionId(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getBankTransactionId(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getBankTransactionId(), e);
             return false;
         }