售后流水问题,售后代码被多个地方调用的方式优化,以后只有一个入口
This commit is contained in:
parent
e9d5e705ed
commit
a375feabfc
@ -5,6 +5,7 @@ import cn.lili.common.utils.SpringContextUtil;
|
|||||||
import cn.lili.event.OrderStatusChangeEvent;
|
import cn.lili.event.OrderStatusChangeEvent;
|
||||||
import cn.lili.modules.order.order.entity.dos.Order;
|
import cn.lili.modules.order.order.entity.dos.Order;
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||||
|
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||||
import cn.lili.modules.order.order.service.OrderService;
|
import cn.lili.modules.order.order.service.OrderService;
|
||||||
import cn.lili.modules.payment.entity.RefundLog;
|
import cn.lili.modules.payment.entity.RefundLog;
|
||||||
@ -33,8 +34,7 @@ public class PaymentExecute implements OrderStatusChangeEvent {
|
|||||||
@Override
|
@Override
|
||||||
public void orderChange(OrderMessage orderMessage) {
|
public void orderChange(OrderMessage orderMessage) {
|
||||||
|
|
||||||
switch (orderMessage.getNewStatus()) {
|
if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) {
|
||||||
case CANCELLED:
|
|
||||||
Order order = orderService.getBySn(orderMessage.getOrderSn());
|
Order order = orderService.getBySn(orderMessage.getOrderSn());
|
||||||
|
|
||||||
//如果未付款,则不去要退回相关代码执行
|
//如果未付款,则不去要退回相关代码执行
|
||||||
@ -42,11 +42,7 @@ public class PaymentExecute implements OrderStatusChangeEvent {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(order.getPaymentMethod());
|
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(order.getPaymentMethod());
|
||||||
//进行退款操作
|
|
||||||
switch (paymentMethodEnum) {
|
|
||||||
case WALLET:
|
|
||||||
case ALIPAY:
|
|
||||||
case WECHAT:
|
|
||||||
//获取支付方式
|
//获取支付方式
|
||||||
Payment payment =
|
Payment payment =
|
||||||
(Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
(Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
||||||
@ -64,21 +60,7 @@ public class PaymentExecute implements OrderStatusChangeEvent {
|
|||||||
.outOrderNo("AF" + SnowFlake.getIdStr())
|
.outOrderNo("AF" + SnowFlake.getIdStr())
|
||||||
.refundReason("订单取消")
|
.refundReason("订单取消")
|
||||||
.build();
|
.build();
|
||||||
payment.cancel(refundLog);
|
payment.refund(refundLog);
|
||||||
break;
|
|
||||||
case BANK_TRANSFER:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
log.error("订单支付执行异常,订单编号:{}", orderMessage.getOrderSn());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -83,17 +83,6 @@ public interface Payment {
|
|||||||
throw new ServiceException(ResultCode.PAY_ERROR);
|
throw new ServiceException(ResultCode.PAY_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消支付订单
|
|
||||||
*
|
|
||||||
* @param refundLog 支付参数
|
|
||||||
*/
|
|
||||||
default void cancel(RefundLog refundLog) {
|
|
||||||
throw new ServiceException(ResultCode.PAY_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 回调
|
* 回调
|
||||||
*
|
*
|
||||||
@ -131,6 +120,7 @@ public interface Payment {
|
|||||||
default String callbackUrl(String api, PaymentMethodEnum paymentMethodEnum) {
|
default String callbackUrl(String api, PaymentMethodEnum paymentMethodEnum) {
|
||||||
return api + "/buyer/payment/cashier/callback/" + paymentMethodEnum.name();
|
return api + "/buyer/payment/cashier/callback/" + paymentMethodEnum.name();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付异步通知地址
|
* 支付异步通知地址
|
||||||
*
|
*
|
||||||
|
@ -75,7 +75,6 @@ public class RefundSupport {
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
* @Author ftyy
|
* @Author ftyy
|
||||||
* @Description //TODO
|
|
||||||
* @Date 17:33 2021/11/18
|
* @Date 17:33 2021/11/18
|
||||||
* @Param [afterSale]
|
* @Param [afterSale]
|
||||||
**/
|
**/
|
||||||
@ -89,31 +88,6 @@ public class RefundSupport {
|
|||||||
orderItemService.updateById(orderItem);
|
orderItemService.updateById(orderItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单取消
|
|
||||||
*
|
|
||||||
* @param afterSale
|
|
||||||
*/
|
|
||||||
public void cancel(AfterSale afterSale) {
|
|
||||||
|
|
||||||
Order order = orderService.getBySn(afterSale.getOrderSn());
|
|
||||||
RefundLog refundLog = RefundLog.builder()
|
|
||||||
.isRefund(false)
|
|
||||||
.totalAmount(afterSale.getActualRefundPrice())
|
|
||||||
.payPrice(afterSale.getActualRefundPrice())
|
|
||||||
.memberId(afterSale.getMemberId())
|
|
||||||
.paymentName(order.getPaymentMethod())
|
|
||||||
.afterSaleNo(afterSale.getSn())
|
|
||||||
.paymentReceivableNo(order.getReceivableNo())
|
|
||||||
.outOrderNo("AF" + SnowFlake.getIdStr())
|
|
||||||
.orderSn(afterSale.getOrderSn())
|
|
||||||
.refundReason(afterSale.getReason())
|
|
||||||
.build();
|
|
||||||
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.paymentNameOf(order.getPaymentMethod());
|
|
||||||
Payment payment = (Payment) SpringContextUtil.getBean(paymentMethodEnum.getPlugin());
|
|
||||||
payment.refund(refundLog);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 退款通知
|
* 退款通知
|
||||||
|
@ -211,31 +211,6 @@ public class AliPayPlugin implements Payment {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cancel(RefundLog refundLog) {
|
|
||||||
AlipayTradeCancelModel model = new AlipayTradeCancelModel();
|
|
||||||
//这里取支付回调时返回的流水
|
|
||||||
if (StringUtils.isNotEmpty(refundLog.getPaymentReceivableNo())) {
|
|
||||||
model.setTradeNo(refundLog.getPaymentReceivableNo());
|
|
||||||
} else {
|
|
||||||
log.error("退款时,支付参数为空导致异常:{}", refundLog);
|
|
||||||
throw new ServiceException(ResultCode.ALIPAY_PARAMS_EXCEPTION);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
//与阿里进行交互
|
|
||||||
AlipayTradeCancelResponse alipayTradeCancelResponse = AliPayApi.tradeCancelToResponse(model);
|
|
||||||
if (alipayTradeCancelResponse.isSuccess()) {
|
|
||||||
refundLog.setIsRefund(true);
|
|
||||||
refundLog.setReceivableNo(refundLog.getOutOrderNo());
|
|
||||||
} else {
|
|
||||||
refundLog.setErrorMessage(String.format("错误码:%s,错误原因:%s", alipayTradeCancelResponse.getSubCode(), alipayTradeCancelResponse.getSubMsg()));
|
|
||||||
}
|
|
||||||
refundLogService.save(refundLog);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("支付宝退款异常", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundNotify(HttpServletRequest request) {
|
public void refundNotify(HttpServletRequest request) {
|
||||||
//不需要实现
|
//不需要实现
|
||||||
|
@ -96,21 +96,6 @@ public class WalletPlugin implements Payment {
|
|||||||
return ResultUtil.success(ResultCode.PAY_SUCCESS);
|
return ResultUtil.success(ResultCode.PAY_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cancel(RefundLog refundLog) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
memberWalletService.increase(new MemberWalletUpdateDTO(refundLog.getTotalAmount(),
|
|
||||||
refundLog.getMemberId(),
|
|
||||||
"取消[" + refundLog.getOrderSn() + "]订单,退还金额[" + refundLog.getTotalAmount() + "]",
|
|
||||||
DepositServiceTypeEnum.WALLET_REFUND.name()));
|
|
||||||
refundLog.setIsRefund(true);
|
|
||||||
refundLogService.save(refundLog);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("订单取消错误", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存支付日志
|
* 保存支付日志
|
||||||
*
|
*
|
||||||
@ -134,7 +119,7 @@ public class WalletPlugin implements Payment {
|
|||||||
try {
|
try {
|
||||||
memberWalletService.increase(new MemberWalletUpdateDTO(refundLog.getTotalAmount(),
|
memberWalletService.increase(new MemberWalletUpdateDTO(refundLog.getTotalAmount(),
|
||||||
refundLog.getMemberId(),
|
refundLog.getMemberId(),
|
||||||
"售后[" + refundLog.getAfterSaleNo() + "]审批,退还金额[" + refundLog.getTotalAmount() + "]",
|
"订单[" + refundLog.getOrderSn() + "],售后单[" + refundLog.getAfterSaleNo() + "],退还金额[" + refundLog.getTotalAmount() + "]",
|
||||||
DepositServiceTypeEnum.WALLET_REFUND.name()));
|
DepositServiceTypeEnum.WALLET_REFUND.name()));
|
||||||
refundLog.setIsRefund(true);
|
refundLog.setIsRefund(true);
|
||||||
refundLogService.save(refundLog);
|
refundLogService.save(refundLog);
|
||||||
|
@ -554,12 +554,6 @@ public class WechatPlugin implements Payment {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void cancel(RefundLog refundLog) {
|
|
||||||
this.refund(refundLog);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundNotify(HttpServletRequest request) {
|
public void refundNotify(HttpServletRequest request) {
|
||||||
String timestamp = request.getHeader("Wechatpay-Timestamp");
|
String timestamp = request.getHeader("Wechatpay-Timestamp");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user