|
@@ -65,27 +65,19 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public UserOrderPayment detailByOrderNo(String orderNo, PayChannelEnum payChannel, TradeStatusEnum status) {
|
|
public UserOrderPayment detailByOrderNo(String orderNo, PayChannelEnum payChannel, TradeStatusEnum status) {
|
|
- return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery()
|
|
|
|
- .eq(UserOrderPayment::getOrderNo, orderNo)
|
|
|
|
- .eq(UserOrderPayment::getPayChannel, payChannel)
|
|
|
|
- .eq(UserOrderPayment::getStatus, status));
|
|
|
|
|
|
+ return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getPayChannel, payChannel).eq(UserOrderPayment::getStatus, status));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public UserOrderPayment detailByTransNoOrPaymentNo(String transNo, String paymentNo) {
|
|
public UserOrderPayment detailByTransNoOrPaymentNo(String transNo, String paymentNo) {
|
|
- return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().and(
|
|
|
|
- wrapper -> wrapper.eq(UserOrderPayment::getTransNo, transNo)
|
|
|
|
- .or().eq(UserOrderPayment::getPaymentNo, paymentNo)
|
|
|
|
- ));
|
|
|
|
|
|
+ return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().and(wrapper -> wrapper.eq(UserOrderPayment::getTransNo, transNo).or().eq(UserOrderPayment::getPaymentNo, paymentNo)));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public UserOrderPayment onlyClosePayment(String orderNo, String reason) {
|
|
|
|
- UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery()
|
|
|
|
- .eq(UserOrderPayment::getOrderNo, orderNo)
|
|
|
|
- .eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
|
|
|
|
|
|
+ public Boolean onlyClosePayment(String orderNo, String reason) {
|
|
|
|
+ UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
|
|
if (null == orderPayment) {
|
|
if (null == orderPayment) {
|
|
- return orderPayment;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
//更新付款单
|
|
//更新付款单
|
|
@@ -94,21 +86,25 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
orderPayment.setUpdateTime(new Date());
|
|
orderPayment.setUpdateTime(new Date());
|
|
|
|
|
|
updateById(orderPayment);
|
|
updateById(orderPayment);
|
|
- return orderPayment;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public UserOrderPayment closePaymentAndReqOpen(String orderNo, String reason) {
|
|
|
|
- UserOrderPayment orderPayment = onlyClosePayment(orderNo, reason);
|
|
|
|
|
|
+ public Boolean closePaymentAndReqOpen(String orderNo, String reason) {
|
|
|
|
+ UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
|
|
if (null == orderPayment) {
|
|
if (null == orderPayment) {
|
|
- return orderPayment;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //更新付款单
|
|
|
|
+ orderPayment.setStatus(TradeStatusEnum.close);
|
|
|
|
+ orderPayment.setPayFailMsg(StringUtil.isEmpty(reason) ? "交易取消" : reason);
|
|
|
|
+ orderPayment.setUpdateTime(new Date());
|
|
|
|
+
|
|
//发送支付关单请求
|
|
//发送支付关单请求
|
|
- if (!StringUtil.isEmpty(orderPayment.getTransNo())
|
|
|
|
- || !StringUtil.isEmpty(orderPayment.getPaymentNo())) {
|
|
|
|
- ClosePayment param = new ClosePayment(orderPayment.getOpenType(),
|
|
|
|
- PaymentClientEnum.valueOf(orderPayment.getPaymentClient()), orderPayment.getPayChannel());
|
|
|
|
|
|
+ if (!StringUtil.isEmpty(orderPayment.getTransNo()) || !StringUtil.isEmpty(orderPayment.getPaymentNo())) {
|
|
|
|
+ ClosePayment param = new ClosePayment(orderPayment.getOpenType(), PaymentClientEnum.valueOf(orderPayment.getPaymentClient()), orderPayment.getPayChannel());
|
|
param.setId(orderPayment.getTransNo());
|
|
param.setId(orderPayment.getTransNo());
|
|
param.setPaymentNo(orderPayment.getPaymentNo());
|
|
param.setPaymentNo(orderPayment.getPaymentNo());
|
|
param.setReason(reason);
|
|
param.setReason(reason);
|
|
@@ -130,7 +126,12 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return orderPayment;
|
|
|
|
|
|
+ updateById(orderPayment);
|
|
|
|
+ if (TradeStatusEnum.succeeded.equals(orderPayment.getCloseStatus())) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -203,8 +204,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
@Override
|
|
@Override
|
|
public void executePaymentCallBack(PaymentCallBack data) {
|
|
public void executePaymentCallBack(PaymentCallBack data) {
|
|
UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
|
|
UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
|
|
- if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus())
|
|
|
|
- || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
|
|
|
|
|
|
+ if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus()) || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
|
|
if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//支付成功
|
|
if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//支付成功
|
|
paymentSucceededHandle(data);
|
|
paymentSucceededHandle(data);
|
|
} else if (TradeStatusEnum.failed.equals(data.getStatus())) {//支付失败
|
|
} else if (TradeStatusEnum.failed.equals(data.getStatus())) {//支付失败
|
|
@@ -216,8 +216,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
@Override
|
|
@Override
|
|
public void closePaymentCallBack(PaymentCallBack data) {
|
|
public void closePaymentCallBack(PaymentCallBack data) {
|
|
UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
|
|
UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
|
|
- if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus())
|
|
|
|
- || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
|
|
|
|
|
|
+ if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus()) || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
|
|
if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//关单成功
|
|
if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//关单成功
|
|
paymentCloseSucceededHandle(data);
|
|
paymentCloseSucceededHandle(data);
|
|
} else if (TradeStatusEnum.failed.equals(data.getStatus())) {//关单失败
|
|
} else if (TradeStatusEnum.failed.equals(data.getStatus())) {//关单失败
|
|
@@ -243,9 +242,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
orderPayment.setOrderNo(payment.getOrderNo());
|
|
orderPayment.setOrderNo(payment.getOrderNo());
|
|
orderPayment.setPaymentNo(payment.getPaymentNo());
|
|
orderPayment.setPaymentNo(payment.getPaymentNo());
|
|
orderPayment.setTransNo(payment.getId());
|
|
orderPayment.setTransNo(payment.getId());
|
|
- orderPayment.setPayAmt(
|
|
|
|
- new BigDecimal(payment.getPayAmt()).setScale(2, RoundingMode.HALF_UP)
|
|
|
|
- );
|
|
|
|
|
|
+ orderPayment.setPayAmt(new BigDecimal(payment.getPayAmt()).setScale(2, RoundingMode.HALF_UP));
|
|
orderPayment.setPayInfo(payment.getPayInfo());
|
|
orderPayment.setPayInfo(payment.getPayInfo());
|
|
orderPayment.setStatus(TradeStatusEnum.pending);
|
|
orderPayment.setStatus(TradeStatusEnum.pending);
|
|
|
|
|
|
@@ -274,8 +271,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
|
|
log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY)
|
|
|
|
- || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
|
|
|
|
|
|
+ if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY) || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
|
|
userOrderService.orderSuccess(detail, data);
|
|
userOrderService.orderSuccess(detail, data);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -310,8 +306,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
|
|
log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY)
|
|
|
|
- || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
|
|
|
|
|
|
+ if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY) || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
|
|
userOrderService.doOrderCancel(detail, OrderStatusEnum.FAIL, "支付回调失败:" + errMsg);
|
|
userOrderService.doOrderCancel(detail, OrderStatusEnum.FAIL, "支付回调失败:" + errMsg);
|
|
//关闭付款单
|
|
//关闭付款单
|
|
onlyClosePayment(detail.getOrderNo(), "支付回调失败:" + errMsg);
|
|
onlyClosePayment(detail.getOrderNo(), "支付回调失败:" + errMsg);
|
|
@@ -332,6 +327,14 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
|
|
orderPayment.setCloseStatus(TradeStatusEnum.succeeded);
|
|
orderPayment.setCloseStatus(TradeStatusEnum.succeeded);
|
|
orderPayment.setUpdateTime(new Date());
|
|
orderPayment.setUpdateTime(new Date());
|
|
updateById(orderPayment);
|
|
updateById(orderPayment);
|
|
|
|
+
|
|
|
|
+ //若当前关单回调是当前订单付款单,则可以关单
|
|
|
|
+ UserOrderVo detail = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
|
|
|
|
+ if (null != detail && OrderStatusEnum.PAYING.equals(detail.getStatus())
|
|
|
|
+ && orderPayment.getPaymentNo().equals(detail.getPaymentNo())) {
|
|
|
|
+ //关闭订单
|
|
|
|
+ userOrderService.doOrderCancel(detail, OrderStatusEnum.CLOSE, "订单取消");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/***
|
|
/***
|