校验支付确认是否撤销

This commit is contained in:
2024-01-03 17:17:41 +08:00
parent 15b5884948
commit f68163ab84

View File

@@ -7,12 +7,10 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.jsowell.adapay.common.AdaPayment; import com.jsowell.adapay.common.AdaPayment;
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.PaymentConfirmResponse; import com.jsowell.adapay.response.*;
import com.jsowell.adapay.response.PaymentReverseResponse;
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
import com.jsowell.adapay.response.RefundResponse;
import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.service.AdapayService;
import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.adapay.vo.OrderSettleResult;
import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.adapay.vo.PaymentInfo;
@@ -1354,7 +1352,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* @return * @return
*/ */
@Override @Override
public OrderSettleResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) { public OrderSettleResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
// 订单结算金额 // 订单结算金额
BigDecimal settleAmount = orderBasicInfo.getSettleAmount(); BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
// 订单编号 // 订单编号
@@ -1491,7 +1489,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* @param orderBasicInfo 订单 * @param orderBasicInfo 订单
* @param adapayMemberAccount 结算账户 * @param adapayMemberAccount 结算账户
*/ */
public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) { public OrderSettleResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
String orderCode = orderBasicInfo.getOrderCode(); String orderCode = orderBasicInfo.getOrderCode();
// 查询该笔订单的支付交易回调 // 查询该笔订单的支付交易回调
AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode); AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecord(orderCode);
@@ -1527,7 +1525,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* @param orderCode 订单编号 * @param orderCode 订单编号
* @param settleAmount 结算金额 * @param settleAmount 结算金额
*/ */
private OrderSettleResult verifyOrderConfirmAmount(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) { private OrderSettleResult verifyOrderConfirmAmount(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException {
// 分账金额 // 分账金额
BigDecimal totalConfirmAmt = BigDecimal.ZERO; BigDecimal totalConfirmAmt = BigDecimal.ZERO;
// 手续费 // 手续费
@@ -1542,6 +1540,11 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
List<QueryPaymentConfirmDetailResponse.PaymentConfirmInfo> confirms = response.getPaymentConfirms(); List<QueryPaymentConfirmDetailResponse.PaymentConfirmInfo> confirms = response.getPaymentConfirms();
if (CollectionUtils.isNotEmpty(confirms)) { if (CollectionUtils.isNotEmpty(confirms)) {
for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo confirm : confirms) { for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo confirm : confirms) {
// 校验分账是否撤销
if (queryConfirmReverseStatus(confirm.getId(), wechatAppId)) {
logger.info("支付确认id:" + confirm.getId() + "撤销了。。。");
continue;
}
JSONObject jsonObject = JSON.parseObject(confirm.getDescription()); JSONObject jsonObject = JSON.parseObject(confirm.getDescription());
if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) { if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) {
// 订单号对的上,累计分账金额 // 订单号对的上,累计分账金额
@@ -1579,6 +1582,24 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
return result; return result;
} }
/**
* 查询分账撤销状态
*/
private boolean queryConfirmReverseStatus(String paymentConfirmId, String wechatAppId) throws BaseAdaPayException {
boolean result = false;
QueryConfirmReverseDTO dto = QueryConfirmReverseDTO.builder()
.paymentConfirmId(paymentConfirmId)
.wechatAppId(wechatAppId)
.build();
ConfirmReverseResponse confirmReverseResponse = adapayService.queryConfirmReverse(dto);
if (confirmReverseResponse.isSuccess()) {
result = true;
}
return result;
}
/** /**
* uniApp 发送停止充电订阅消息 * uniApp 发送停止充电订阅消息
*/ */