diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index fc2c4c8b3..03d5e5a97 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -76,7 +76,7 @@ public class WxPayOrderController extends BaseController { } } - @ApiOperation(value = "更新支付订单状态", notes = "{\"id\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); @@ -84,22 +84,11 @@ public class WxPayOrderController extends BaseController { String orderIdStr = (String)paramMap.get("orderId"); String reasonStr = (String)paramMap.get("reason"); Integer status = (Integer)paramMap.get("status"); - if (StringUtils.isBlank(payOrderIdStr)) { - logger.info("payOrderId不能为空: " + paramMap.toString()); - return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空"); - } if (StringUtils.isBlank(orderIdStr)) { logger.info("orderId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); } Long payOrderId = 0L, orderId = 0L; - try { - payOrderId = Long.valueOf(payOrderIdStr); - } catch (NumberFormatException e) { - payOrderId = 0L; - logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); - return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); - } try { orderId = Long.valueOf(orderIdStr); } catch (NumberFormatException e) { @@ -107,6 +96,14 @@ public class WxPayOrderController extends BaseController { logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); } + if (!StringUtils.isBlank(payOrderIdStr)) { + try { + payOrderId = Long.valueOf(payOrderIdStr); + } catch (NumberFormatException e) { + logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); + } + } WxPayOrder payOrder = new WxPayOrder(); payOrder.setId(payOrderId); diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index a641b5c33..c6424791e 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -76,7 +76,7 @@ public enum ErrorCode{ */ REMAIN_IS_EMPTY(3000, "库存不足"), ORDER_IS_LIMITED(3001, "购买超限"), - ORDER_IS_FAIL(3002, "订单创建失败"), + ORDER_IS_FAIL(3002, "订单失败"), ORDER_IS_NOT_FIND(3003, "订单不存在"), ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"), @@ -103,6 +103,8 @@ public enum ErrorCode{ PAY_ORDER_EXIST(12001, "支付订单已存在"), PAY_ORDER_ERROR(12002, "支付订单异常"), PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR(12003 , "支付验签失败"), + PAY_ORDER_IS_ZERO(12004, "支付订单金额为0"), + PAY_ORDER_IS_NOT_PAYMENT(12005, "不是支付订单"), REFUND_ORDER_EXIST(12010, "退款订单已存在"), REFUND_PAY_ORDER_IS_NOT_EXIST(12011, "退款支付订单不存在"), diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 07c218eb9..d8f12649a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -13,6 +13,7 @@ import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; import com.simple.enums.EnumPayStatus; +import com.simple.enums.EnumPayType; import com.simple.enums.EnumPayWay; import com.simple.exception.MallinkException; import com.simple.mapper.WxAppinfoMapper; @@ -86,6 +87,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY); } + if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { + return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); + } // 2. check 是否有支付订单 Date currentDate = new Date(); List list = wxPayOrderMapper.findList(record); @@ -355,32 +359,41 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } Date currentDate = new Date(); - // 修改支付订单状态 - try { - WxPayOrder updateOrder = new WxPayOrder(); - updateOrder.setId(record.getId()); - updateOrder.setOrderId(record.getOrderId()); - updateOrder.setUpdateTime(currentDate); - updateOrder.setPayOrderStatus(record.getPayOrderStatus()); - updateOrder.setPayTimeEnd(currentDate); - updateOrder.setFailReason(record.getFailReason()); - wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); - } catch (Exception e) { - logger.error(e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL); + if (record.getId() > 0) { + // 修改支付订单状态 + // 订单金额为0时,支付订单不创建,直接更改订单状态 + try { + WxPayOrder updateOrder = new WxPayOrder(); + updateOrder.setId(record.getId()); + updateOrder.setOrderId(record.getOrderId()); + updateOrder.setUpdateTime(currentDate); + updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + updateOrder.setPayTimeEnd(currentDate); + updateOrder.setFailReason(record.getFailReason()); + wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } } // 修改订单状态 if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_SUCCESS.getCode()) { try { - wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + int _count = wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + if (_count > 1) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); } } else if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_CANCEL.getCode()) { try { - wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + int _count = wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + if (_count > 1) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL);