diff --git a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/handler/impl/AlipayPayNotifyCallbackHandler.java b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/handler/impl/AlipayPayNotifyCallbackHandler.java index d6c7192bc..bb381e857 100644 --- a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/handler/impl/AlipayPayNotifyCallbackHandler.java +++ b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/handler/impl/AlipayPayNotifyCallbackHandler.java @@ -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 params) { - Long tenant = MapUtil.getLong(params, "passback_params"); - TenantContextHolder.setTenantId(tenant); - } + /** + * 维护租户信息 + * + * @param params + */ + @Override + public void before(Map params) { + Long tenant = MapUtil.getLong(params, "passback_params"); + TenantContextHolder.setTenantId(tenant); + } - /** - * 去重处理 - * @param params 回调报文 - * @return - */ - @Override - public Boolean duplicateChecker(Map 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 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 params) { - return true; - } + /** + * 验签逻辑 + * + * @param params 回调报文 + * @return + */ + @Override + public Boolean verifyNotify(Map params) { + return true; + } - /** - * 解析报文 - * @param params 回调报文 - * @return - */ - @Override - public String parse(Map params) { - String tradeStatus = EnumUtil.fromString(TradeStatusEnum.class, params.get(PayConstants.TRADE_STATUS)) - .getStatus(); + /** + * 解析报文 + * + * @param params 回调报文 + * @return + */ + @Override + public String parse(Map 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.lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo)); - goodsOrder.setStatus(tradeStatus); - goodsOrderService.updateById(goodsOrder); + String orderNo = params.get(PayConstants.OUT_TRADE_NO); + PayGoodsOrder goodsOrder = goodsOrderService + .getOne(Wrappers.lambdaQuery().eq(PayGoodsOrder::getPayOrderId, orderNo)); + goodsOrder.setStatus(tradeStatus); + goodsOrderService.updateById(goodsOrder); - PayTradeOrder tradeOrder = tradeOrderService - .getOne(Wrappers.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.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 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 params, String result) { + PayNotifyRecord record = new PayNotifyRecord(); + String notifyId = params.get("notify_id"); + saveRecord(params, result, record, notifyId, recordService); + } } diff --git a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/utils/TradeStatusEnum.java b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/utils/TradeStatusEnum.java index da1d29679..0ae078eb7 100644 --- a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/utils/TradeStatusEnum.java +++ b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/utils/TradeStatusEnum.java @@ -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; }