交易分账 重构

This commit is contained in:
2023-08-28 19:41:47 +08:00
parent d742ef1ff1
commit 9c69160164
2 changed files with 14 additions and 7 deletions

View File

@@ -91,7 +91,8 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
/**
* 解冻金额并更新消费金额
* unfreezeAmount
* @param unfreezeAmount 解冻金额
* @param spendAmount 消费金额
*/
@Override
public void unfreezeAmountAndUpdateSpendAmount(String paymentId, BigDecimal unfreezeAmount, BigDecimal spendAmount) {

View File

@@ -2469,6 +2469,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
String expend = callbackRecord.getExpend();
JSONObject expendJsonObject = JSON.parseObject(expend);
String payMode = expendJsonObject.getString("payMode");
BigDecimal refundAmt = null;
if (StringUtils.equalsIgnoreCase(payMode, Constants.ADAPAY_PAY_MODE_DELAY)) {
// 延迟分账未确认调撤销调撤销接口退款
PaymentReverseOperation operation = new PaymentReverseOperation();
@@ -2480,21 +2481,26 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
operation.setOrderCode(dto.getOrderCode());
PaymentReverseResponse response = adapayService.createPaymentReverseRequest(operation);
if (response != null && response.isNotFailed()) {
BigDecimal reverseAmt = new BigDecimal(response.getReverse_amt());
BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(reverseAmt);
memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, reverseAmt, null);
refundAmt = new BigDecimal(response.getReverse_amt());
// BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(refundAmt);
// memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, reverseAmt, null);
// 解冻并退款
// memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount(paymentId, reverseAmt, spendAmt);
}
} else {
// 实时分账的调退款接口
RefundResponse refundRequest = adapayService.createRefundRequest(paymentId, refundAmount,
dto.getWechatAppId(), dto.getMemberId(), ScenarioEnum.ORDER.getValue(), dto.getOrderCode());
if (refundRequest != null && refundRequest.isNotFailed()) {
BigDecimal refundAmt = new BigDecimal(refundRequest.getRefund_amt());
refundAmt = new BigDecimal(refundRequest.getRefund_amt());
// 更新此笔交易单的消费金额 = 支付金额 - 撤销金额
BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(refundAmt);
memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, refundAmt, null);
// BigDecimal spendAmt = callbackRecord.getPayAmt().subtract(refundAmt);
// memberAdapayRecordService.commonUpdateAmountMethod(paymentId, spendAmt, refundAmt, null);
}
}
// 不管是撤销还是退款都需要更新memberAdapayRecord中的退款金额
memberAdapayRecordService.updateRefundAmount(paymentId, refundAmt);
}
/**