退款问题

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

View File

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