mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 04:39:00 +08:00
feat(pay): 修改退款成功状态回调逻辑
- 更新 TradeStatusEnum.java: 修改第22行,新增 TRADE_CLOSED 状态,关联 REFUND_SUCCESS。 - 更新 AlipayPayNotifyCallbackHandler.java: 修改第123行,完善退款成功状态判断逻辑, 如果 trade_status=TRADE_CLOSED 则设置订单状态为 REFUND_SUCCESS, 否则设置为 TRADE_SUCCESS。 - 更新前端文件 src/views/biz/pay/order/index.vue: 在第256行新增退款成功状态(label: '退款成功', value: '5'), 以支持退款成功状态在前端的显示。
This commit is contained in:
1 parent
99bf24ff15
commit
7aba13c20a
2 files changed
+118
-109
No files matched your search
+86
-76
@@ -29,6 +29,7 @@ import com.pig4cloud.pigx.pay.handler.MessageDuplicateCheckerHandler;
|
||||
import com.pig4cloud.pigx.pay.service.PayGoodsOrderService;
|
||||
import com.pig4cloud.pigx.pay.service.PayNotifyRecordService;
|
||||
import com.pig4cloud.pigx.pay.service.PayTradeOrderService;
|
||||
import com.pig4cloud.pigx.pay.utils.OrderStatusEnum;
|
||||
import com.pig4cloud.pigx.pay.utils.PayConstants;
|
||||
import com.pig4cloud.pigx.pay.utils.TradeStatusEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -49,92 +50,101 @@ import java.util.Map;
|
||||
@Service("alipayCallback")
|
||||
public class AlipayPayNotifyCallbackHandler extends AbstractPayNotifyCallbakHandler {
|
||||
|
||||
private final MessageDuplicateCheckerHandler duplicateCheckerHandler;
|
||||
private final MessageDuplicateCheckerHandler duplicateCheckerHandler;
|
||||
|
||||
private final PayTradeOrderService tradeOrderService;
|
||||
private final PayTradeOrderService tradeOrderService;
|
||||
|
||||
private final PayGoodsOrderService goodsOrderService;
|
||||
private final PayGoodsOrderService goodsOrderService;
|
||||
|
||||
private final PayNotifyRecordService recordService;
|
||||
private final PayNotifyRecordService recordService;
|
||||
|
||||
/**
|
||||
* 维护租户信息
|
||||
* @param params
|
||||
*/
|
||||
@Override
|
||||
public void before(Map<String, String> params) {
|
||||
Long tenant = MapUtil.getLong(params, "passback_params");
|
||||
TenantContextHolder.setTenantId(tenant);
|
||||
}
|
||||
/**
|
||||
* 维护租户信息
|
||||
*
|
||||
* @param params
|
||||
*/
|
||||
@Override
|
||||
public void before(Map<String, String> params) {
|
||||
Long tenant = MapUtil.getLong(params, "passback_params");
|
||||
TenantContextHolder.setTenantId(tenant);
|
||||
}
|
||||
|
||||
/**
|
||||
* 去重处理
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean duplicateChecker(Map<String, String> params) {
|
||||
// 判断是否是为支付中
|
||||
if (StrUtil.equals(TradeStatusEnum.WAIT_BUYER_PAY.getDescription(), params.get(PayConstants.TRADE_STATUS))) {
|
||||
log.info("支付宝订单待支付 {} 不做处理", params);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 去重处理
|
||||
*
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean duplicateChecker(Map<String, String> params) {
|
||||
// 判断是否是为支付中
|
||||
if (StrUtil.equals(TradeStatusEnum.WAIT_BUYER_PAY.getDescription(), params.get(PayConstants.TRADE_STATUS))) {
|
||||
log.info("支付宝订单待支付 {} 不做处理", params);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 判断10秒内是否已经回调处理
|
||||
if (duplicateCheckerHandler.isDuplicate(params.get(PayConstants.OUT_TRADE_NO))) {
|
||||
log.info("支付宝订单重复回调 {} 不做处理", params);
|
||||
this.saveNotifyRecord(params, "重复回调");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// 判断10秒内是否已经回调处理
|
||||
if (duplicateCheckerHandler.isDuplicate(params.get(PayConstants.OUT_TRADE_NO))) {
|
||||
log.info("支付宝订单重复回调 {} 不做处理", params);
|
||||
this.saveNotifyRecord(params, "重复回调");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验签逻辑
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean verifyNotify(Map<String, String> params) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 验签逻辑
|
||||
*
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean verifyNotify(Map<String, String> params) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析报文
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String parse(Map<String, String> params) {
|
||||
String tradeStatus = EnumUtil.fromString(TradeStatusEnum.class, params.get(PayConstants.TRADE_STATUS))
|
||||
.getStatus();
|
||||
/**
|
||||
* 解析报文
|
||||
*
|
||||
* @param params 回调报文
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String parse(Map<String, String> params) {
|
||||
String tradeStatus = EnumUtil.fromString(TradeStatusEnum.class, params.get(PayConstants.TRADE_STATUS))
|
||||
.getStatus();
|
||||
|
||||
String orderNo = params.get(PayConstants.OUT_TRADE_NO);
|
||||
PayGoodsOrder goodsOrder = goodsOrderService
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
goodsOrder.setStatus(tradeStatus);
|
||||
goodsOrderService.updateById(goodsOrder);
|
||||
String orderNo = params.get(PayConstants.OUT_TRADE_NO);
|
||||
PayGoodsOrder goodsOrder = goodsOrderService
|
||||
.getOne(Wrappers.<PayGoodsOrder>lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo));
|
||||
goodsOrder.setStatus(tradeStatus);
|
||||
goodsOrderService.updateById(goodsOrder);
|
||||
|
||||
PayTradeOrder tradeOrder = tradeOrderService
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
tradeOrder.setPaySuccTime(LocalDateTime.now());
|
||||
tradeOrder.setChannelOrderNo(params.get("trade_no"));
|
||||
tradeOrder.setStatus(TradeStatusEnum.TRADE_SUCCESS.getStatus());
|
||||
tradeOrderService.updateById(tradeOrder);
|
||||
PayTradeOrder tradeOrder = tradeOrderService
|
||||
.getOne(Wrappers.<PayTradeOrder>lambdaQuery().eq(PayTradeOrder::getOrderId, orderNo));
|
||||
tradeOrder.setPaySuccTime(LocalDateTime.now());
|
||||
tradeOrder.setChannelOrderNo(params.get("trade_no"));
|
||||
tradeOrder.setStatus(TradeStatusEnum.TRADE_SUCCESS.getStatus());
|
||||
// 退款也会回调,trade_status=TRADE_CLOSED ,具体看报文记录
|
||||
if (OrderStatusEnum.REFUND_SUCCESS.getStatus().equals(tradeStatus)) {
|
||||
tradeOrder.setStatus(OrderStatusEnum.REFUND_SUCCESS.getStatus());
|
||||
} else {
|
||||
tradeOrder.setStatus(TradeStatusEnum.TRADE_SUCCESS.getStatus());
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
|
||||
return "success";
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存回调记录
|
||||
* @param result 处理结果
|
||||
* @param params 回调报文
|
||||
*/
|
||||
@Override
|
||||
public void saveNotifyRecord(Map<String, String> params, String result) {
|
||||
PayNotifyRecord record = new PayNotifyRecord();
|
||||
String notifyId = params.get("notify_id");
|
||||
saveRecord(params, result, record, notifyId, recordService);
|
||||
}
|
||||
/**
|
||||
* 保存回调记录
|
||||
*
|
||||
* @param result 处理结果
|
||||
* @param params 回调报文
|
||||
*/
|
||||
@Override
|
||||
public void saveNotifyRecord(Map<String, String> params, String result) {
|
||||
PayNotifyRecord record = new PayNotifyRecord();
|
||||
String notifyId = params.get("notify_id");
|
||||
saveRecord(params, result, record, notifyId, recordService);
|
||||
}
|
||||
|
||||
}
|
||||
+32
-33
@@ -11,44 +11,43 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
public enum TradeStatusEnum {
|
||||
|
||||
/**
|
||||
* 交易完成
|
||||
*/
|
||||
WAIT_BUYER_PAY("WAIT_BUYER_PAY", OrderStatusEnum.INIT.getStatus()),
|
||||
/**
|
||||
* 交易完成
|
||||
*/
|
||||
WAIT_BUYER_PAY("WAIT_BUYER_PAY", OrderStatusEnum.INIT.getStatus()),
|
||||
|
||||
/**
|
||||
* TRADE_CLOSED
|
||||
*/
|
||||
TRADE_CLOSED("TRADE_CLOSED", OrderStatusEnum.FAIL.getStatus()),
|
||||
/**
|
||||
* TRADE_CLOSED
|
||||
*/
|
||||
TRADE_CLOSED("TRADE_CLOSED", OrderStatusEnum.REFUND_SUCCESS.getStatus()),
|
||||
/**
|
||||
* TRADE_SUCCESS
|
||||
*/
|
||||
TRADE_SUCCESS("TRADE_SUCCESS", OrderStatusEnum.SUCCESS.getStatus()),
|
||||
|
||||
/**
|
||||
* TRADE_SUCCESS
|
||||
*/
|
||||
TRADE_SUCCESS("TRADE_SUCCESS", OrderStatusEnum.SUCCESS.getStatus()),
|
||||
/**
|
||||
* 交易关闭
|
||||
*/
|
||||
TRADE_FINISHED("TRADE_FINISHED", OrderStatusEnum.COMPLETE.getStatus()),
|
||||
|
||||
/**
|
||||
* 交易关闭
|
||||
*/
|
||||
TRADE_FINISHED("TRADE_FINISHED", OrderStatusEnum.COMPLETE.getStatus()),
|
||||
/**
|
||||
* 微信支付成功
|
||||
*/
|
||||
SUCCESS("SUCCESS", OrderStatusEnum.SUCCESS.getStatus()),
|
||||
|
||||
/**
|
||||
* 微信支付成功
|
||||
*/
|
||||
SUCCESS("SUCCESS", OrderStatusEnum.SUCCESS.getStatus()),
|
||||
/**
|
||||
* 微信支付失败
|
||||
*/
|
||||
FAIL("FAIL", OrderStatusEnum.FAIL.getStatus());
|
||||
|
||||
/**
|
||||
* 微信支付失败
|
||||
*/
|
||||
FAIL("FAIL", OrderStatusEnum.FAIL.getStatus());
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String status;
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user