退款问题

This commit is contained in:
2025-12-11 12:37:39 +08:00
parent b4998c8790
commit ce5fe75951
4 changed files with 30 additions and 30 deletions

View File

@@ -20,5 +20,5 @@ public interface PointsGoodPayService {
boolean applyRefund(PointGoodsRefundDTO param, Long shopId);
//支付回调 进行兑换内容发放
void payCallBack(Long recordId);
void payCallBack(Long recordId, Long payOrderId);
}

View File

@@ -1174,7 +1174,7 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService {
else if ("distribution".equals(payment.getPayType())) {
distributionUserService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId());
}else if("point".equals(payment.getPayType())){
goodPayService.payCallBack(payment.getSourceId());
goodPayService.payCallBack(payment.getSourceId(), payment.getId());
}
}
paymentService.updateById(payment);

View File

@@ -2,6 +2,7 @@ package com.czg.service.order.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
@@ -848,22 +849,22 @@ public class PayServiceImpl implements PayService {
Long refundId = initOrderPayment(new OrderPayment(shopId, sourceId, "refund", refPayOrderNo, null, refundAmount, payment.getId()));
CzgResult<CzgRefundResp> refund = refund(shopId, new CzgRefundReq(refPayOrderNo, refundReason, refundAmount.multiply(MONEY_RATE).longValue(),
payment.getOrderNo(), ""));
OrderPayment uOrderPayment = new OrderPayment();
uOrderPayment.setTradeNumber(refund.getData().getRefundOrderId());
uOrderPayment.setRespJson(JSONObject.toJSONString(refund.getData()));
if (refund.getCode() != 200 || refund.getData() == null || !"SUCCESS".equals(refund.getData().getState())) {
paymentService.updateChain()
.eq(OrderPayment::getId, refundId)
.set(OrderPayment::getTradeNumber, refund.getData().getRefundOrderId())
.set(OrderPayment::getRespJson, JSONObject.toJSONString(refund.getData()))
.set(OrderPayment::getPayStatus, "fail")
.update();
uOrderPayment.setPayStatus("fail");
// paymentService.updateChain()
// .eq(OrderPayment::getId, refundId)
// .set(OrderPayment::getTradeNumber, refund.getData().getRefundOrderId())
// .set(OrderPayment::getRespJson, JSONObject.toJSONString(refund.getData()))
// .set(OrderPayment::getPayStatus, "fail")
// .update();
} else {
paymentService.updateChain()
.eq(OrderPayment::getId, refundId)
.set(OrderPayment::getPayTime, refund.getData().getRefundTime())
.set(OrderPayment::getTradeNumber, refund.getData().getRefundOrderId())
.set(OrderPayment::getRespJson, JSONObject.toJSONString(refund.getData()))
.set(OrderPayment::getPayStatus, "success")
.update();
uOrderPayment.setPayStatus("success");
uOrderPayment.setPayTime(LocalDateTimeUtil.parse(refund.getData().getRefundTime(), "yyyy-MM-dd HH:mm:ss"));
}
paymentService.update(uOrderPayment, QueryWrapper.create().eq(OrderPayment::getId, refundId));
}
@Override
@@ -874,22 +875,16 @@ public class PayServiceImpl implements PayService {
Long refundId = refundPayment.getId();
CzgResult<CzgRefundResp> refund = refund(payment.getShopId(), new CzgRefundReq(refPayOrderNo, "退款补偿", refundPayment.getAmount().multiply(MONEY_RATE).longValue(),
payment.getOrderNo(), ""));
OrderPayment uOrderPayment = new OrderPayment();
uOrderPayment.setTradeNumber(refund.getData().getRefundOrderId());
uOrderPayment.setRespJson(JSONObject.toJSONString(refund.getData()));
if (refund.getCode() != 200 || refund.getData() == null || !"SUCCESS".equals(refund.getData().getState())) {
paymentService.updateChain()
.eq(OrderPayment::getId, refundId)
.set(OrderPayment::getTradeNumber, refund.getData().getRefundOrderId())
.set(OrderPayment::getRespJson, JSONObject.toJSONString(refund.getData()))
.set(OrderPayment::getPayStatus, "fail")
.update();
uOrderPayment.setPayStatus("fail");
} else {
paymentService.updateChain()
.eq(OrderPayment::getId, refundId)
.set(OrderPayment::getPayTime, refund.getData().getRefundTime())
.set(OrderPayment::getTradeNumber, refund.getData().getRefundOrderId())
.set(OrderPayment::getRespJson, JSONObject.toJSONString(refund.getData()))
.set(OrderPayment::getPayStatus, "success")
.update();
uOrderPayment.setPayStatus("success");
uOrderPayment.setPayTime(LocalDateTimeUtil.parse(refund.getData().getRefundTime(), "yyyy-MM-dd HH:mm:ss"));
}
paymentService.update(uOrderPayment, QueryWrapper.create().eq(OrderPayment::getId, refundId));
}
@Override

View File

@@ -3,6 +3,7 @@ package com.czg.service.order.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.entity.ShopUser;
import com.czg.account.service.ShopUserService;
@@ -138,7 +139,8 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService {
//退钱
if (record.getExtraPaymentAmount() != null && record.getExtraPaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
String refPayOrderNo = "REP" + IdUtil.getSnowflakeNextId();
payService.unifyRefund(shopId, record.getId(), record.getPayOrderId(), refPayOrderNo, param.getReason(), record.getExtraPaymentAmount());
payService.unifyRefund(shopId, record.getId(), record.getPayOrderId(), refPayOrderNo,
StrUtil.isBlankIfStr(param.getReason()) ? "积分商品退款" : param.getReason(), record.getExtraPaymentAmount());
}
MkPointsGoodsRecord upRecord = new MkPointsGoodsRecord();
upRecord.setId(record.getId());
@@ -150,11 +152,14 @@ public class PointsGoodPayServiceImpl implements PointsGoodPayService {
@Override
@Transactional
public void payCallBack(Long recordId) {
public void payCallBack(Long recordId, Long payOrderId) {
MkPointsGoodsRecord record = goodsRecordService.getById(recordId);
if (record == null) {
log.error("积分兑换商品发放失败,记录不存在");
return;
}
record.setPayOrderId(payOrderId);
record.setPayTime(LocalDateTime.now());
exchangeAfter(record, null);
}