mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-03 17:40:13 +08:00
update 分润
This commit is contained in:
@@ -11,7 +11,7 @@ import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
|
|||||||
import com.jsowell.adapay.response.PaymentConfirmResponse;
|
import com.jsowell.adapay.response.PaymentConfirmResponse;
|
||||||
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
|
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
|
||||||
import com.jsowell.adapay.service.AdapayService;
|
import com.jsowell.adapay.service.AdapayService;
|
||||||
import com.jsowell.adapay.vo.OrderSettleResult;
|
import com.jsowell.adapay.vo.OrderSplitResult;
|
||||||
import com.jsowell.adapay.vo.PaymentInfo;
|
import com.jsowell.adapay.vo.PaymentInfo;
|
||||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||||
import com.jsowell.common.enums.ykc.*;
|
import com.jsowell.common.enums.ykc.*;
|
||||||
@@ -110,7 +110,7 @@ public class TempService {
|
|||||||
// 执行分账
|
// 执行分账
|
||||||
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
||||||
try {
|
try {
|
||||||
OrderSettleResult orderSettleResult = null;
|
OrderSplitResult orderSettleResult = null;
|
||||||
logger.info("手动接口执行订单分账逻辑-orderCode:{}, payMode:{}", orderBasicInfo.getOrderCode(), orderBasicInfo.getPayMode());
|
logger.info("手动接口执行订单分账逻辑-orderCode:{}, payMode:{}", orderBasicInfo.getOrderCode(), orderBasicInfo.getPayMode());
|
||||||
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||||
logger.info("手动接口执行订单分账逻辑-order:{}, result:{}", JSON.toJSONString(orderBasicInfo), JSON.toJSONString(orderSettleResult));
|
logger.info("手动接口执行订单分账逻辑-order:{}, result:{}", JSON.toJSONString(orderBasicInfo), JSON.toJSONString(orderSettleResult));
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import lombok.Setter;
|
|||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class OrderSettleResult {
|
public class OrderSplitResult {
|
||||||
/**
|
/**
|
||||||
* 订单编号
|
* 订单编号
|
||||||
*/
|
*/
|
||||||
@@ -2,7 +2,7 @@ package com.jsowell.pile.service;
|
|||||||
|
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
import com.jsowell.adapay.response.PaymentReverseResponse;
|
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||||
import com.jsowell.adapay.vo.OrderSettleResult;
|
import com.jsowell.adapay.vo.OrderSplitResult;
|
||||||
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
||||||
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||||
@@ -198,9 +198,9 @@ public interface OrderBasicInfoService{
|
|||||||
* @return
|
* @return
|
||||||
* @throws BaseAdaPayException
|
* @throws BaseAdaPayException
|
||||||
*/
|
*/
|
||||||
OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
|
OrderSplitResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
|
||||||
|
|
||||||
OrderSettleResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
|
OrderSplitResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量查询订单
|
* 批量查询订单
|
||||||
@@ -375,7 +375,7 @@ public interface OrderBasicInfoService{
|
|||||||
void retryRefundOrder(String orderCode) throws BaseAdaPayException;
|
void retryRefundOrder(String orderCode) throws BaseAdaPayException;
|
||||||
void retryRefundOrder(OrderBasicInfo orderBasicInfo) throws BaseAdaPayException;
|
void retryRefundOrder(OrderBasicInfo orderBasicInfo) throws BaseAdaPayException;
|
||||||
|
|
||||||
OrderSettleResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo);
|
OrderSplitResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo);
|
||||||
|
|
||||||
void returnUpdateOrderBasicInfo(OrderBasicInfo orderBasicInfo, TransactionRecordsData data);
|
void returnUpdateOrderBasicInfo(OrderBasicInfo orderBasicInfo, TransactionRecordsData data);
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,13 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
|
import com.jsowell.adapay.common.DivMember;
|
||||||
import com.jsowell.adapay.dto.QueryConfirmReverseDTO;
|
import com.jsowell.adapay.dto.QueryConfirmReverseDTO;
|
||||||
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
|
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
|
||||||
import com.jsowell.adapay.operation.PaymentReverseOperation;
|
import com.jsowell.adapay.operation.PaymentReverseOperation;
|
||||||
import com.jsowell.adapay.response.*;
|
import com.jsowell.adapay.response.*;
|
||||||
import com.jsowell.adapay.service.AdapayService;
|
import com.jsowell.adapay.service.AdapayService;
|
||||||
import com.jsowell.adapay.vo.OrderSettleResult;
|
import com.jsowell.adapay.vo.OrderSplitResult;
|
||||||
import com.jsowell.adapay.vo.PaymentInfo;
|
import com.jsowell.adapay.vo.PaymentInfo;
|
||||||
import com.jsowell.common.constant.CacheConstants;
|
import com.jsowell.common.constant.CacheConstants;
|
||||||
import com.jsowell.common.constant.Constants;
|
import com.jsowell.common.constant.Constants;
|
||||||
@@ -736,7 +737,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
* 订单结算完成,就执行清分and退款
|
* 订单结算完成,就执行清分and退款
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OrderSettleResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo) {
|
public OrderSplitResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo) {
|
||||||
String merchantId = orderBasicInfo.getMerchantId();
|
String merchantId = orderBasicInfo.getMerchantId();
|
||||||
String orderCode = orderBasicInfo.getOrderCode();
|
String orderCode = orderBasicInfo.getOrderCode();
|
||||||
// 获取一级运营商信息
|
// 获取一级运营商信息
|
||||||
@@ -827,7 +828,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
* @param wechatAppId 小程序appId
|
* @param wechatAppId 小程序appId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private OrderSettleResult notDelayMerchantOrderRefundLogic(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) {
|
private OrderSplitResult notDelayMerchantOrderRefundLogic(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) {
|
||||||
try {
|
try {
|
||||||
String payMode = orderBasicInfo.getPayMode();
|
String payMode = orderBasicInfo.getPayMode();
|
||||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) {
|
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) {
|
||||||
@@ -1210,7 +1211,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
// 执行分账
|
// 执行分账
|
||||||
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
||||||
try {
|
try {
|
||||||
OrderSettleResult orderSettleResult;
|
OrderSplitResult orderSettleResult;
|
||||||
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||||
// 余额支付的订单
|
// 余额支付的订单
|
||||||
orderSettleResult = doBalancePaymentWithDelay(orderBasicInfo, adapayMemberAccount, appId);
|
orderSettleResult = doBalancePaymentWithDelay(orderBasicInfo, adapayMemberAccount, appId);
|
||||||
@@ -1305,7 +1306,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OrderSettleResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
public OrderSplitResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||||
// 订单结算金额
|
// 订单结算金额
|
||||||
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
||||||
// 订单编号
|
// 订单编号
|
||||||
@@ -1328,7 +1329,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
List<String> collect = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList());
|
List<String> collect = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList());
|
||||||
|
|
||||||
// 校验是否分账
|
// 校验是否分账
|
||||||
OrderSettleResult result = verifyOrderConfirmAmount(collect, orderCode, settleAmount, wechatAppId);
|
OrderSplitResult result = verifyOrderConfirmAmount(collect, orderCode, settleAmount, wechatAppId);
|
||||||
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
||||||
// 没有分账,执行分账逻辑
|
// 没有分账,执行分账逻辑
|
||||||
for (BalanceDeductionAmountVO vo : list) {
|
for (BalanceDeductionAmountVO vo : list) {
|
||||||
@@ -1348,7 +1349,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 分账接口返回的信息
|
// 分账接口返回的信息
|
||||||
result = new OrderSettleResult();
|
result = new OrderSplitResult();
|
||||||
result.setConfirmAmt(confirmAmt.toString());
|
result.setConfirmAmt(confirmAmt.toString());
|
||||||
result.setStatus(status);
|
result.setStatus(status);
|
||||||
result.setFeeAmt(feeAmt.toString());
|
result.setFeeAmt(feeAmt.toString());
|
||||||
@@ -1452,7 +1453,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
* @param orderBasicInfo 订单
|
* @param orderBasicInfo 订单
|
||||||
* @param adapayMemberAccount 结算账户
|
* @param adapayMemberAccount 结算账户
|
||||||
*/
|
*/
|
||||||
public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
public OrderSplitResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||||
// 订单编号
|
// 订单编号
|
||||||
String orderCode = orderBasicInfo.getOrderCode();
|
String orderCode = orderBasicInfo.getOrderCode();
|
||||||
// 订单结算金额
|
// 订单结算金额
|
||||||
@@ -1479,7 +1480,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
String paymentId = paymentInfos.get(0).getPaymentId();
|
String paymentId = paymentInfos.get(0).getPaymentId();
|
||||||
|
|
||||||
// 校验订单分账金额
|
// 校验订单分账金额
|
||||||
OrderSettleResult result = verifyOrderConfirmAmount(paymentIds, orderCode, settleAmount, wechatAppId);
|
OrderSplitResult result = verifyOrderConfirmAmount(paymentIds, orderCode, settleAmount, wechatAppId);
|
||||||
|
|
||||||
// 校验订单是否分账 状态为非交易完成的时候,进行分账处理
|
// 校验订单是否分账 状态为非交易完成的时候,进行分账处理
|
||||||
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
if (!AdapayStatusEnum.SUCCEEDED.getValue().equals(result.getStatus())) {
|
||||||
@@ -1488,7 +1489,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
adapayMemberAccount, settleAmount, orderCode, wechatAppId);
|
adapayMemberAccount, settleAmount, orderCode, wechatAppId);
|
||||||
|
|
||||||
// 分账接口返回的信息
|
// 分账接口返回的信息
|
||||||
result = new OrderSettleResult();
|
result = new OrderSplitResult();
|
||||||
result.setConfirmAmt(paymentConfirmResponse.getConfirm_amt());
|
result.setConfirmAmt(paymentConfirmResponse.getConfirm_amt());
|
||||||
result.setStatus(paymentConfirmResponse.getStatus());
|
result.setStatus(paymentConfirmResponse.getStatus());
|
||||||
result.setFeeAmt(paymentConfirmResponse.getFee_amt());
|
result.setFeeAmt(paymentConfirmResponse.getFee_amt());
|
||||||
@@ -1500,22 +1501,51 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单实时分账方法
|
* 订单实时分账方法
|
||||||
|
* 2024年9月24日16点17分 新的分账方法
|
||||||
*/
|
*/
|
||||||
public OrderSettleResult doPaymentConfirmWithRealTime(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
public OrderSplitResult realTimeOrderSplit(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||||
// 订单编号
|
// 订单编号
|
||||||
String orderCode = orderBasicInfo.getOrderCode();
|
String orderCode = orderBasicInfo.getOrderCode();
|
||||||
// 订单结算金额
|
// 订单结算金额
|
||||||
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
||||||
// 查询订单支付记录
|
// 查询订单支付记录
|
||||||
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
|
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
|
||||||
// 选出需要分账的支付id
|
// 需要分账信息
|
||||||
List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
||||||
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
|
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()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据站点id查询该站点配置的分账信息, 如果为空表示本运营商分100%
|
||||||
|
List<AdapayMemberAccount> memberAccountList = Lists.newArrayList(adapayMemberAccount);
|
||||||
|
|
||||||
|
// 计算每个账户 订单分账金额
|
||||||
|
List<DivMember> divMemberList = splitAmount(memberAccountList, settleAmount, paymentInfos);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算每个账户需要分账的金额
|
||||||
|
* @param memberAccountList 参与分账的账户信息
|
||||||
|
* @param settleAmount 订单总结算金额
|
||||||
|
* @param paymentInfos 支付记录信息
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<DivMember> splitAmount(List<AdapayMemberAccount> memberAccountList, BigDecimal settleAmount, List<PaymentInfo> paymentInfos) {
|
||||||
|
List<DivMember> resultList = Lists.newArrayList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验订单分账金额
|
* 校验订单分账金额
|
||||||
*
|
*
|
||||||
@@ -1523,7 +1553,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
* @param orderCode 订单编号
|
* @param orderCode 订单编号
|
||||||
* @param settleAmount 结算金额
|
* @param settleAmount 结算金额
|
||||||
*/
|
*/
|
||||||
private OrderSettleResult verifyOrderConfirmAmount(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException {
|
private OrderSplitResult verifyOrderConfirmAmount(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException {
|
||||||
// 分账金额
|
// 分账金额
|
||||||
BigDecimal totalConfirmAmt = BigDecimal.ZERO;
|
BigDecimal totalConfirmAmt = BigDecimal.ZERO;
|
||||||
// 手续费
|
// 手续费
|
||||||
@@ -1559,7 +1589,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OrderSettleResult result = new OrderSettleResult();
|
OrderSplitResult result = new OrderSplitResult();
|
||||||
result.setOrderCode(orderCode);
|
result.setOrderCode(orderCode);
|
||||||
result.setSettleAmt(settleAmount.toString());
|
result.setSettleAmt(settleAmount.toString());
|
||||||
result.setConfirmAmt(totalConfirmAmt.toString());
|
result.setConfirmAmt(totalConfirmAmt.toString());
|
||||||
|
|||||||
Reference in New Issue
Block a user