mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +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.QueryPaymentConfirmDetailResponse;
|
||||
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.common.enums.adapay.AdapayStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.*;
|
||||
@@ -110,7 +110,7 @@ public class TempService {
|
||||
// 执行分账
|
||||
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
||||
try {
|
||||
OrderSettleResult orderSettleResult = null;
|
||||
OrderSplitResult orderSettleResult = null;
|
||||
logger.info("手动接口执行订单分账逻辑-orderCode:{}, payMode:{}", orderBasicInfo.getOrderCode(), orderBasicInfo.getPayMode());
|
||||
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||
logger.info("手动接口执行订单分账逻辑-order:{}, result:{}", JSON.toJSONString(orderBasicInfo), JSON.toJSONString(orderSettleResult));
|
||||
|
||||
@@ -8,7 +8,7 @@ import lombok.Setter;
|
||||
*/
|
||||
@Getter
|
||||
@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.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.TransactionRecordsData;
|
||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||
@@ -198,9 +198,9 @@ public interface OrderBasicInfoService{
|
||||
* @return
|
||||
* @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(OrderBasicInfo orderBasicInfo) throws BaseAdaPayException;
|
||||
|
||||
OrderSettleResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo);
|
||||
OrderSplitResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo);
|
||||
|
||||
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.Sets;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.dto.QueryConfirmReverseDTO;
|
||||
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
|
||||
import com.jsowell.adapay.operation.PaymentReverseOperation;
|
||||
import com.jsowell.adapay.response.*;
|
||||
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.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
@@ -736,7 +737,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* 订单结算完成,就执行清分and退款
|
||||
*/
|
||||
@Override
|
||||
public OrderSettleResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo) {
|
||||
public OrderSplitResult orderPaymentSettlementAndRefund(OrderBasicInfo orderBasicInfo) {
|
||||
String merchantId = orderBasicInfo.getMerchantId();
|
||||
String orderCode = orderBasicInfo.getOrderCode();
|
||||
// 获取一级运营商信息
|
||||
@@ -827,7 +828,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* @param wechatAppId 小程序appId
|
||||
* @return
|
||||
*/
|
||||
private OrderSettleResult notDelayMerchantOrderRefundLogic(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) {
|
||||
private OrderSplitResult notDelayMerchantOrderRefundLogic(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) {
|
||||
try {
|
||||
String payMode = orderBasicInfo.getPayMode();
|
||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) {
|
||||
@@ -1210,7 +1211,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
// 执行分账
|
||||
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
|
||||
try {
|
||||
OrderSettleResult orderSettleResult;
|
||||
OrderSplitResult orderSettleResult;
|
||||
if (OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||
// 余额支付的订单
|
||||
orderSettleResult = doBalancePaymentWithDelay(orderBasicInfo, adapayMemberAccount, appId);
|
||||
@@ -1305,7 +1306,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* @return
|
||||
*/
|
||||
@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();
|
||||
// 订单编号
|
||||
@@ -1328,7 +1329,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
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())) {
|
||||
// 没有分账,执行分账逻辑
|
||||
for (BalanceDeductionAmountVO vo : list) {
|
||||
@@ -1348,7 +1349,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
}
|
||||
|
||||
// 分账接口返回的信息
|
||||
result = new OrderSettleResult();
|
||||
result = new OrderSplitResult();
|
||||
result.setConfirmAmt(confirmAmt.toString());
|
||||
result.setStatus(status);
|
||||
result.setFeeAmt(feeAmt.toString());
|
||||
@@ -1452,7 +1453,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* @param orderBasicInfo 订单
|
||||
* @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();
|
||||
// 订单结算金额
|
||||
@@ -1479,7 +1480,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
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())) {
|
||||
@@ -1488,7 +1489,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
adapayMemberAccount, settleAmount, orderCode, wechatAppId);
|
||||
|
||||
// 分账接口返回的信息
|
||||
result = new OrderSettleResult();
|
||||
result = new OrderSplitResult();
|
||||
result.setConfirmAmt(paymentConfirmResponse.getConfirm_amt());
|
||||
result.setStatus(paymentConfirmResponse.getStatus());
|
||||
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();
|
||||
// 订单结算金额
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
||||
// 根据站点id查询该站点配置的分账信息, 如果为空表示本运营商分100%
|
||||
List<AdapayMemberAccount> memberAccountList = Lists.newArrayList(adapayMemberAccount);
|
||||
|
||||
// 计算每个账户 订单分账金额
|
||||
List<DivMember> divMemberList = splitAmount(memberAccountList, settleAmount, paymentInfos);
|
||||
|
||||
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 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;
|
||||
// 手续费
|
||||
@@ -1559,7 +1589,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
}
|
||||
}
|
||||
|
||||
OrderSettleResult result = new OrderSettleResult();
|
||||
OrderSplitResult result = new OrderSplitResult();
|
||||
result.setOrderCode(orderCode);
|
||||
result.setSettleAmt(settleAmount.toString());
|
||||
result.setConfirmAmt(totalConfirmAmt.toString());
|
||||
|
||||
Reference in New Issue
Block a user