mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-01 12:38:04 +08:00
update 分账逻辑
This commit is contained in:
@@ -775,6 +775,15 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
return adapayCallbackRecord;
|
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 结算账户
|
* @param adapayMemberAccount 结算账户
|
||||||
*/
|
*/
|
||||||
public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||||
|
// 订单编号
|
||||||
String orderCode = orderBasicInfo.getOrderCode();
|
String orderCode = orderBasicInfo.getOrderCode();
|
||||||
// 查询该笔订单的支付交易回调
|
|
||||||
AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode);
|
|
||||||
// 支付id
|
|
||||||
String paymentId = adapayCallbackRecord.getPaymentId();
|
|
||||||
|
|
||||||
// 订单结算金额
|
// 订单结算金额
|
||||||
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
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())) {
|
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user