mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-05 06:27:59 +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 {
|
public OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException {
|
||||||
// 查询订单信息
|
// 查询订单信息
|
||||||
OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode());
|
OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode());
|
||||||
afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo);
|
String payMode = orderBasicInfo.getPayMode();
|
||||||
|
|
||||||
// 校验订单支付金额,消费金额,退款金额
|
// 校验订单支付金额,消费金额,退款金额
|
||||||
BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额
|
BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额
|
||||||
@@ -1932,31 +1932,35 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额
|
BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额
|
||||||
|
|
||||||
// 如果是白名单支付, 直接返回
|
// 如果是白名单支付, 直接返回
|
||||||
if (StringUtils.equals(orderBasicInfo.getPayMode(), "3")) {
|
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) {
|
||||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode());
|
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), payMode);
|
||||||
return null;
|
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());
|
BigDecimal orderDiscountAmount = afterSettleOrderDTO.getOrderElectricityDiscountAmount().add(afterSettleOrderDTO.getOrderServiceDiscountAmount());
|
||||||
if (orderConsumeAmount.subtract(orderDiscountAmount).add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
|
if (orderConsumeAmount.subtract(orderDiscountAmount).add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
|
||||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与消费金额({})-折扣金额({})+退款金额({})不相等",
|
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与消费金额({})-折扣金额({})+退款金额({})不相等",
|
||||||
afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount);
|
afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount);
|
||||||
return null;
|
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) {
|
if (orderSettleAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
|
||||||
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与结算金额({})+退款金额({})不相等",
|
logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与结算金额({})+退款金额({})不相等",
|
||||||
afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderSettleAmount, orderRefundAmount);
|
afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderSettleAmount, orderRefundAmount);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 校验通过,将退款金额重新set(为了避免数据库的退款金额没有及时更新)
|
||||||
|
orderBasicInfo.setRefundAmount(orderRefundAmount);
|
||||||
|
afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo);
|
||||||
|
|
||||||
// 订单退款,汇付退款
|
// 订单退款,汇付退款
|
||||||
try {
|
try {
|
||||||
refundMethod(afterSettleOrderDTO);
|
refundMethod(afterSettleOrderDTO);
|
||||||
|
|||||||
Reference in New Issue
Block a user