From 683c8794d3da8bb74a6734c385599661e9791246 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 29 Aug 2023 15:06:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E6=98=93=E5=88=86=E8=B4=A6=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MemberAdapayRecordServiceImpl.java | 2 +- .../impl/OrderBasicInfoServiceImpl.java | 48 +++++++++++-------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberAdapayRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberAdapayRecordServiceImpl.java index cb0de28d7..145056e66 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberAdapayRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberAdapayRecordServiceImpl.java @@ -109,7 +109,7 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService /** * 从冻结金额中退款 - * 不解冻,退款 + * 部分解冻,并退款 */ @Override public void updateRefundAmountFromFreezeAmount(String paymentId, BigDecimal refundAmount) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index d5f3ad1ad..f12774f21 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -859,7 +859,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { /** * 不延迟商家订单退款处理逻辑 * 例如:希晓 - * 相当于已经分账完成了 + * 相当于已经分账完成了,只需要退款 * * @param orderBasicInfo 订单信息 * @param adapayMemberAccount 汇付用户信息 @@ -867,7 +867,21 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * @return */ private OrderSettleResult notDelayMerchantOrderRefundLogic(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) { - + try { + String payMode = orderBasicInfo.getPayMode(); + if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { + // 余额支付 + balancePaymentOrderRefundV2(orderBasicInfo); + } else if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { + // 微信支付 + onlinePaymentOrderRefund(orderBasicInfo); + } else { + // 白名单支付 + logger.info("订单:{}使用白名单支付,不进行退款处理", orderBasicInfo.getOrderCode()); + } + } catch (Exception e) { + logger.error("订单退款逻辑异常orderCode:{}", orderBasicInfo.getOrderCode(), e); + } return null; } @@ -1069,19 +1083,6 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } this.refundOrderWithAdapay(applyRefundDTO); } - - // 查支付记录 - // List payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); - // 更新订单支付记录 - // List updatePayRecordList = Lists.newArrayList(); - // OrderPayRecord orderPayRecord = payRecordList.get(0); - // orderPayRecord.setRefundAmount(refundAmount); - // updatePayRecordList.add(orderPayRecord); - // - // // 更新order_pay_record - // if (CollectionUtils.isNotEmpty(updatePayRecordList)) { - // orderPayRecordService.updateBatch(updatePayRecordList); - // } } /** @@ -2525,8 +2526,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { refundAmt = new BigDecimal(response.getReverse_amt()); // BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(refundAmt); // memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, reverseAmt, null); - // 解冻并退款 - // memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount(paymentId, reverseAmt, spendAmt); + + /* + 不管是撤销还是退款,都需要更新memberAdapayRecord中的金额, 解冻金额就是支付的金额,退款金额就是订单结算后需要退的金额 + 延时分账的,可以部分解冻 + */ + memberAdapayRecordService.updateRefundAmountFromFreezeAmount(paymentId, refundAmt); } } else { // 实时分账的调退款接口 @@ -2537,11 +2542,14 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 更新此笔交易单的消费金额 = 支付金额 - 撤销金额 // BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(refundAmt); // memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, refundAmt, null); + + /* + 不管是撤销还是退款,都需要更新memberAdapayRecord中的金额, 解冻金额就是支付的金额,退款金额就是订单结算后需要退的金额 + 实时分账的,可以全部解冻 + */ + memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount(paymentId, payAmt, refundAmt); } } - - // 不管是撤销还是退款,都需要更新memberAdapayRecord中的金额, 解冻金额就是支付的金额,退款金额就是订单结算后需要退的金额 - memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount(paymentId, payAmt, refundAmt); } /**