|
|
@@ -1,12 +1,9 @@
|
|
|
package com.fs.hisStore.service.impl;
|
|
|
|
|
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
|
|
-import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
|
|
|
-import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
|
|
|
-import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
|
|
|
-import cn.hutool.core.date.DateTime;
|
|
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
|
|
import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
|
|
|
+import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
|
|
|
import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.net.URLDecoder;
|
|
|
@@ -145,7 +142,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang.ObjectUtils;
|
|
|
import org.apache.http.util.Asserts;
|
|
|
-import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.aop.framework.AopContext;
|
|
|
@@ -5464,8 +5460,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
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.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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return re.getErrCode() == 0;
|
|
|
} catch (Exception e) {
|
|
|
+ // 捕获WxErrorException等异常
|
|
|
+ String errorMsg = e.getMessage();
|
|
|
+ // 检查是否是支付单不存在的错误
|
|
|
+ if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
|
|
|
+ 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;
|
|
|
}
|
|
|
@@ -5749,33 +5772,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
// 上传物流信息
|
|
|
WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
|
|
|
if(re.getErrCode() != 0){
|
|
|
- log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
|
|
|
- return false;
|
|
|
+ // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
|
|
|
+ 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;
|
|
|
+ }
|
|
|
}
|
|
|
return re.getErrCode() == 0;
|
|
|
} catch (Exception e) {
|
|
|
+ // 捕获WxErrorException等异常
|
|
|
+ String errorMsg = e.getMessage();
|
|
|
+ // 检查是否是支付单不存在的错误
|
|
|
+ if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
|
|
|
+ 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;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// private void batchUpdateDeliveryNotes(List<FsOrderDeliveryNoteDTO> list) {
|
|
|
-// int batchSize = 500;
|
|
|
-// int total = list.size();
|
|
|
-// int batches = (total + batchSize - 1) / batchSize;
|
|
|
-// for (int i = 0; i < batches; i++) {
|
|
|
-// int start = i * batchSize;
|
|
|
-// int end = Math.min(start + batchSize, total);
|
|
|
-// List<FsOrderDeliveryNoteDTO> subList = list.subList(start, end);
|
|
|
-// fsStoreOrderMapper.batchUpdateInOrderCode(subList);
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- private static final DateTimeFormatter DATE_ONLY_FORMATTER = DateTimeFormatter
|
|
|
- .ofPattern("yyyy-MM-dd");
|
|
|
-
|
|
|
-// public static String parseCstToDateOnlyString(String cstDateStr) {
|
|
|
-// LocalDateTime dateTime = parseCstToLocalDateTime(cstDateStr);
|
|
|
-// return dateTime != null ? dateTime.format(DATE_ONLY_FORMATTER) : null;
|
|
|
-// }
|
|
|
}
|