Просмотр исходного кода

[支付][修复]:支持用户订单金额为0的处理

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
4109056455
3 измененных файлов: 40 добавлений и 28 удалений
  1. +9
    -12
      mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java
  2. +3
    -1
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  3. +28
    -15
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java

+ 9
- 12
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<String, Object> 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);


+ 3
- 1
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, "退款支付订单不存在"),


+ 28
- 15
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<WxPayOrder> 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);


Загрузка…
Отмена
Сохранить