mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-22 03:55:17 +08:00
bugfix 修复偶尔出现不会自动退款的bug
This commit is contained in:
@@ -1923,7 +1923,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
public OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException {
|
||||
// 查询订单信息
|
||||
OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode());
|
||||
afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo);
|
||||
String payMode = orderBasicInfo.getPayMode();
|
||||
|
||||
// 校验订单支付金额,消费金额,退款金额
|
||||
BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额
|
||||
@@ -1932,31 +1932,35 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额
|
||||
|
||||
// 如果是白名单支付, 直接返回
|
||||
if (StringUtils.equals(orderBasicInfo.getPayMode(), "3")) {
|
||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode());
|
||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) {
|
||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), payMode);
|
||||
return null;
|
||||
}
|
||||
|
||||
// 如果是余额支付, 校验消费金额 - 折扣金额 + 退款金额 = 支付金额
|
||||
if (StringUtils.equals(orderBasicInfo.getPayMode(), "1")) {
|
||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) {
|
||||
// 订单折扣金额 = 电费折扣金额 + 服务费折扣金额
|
||||
BigDecimal orderDiscountAmount = afterSettleOrderDTO.getOrderElectricityDiscountAmount().add(afterSettleOrderDTO.getOrderServiceDiscountAmount());
|
||||
if (orderConsumeAmount.subtract(orderDiscountAmount).add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
|
||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与消费金额({})-折扣金额({})+退款金额({})不相等",
|
||||
afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount);
|
||||
afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是在线支付, 校验消费金额+ 退款金额 = 支付金额
|
||||
if (StringUtils.equals(orderBasicInfo.getPayMode(), "4") || StringUtils.equals(orderBasicInfo.getPayMode(), "5")) {
|
||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) || StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) {
|
||||
if (orderSettleAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
|
||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与结算金额({})+退款金额({})不相等",
|
||||
afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderSettleAmount, orderRefundAmount);
|
||||
afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderSettleAmount, orderRefundAmount);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 校验通过,将退款金额重新set(为了避免数据库的退款金额没有及时更新)
|
||||
orderBasicInfo.setRefundAmount(orderRefundAmount);
|
||||
afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo);
|
||||
|
||||
// 订单退款,汇付退款
|
||||
try {
|
||||
refundMethod(afterSettleOrderDTO);
|
||||
|
||||
Reference in New Issue
Block a user