diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index a633afb17..c88bf7def 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.exception.MallinkException; +import com.iformall.exception.PayPlatOrderNotExistsException; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxOrderService; import com.iformall.service.WxPayOrderService; @@ -322,17 +323,21 @@ public class OrderExpiringSchedule { } //Map retMap = WxPayOrderServiceHelper.wxOrderPayStatusMap(wxpayOrder, order, appInfo, payAccount); //int status = WxPayOrderServiceHelper.getPayStatusFromMap(retMap, wxpayOrder.getPayOrderNo()); - PayQueryAdapterResult payResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor(),payAccount.getPayVersion()).queryPayStatus(wxpayOrder, appInfo, payAccount); - //如果是支付成功,并且需要重试成功流程, - if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode().intValue() == payResult.getCode()) { - if (autoReHandle) { - WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(wxpayOrder.getComposeOrder()).getComposeOrder(wxpayOrder.getOrderId(), wxpayOrder.getTenantId()); - //无论是不是批量的,都是执行单个订单 - composeOrder.setSingleOrder(order); - wxPayOrderService.handleSuccessOrder(wxpayOrder, composeOrder, payResult, true,true); - } - return true; - } + try { + PayQueryAdapterResult payResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor(),payAccount.getPayVersion()).queryPayStatus(wxpayOrder, appInfo, payAccount); + //如果是支付成功,并且需要重试成功流程, + if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode().intValue() == payResult.getCode()) { + if (autoReHandle) { + WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(wxpayOrder.getComposeOrder()).getComposeOrder(wxpayOrder.getOrderId(), wxpayOrder.getTenantId()); + //无论是不是批量的,都是执行单个订单 + composeOrder.setSingleOrder(order); + wxPayOrderService.handleSuccessOrder(wxpayOrder, composeOrder, payResult, true,true); + } + return true; + } + }catch(PayPlatOrderNotExistsException pe) { + return false; + } return false; } diff --git a/mallinkService/src/main/java/com/iformall/exception/PayPlatOrderNotExistsException.java b/mallinkService/src/main/java/com/iformall/exception/PayPlatOrderNotExistsException.java new file mode 100644 index 000000000..a4615d2f5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/exception/PayPlatOrderNotExistsException.java @@ -0,0 +1,36 @@ +package com.iformall.exception; + +import com.iformall.common.ErrorCode; + +/** + * Created by Stormeye on 2018/8/10. + */ +public class PayPlatOrderNotExistsException extends RuntimeException { + + private int errorCode; + private String message; + + public PayPlatOrderNotExistsException(int errorC, String message) { + this.errorCode = errorC; + this.message = message; + } + + public PayPlatOrderNotExistsException(ErrorCode errCode) { + this.errorCode = errCode.getCode(); + this.message = errCode.getMessage(); + } + + public PayPlatOrderNotExistsException() { + super(); + } + + public int getErrorCode() { + return errorCode; + } + + @Override + public String getMessage() { + return message; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java index fe0d5991e..266815ef2 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java @@ -27,6 +27,7 @@ import com.iformall.enums.EnumPayMode; import com.iformall.enums.EnumPayShare; import com.iformall.enums.EnumPayStatus; import com.iformall.exception.MallinkException; +import com.iformall.exception.PayPlatOrderNotExistsException; import com.iformall.pay.WxPay; import com.iformall.pay.WxPayOrderP; import com.iformall.pay.WxPayOrderSP; @@ -283,6 +284,9 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl } return getPayCommonQueryResult(response); }catch(WxPayException e) { + if ("订单不存在".equals(e.getMessage())){ + throw new PayPlatOrderNotExistsException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),e.getCustomErrorMsg()); + } log.error("pay common v3 query response error",e); throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),e.getCustomErrorMsg()); }