mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
update 分账逻辑
This commit is contained in:
@@ -775,6 +775,15 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
return adapayCallbackRecord;
|
||||
}
|
||||
|
||||
private AdapayCallbackRecord selectAdapayCallbackRecordByPaymentId(String paymentId) {
|
||||
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByPaymentId(paymentId);
|
||||
if (adapayCallbackRecord == null) {
|
||||
logger.error("根据支付id:{}, 未查询到汇付支付回调信息", paymentId);
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CALLBACK_IS_NULL_ERROR);
|
||||
}
|
||||
return adapayCallbackRecord;
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟商家订单退款处理逻辑
|
||||
* 例如:举视以及下面的二级运营商
|
||||
@@ -1432,17 +1441,36 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* @param adapayMemberAccount 结算账户
|
||||
*/
|
||||
public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||
// 订单编号
|
||||
String orderCode = orderBasicInfo.getOrderCode();
|
||||
// 查询该笔订单的支付交易回调
|
||||
AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode);
|
||||
// 支付id
|
||||
String paymentId = adapayCallbackRecord.getPaymentId();
|
||||
|
||||
// 订单结算金额
|
||||
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
||||
|
||||
// 查询订单支付记录
|
||||
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
|
||||
|
||||
// 选出需要分账的支付id
|
||||
List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
||||
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
|
||||
BigDecimal payAmount = orderPayRecord.getPayAmount();
|
||||
BigDecimal refundAmount = orderPayRecord.getRefundAmount() == null ? BigDecimal.ZERO : orderPayRecord.getRefundAmount();
|
||||
// 如果相减等于0,说明这笔支付单退完了,就不用分账了
|
||||
BigDecimal subtract = payAmount.subtract(refundAmount);
|
||||
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
|
||||
paymentInfos.addAll(orderPayRecordService.parseDeductionRecord(orderPayRecord.getDeductionRecord()));
|
||||
}
|
||||
}
|
||||
|
||||
List<String> paymentIds = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList());
|
||||
|
||||
// 查询该笔订单的支付交易回调
|
||||
// AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecordByPaymentId(paymentInfos.get(0).getPaymentId());
|
||||
|
||||
// 支付id
|
||||
String paymentId = paymentInfos.get(0).getPaymentId();
|
||||
|
||||
// 校验订单分账金额
|
||||
OrderSettleResult result = verifyOrderConfirmAmount(Lists.newArrayList(paymentId), orderCode, settleAmount, wechatAppId);
|
||||
OrderSettleResult result = verifyOrderConfirmAmount(paymentIds, orderCode, settleAmount, wechatAppId);
|
||||
|
||||
// 校验订单是否分账 状态为非交易完成的时候,进行分账处理
|
||||
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
||||
|
||||
Reference in New Issue
Block a user