修改子订单完成的逻辑

This commit is contained in:
HH 2022-12-14 01:35:09 +08:00
parent 653cd5784d
commit 5e5ad630f6
2 changed files with 37 additions and 20 deletions

View File

@ -0,0 +1,6 @@
package com.ghy.common.adapay;
public interface AdapayErrorCode {
String CONFIRM_AMT_OVER_LIMIT = "confirm_amt_over_limit";
}

View File

@ -2,6 +2,7 @@ package com.ghy.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ghy.common.adapay.AdapayErrorCode;
import com.ghy.common.adapay.model.AdapayStatusEnum;
import com.ghy.common.adapay.model.DivMember;
import com.ghy.common.adapay.model.PaymentDTO;
@ -394,14 +395,11 @@ public class OrderDetailServiceImpl implements OrderDetailService {
divMembers.add(divMember);
//调用分账
logger.info("子订单[code={}]的[改价单]的分账信息: {}", odCode, JSON.toJSONString(divMembers));
JSONObject response;
response = adapayService.paymentConfirm(financialDetail.getDeptId(), fcRecord.getRemark(),
JSONObject response = adapayService.paymentConfirm(financialDetail.getDeptId(), fcRecord.getRemark(),
payment.getOrderNo() + "_" + System.currentTimeMillis(),
AdapayUtils.bigDecimalToString(fcRecord.getChangeMoney()), divMembers, null, null);
logger.info("子订单[code={}]的[改价单]的分账结果: {}", odCode, response.toJSONString());
boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status"));
// 如果确认支付失败 这里抛出异常 回滚订单状态
Assert.isTrue(status, response.getString("error_msg"));
if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) { // 分账成功
logger.info("子订单[code={}]的[改价单]分账成功", odCode);
// 这是被扣掉的手续费
String fee_amt = response.getString("fee_amt");
feeAmt = new BigDecimal(fee_amt);
@ -417,6 +415,19 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 待提现金额里减去改价单手续费
dtx = dtx.subtract(feeAmt);
}
} else { // 分账失败
if (AdapayErrorCode.CONFIRM_AMT_OVER_LIMIT.equals(response.getString("error_code"))) {
// 当前确认金额 > 支付金额 - 已支付确认金额 - 已支付撤销金额
// 这里有两种可能 1.可能是之前算错了手续费的旧订单
// 2.可能是之前执行过完单流程 改价单分账成功了 但是子财务单分账失败了
// 所以直接跳过
logger.info("子订单[code={}] 跳过[改价单]分账", odCode);
} else {
logger.error("子订单[code={}]的[改价单 paymentId={}]分账失败: {}", odCode, fcRecord.getRemark(), response.toJSONString());
// 其它错误抛异常
throw new IllegalArgumentException(response.getString("error_msg"));
}
}
} else {
logger.error("financialChangeRecords.size = " + financialChangeRecords.size());
}