refactor(order): 更新订单状态逻辑和支付流程
- 修改订单状态枚举,增加"支付中"和"已退款"状态 - 更新支付成功后的订单状态处理逻辑 - 增加支付失败时的状态回滚 - 修复退款相关的问题,更新退款成功后的订单状态 - 优化支付和退款流程中的日志记录
This commit is contained in:
parent
55e1fcb553
commit
e1937355dc
@ -76,7 +76,7 @@ public class Order extends BaseAudit {
|
||||
@Excel(name = "支付方式:0->未支付;1->支付宝;2->微信")
|
||||
private Integer payType;
|
||||
|
||||
@Schema(description = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
|
||||
@Schema(description = "订单状态:0->待支付;1->支付中;2->已支付;3->已关闭;4->已退款;10->无效订单")
|
||||
@Excel(name = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
|
||||
private Integer status;
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
package com.wzj.soopin.order.emum;
|
||||
|
||||
/**
|
||||
* 订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单
|
||||
* 订单状态:0->待支付;1->支付中;2->已支付;3->已关闭;4->已退款;10->无效订单
|
||||
*/
|
||||
public enum OrderStatusEnum {
|
||||
UNPAID(0, "待支付"),
|
||||
PAYMENT(1, "支付中"),
|
||||
PAID(2, "已支付"),
|
||||
CLOSED(3, "已关闭"),
|
||||
REFUNDED(4, "已退款"),
|
||||
INVALID(10, "无效订单");
|
||||
|
||||
private final Integer value;
|
||||
|
@ -61,6 +61,13 @@ public class PayOrder extends BaseAudit {
|
||||
@Schema(description = "完成支付日期")
|
||||
private Date endTransDate;
|
||||
|
||||
/**
|
||||
* 退款日期
|
||||
*/
|
||||
@TableField(value = "refund_date")
|
||||
@Schema(description = "退款日期")
|
||||
private Date refundDate;
|
||||
|
||||
/**
|
||||
* 易生生成后上送渠道的订单号
|
||||
*/
|
||||
|
@ -467,17 +467,17 @@ public class EasypayServiceImpl implements IEasypayService {
|
||||
TradeQueryRespBody tradeQueryRespBody = BeanUtil.toBean(easyPayRequest.getReqBody(), TradeQueryRespBody.class);
|
||||
RespStateInfo respStateInfo = tradeQueryRespBody.getRespStateInfo();
|
||||
if (StrUtil.equals(RSP_BODY_RESP_OK, respStateInfo.getRespCode())) {
|
||||
// 支付完成 进入终态
|
||||
if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK, RSP_BODY_TRANS_OK_WETCAT, RSP_BODY_TRANS_PARTIALLY_OK)) {
|
||||
TradeQueryRespOrderInfo respOrderInfo = tradeQueryRespBody.getRespOrderInfo();
|
||||
PayOrder payOrder = payOrderMapper.selectById(String.valueOf(respOrderInfo.getOrgTrace()));
|
||||
if (payOrder != null) {
|
||||
Order order = orderMapper.selectById(payOrder.getOrderId());
|
||||
if (order != null) {
|
||||
TradeQueryRespOrderInfo respOrderInfo = tradeQueryRespBody.getRespOrderInfo();
|
||||
PayOrder payOrder = payOrderMapper.selectById(String.valueOf(respOrderInfo.getOrgTrace()));
|
||||
if (payOrder != null) {
|
||||
Order order = orderMapper.selectById(payOrder.getOrderId());
|
||||
if (order != null) {
|
||||
// 支付完成 进入终态
|
||||
if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK, RSP_BODY_TRANS_OK_WETCAT, RSP_BODY_TRANS_PARTIALLY_OK)) {
|
||||
// 更新支付订单信息
|
||||
payOrderMapper.updateById(PayOrder.builder()
|
||||
.id(payOrder.getId())
|
||||
.endTransDate(DateUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()), toString()))
|
||||
.endTransDate(DateUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()).toString()))
|
||||
.easypayTrace(respOrderInfo.getOutTrace())
|
||||
.pcTrace(respOrderInfo.getPcTrace())
|
||||
.unTrace(respOrderInfo.getUnTrace())
|
||||
@ -490,13 +490,17 @@ public class EasypayServiceImpl implements IEasypayService {
|
||||
.paymentTime(LocalDateTimeUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()).toString(), "yyyyMMddHHmmss"))
|
||||
.payType(PayType.getByValue(payOrder.getPayType()).getChannel())
|
||||
.build());
|
||||
} else {
|
||||
log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace());
|
||||
}else{
|
||||
// 支付失败,支付状态重置为待支付
|
||||
payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.PENDING.getCode()).build());
|
||||
}
|
||||
} else {
|
||||
log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace());
|
||||
}
|
||||
} else {
|
||||
log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace());
|
||||
}
|
||||
|
||||
} else {
|
||||
log.warn("回调通知支付结果异常:{}", respStateInfo.getRespDesc());
|
||||
}
|
||||
@ -548,7 +552,8 @@ public class EasypayServiceImpl implements IEasypayService {
|
||||
if (StrUtil.equals(RSP_BODY_RESP_OK, respStateInfo.getRespCode())) {
|
||||
if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK)) {
|
||||
// 更新支付单退款状态
|
||||
payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.REFUNDED.getCode()).build());
|
||||
payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.REFUNDED.getCode()).refundDate(new Date()).build());
|
||||
orderMapper.updateById(Order.builder().id(order.getId()).status(OrderStatusEnum.REFUNDED.getValue()).build());
|
||||
}
|
||||
} else {
|
||||
log.error("易生退款失败:{}", respStateInfo.getRespDesc());
|
||||
@ -577,7 +582,7 @@ public class EasypayServiceImpl implements IEasypayService {
|
||||
if (payOrder.getTransState() == TransState.REFUNDED.getCode()) {
|
||||
return easypayTransResultVO;
|
||||
}
|
||||
Assert.isTrue(payOrder.getTransState() == TransState.PAID.getCode() || payOrder.getTransState() == TransState.REFUND_PENDING.getCode(), () -> new ServiceException("订单未支付"));
|
||||
Assert.isTrue(payOrder.getTransState() == TransState.PAID.getCode() || payOrder.getTransState() == TransState.REFUND_PENDING.getCode(), () -> new ServiceException("订单未支付或退款中"));
|
||||
EasyPayRequestHeader reqHeader = generateEasyPayRequestHeader();
|
||||
RefundApplyReqBody refundApplyReqBody = RefundApplyReqBody.builder()
|
||||
.reqInfo(ReqInfo.builder().mchtCode(easypayConfig.getMchtCode()).build())
|
||||
|
Loading…
x
Reference in New Issue
Block a user