From 00385906c3cfc7a97925647c6ff3807b0b1ad382 Mon Sep 17 00:00:00 2001 From: yang <2119157826@qq.com> Date: Mon, 10 Feb 2025 22:49:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor(pay):=20=E8=B0=83=E6=95=B4=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=E6=94=AF=E4=BB=98=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/AliPay/AliPayController.java | 7 ---- .../pay/AliPay/OrderTradeController.java | 35 +++++++++---------- .../pay/service/impl/AliPayServiceImpl.java | 19 ++++------ 3 files changed, 24 insertions(+), 37 deletions(-) diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java index aaffb6a..283185e 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java @@ -1,9 +1,6 @@ package com.mcwl.web.controller.pay.AliPay; import cn.hutool.core.lang.UUID; -import cn.hutool.extra.qrcode.QrCodeUtil; -import cn.hutool.json.JSONUtil; -import com.alipay.api.AlipayApiException; import com.alipay.easysdk.factory.Factory; import com.mcwl.common.annotation.Anonymous; import com.mcwl.common.core.controller.BaseController; @@ -18,7 +15,6 @@ import com.mcwl.pay.service.AliPayService; import com.mcwl.pay.service.OrderTradeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.checkerframework.checker.units.qual.min; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; @@ -27,8 +23,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.net.URLEncoder; import java.util.HashMap; @@ -204,7 +198,6 @@ public class AliPayController extends BaseController { .eq(OrderTrade::getCode, code) .one(); if (orderTrade == null) { - redisCache.deleteObject(code); return "failure"; } // 获取订单后缀 diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java index dd53af9..34a85b6 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java @@ -1,19 +1,10 @@ package com.mcwl.web.controller.pay.AliPay; -import cn.hutool.core.lang.UUID; -import cn.hutool.core.util.RandomUtil; -import cn.hutool.extra.qrcode.QrCodeUtil; -import cn.hutool.json.JSON; -import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson.JSONObject; -import com.alipay.api.AlipayApiException; -import com.alipay.api.request.AlipaySystemOauthTokenRequest; -import com.alipay.easysdk.base.oauth.models.AlipaySystemOauthTokenResponse; import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.kernel.Config; +import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse; import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; import com.mcwl.common.JSONUtils; -import com.mcwl.common.annotation.Anonymous; import com.mcwl.common.core.controller.BaseController; import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.common.core.page.TableDataInfo; @@ -21,7 +12,6 @@ import com.mcwl.common.core.redis.RedisCache; import com.mcwl.common.domain.IdsParam; import com.mcwl.common.utils.SecurityUtils; import com.mcwl.pay.domain.OrderTrade; -import com.mcwl.pay.domain.OrderTradeDto; import com.mcwl.pay.service.AliPayService; import com.mcwl.pay.service.OrderTradeService; import io.swagger.annotations.Api; @@ -30,15 +20,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.concurrent.TimeUnit; +import java.util.List; +import java.util.Map; /** * @Author:ChenYan @@ -148,4 +133,18 @@ public class OrderTradeController extends BaseController { } + /** + * 关闭交易 + */ + @GetMapping("/closeTrade") + public AjaxResult closeTrade(String outTradeNo) throws Exception { + // 关闭交易 + AlipayTradeCancelResponse close = Factory.Payment.Common().cancel(outTradeNo); + if (close.getCode().equals("10000")) { + return AjaxResult.success("关闭成功"); + } + return AjaxResult.error("关闭失败"); + } + + } diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java index e70a0e1..66c94d1 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java @@ -2,8 +2,6 @@ package com.mcwl.pay.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateField; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.UUID; import cn.hutool.extra.mail.MailUtil; import cn.hutool.json.JSONUtil; @@ -12,7 +10,6 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.diagnosis.DiagnosisUtils; import com.alipay.api.domain.AlipayFundAccountQueryModel; import com.alipay.api.domain.AlipayFundTransUniTransferModel; import com.alipay.api.domain.Participant; @@ -23,7 +20,7 @@ import com.alipay.api.response.AlipayFundAccountQueryResponse; import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.kernel.Config; -import com.alipay.easysdk.payment.common.models.AlipayTradeCloseResponse; +import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse; import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; import com.mcwl.common.JSONUtils; @@ -217,8 +214,6 @@ public class AliPayServiceImpl implements AliPayService { .preCreate(tradeEntity.getProductName(), tradeEntity.getCode(), paymentAmount.toString()); - // 缓存到redis - redisCache.setCacheObject(tradeEntity.getCode(), JSONUtil.toJsonStr(tradeEntity), 30, TimeUnit.SECONDS); //参照官方文档响应示例,解析返回结果 String httpBodyStr = payResponse.getHttpBody(); JSONObject jsonObject = JSONObject.parseObject(httpBodyStr); @@ -357,12 +352,12 @@ public class AliPayServiceImpl implements AliPayService { orderTradeService.orderHandler(orderTrade, suffix, params); return AjaxResult.success("查询成功", orderTrade.getPayStatus()); } - long expire = redisCache.getExpire(outTradeNo); - // expire 超过15分钟,则删除redis中订单信息 - if (expire > 900) { - // 关闭交易 - AlipayTradeCloseResponse close = Factory.Payment.Common().close(outTradeNo); - if (close.getCode().equals("10000")) { + long time = orderTrade.getCreateTime().getTime() / 1000 / 60; + // time 超过15分钟,则删除redis中订单信息 + if (time >= 15) { + // 撤销交易 + AlipayTradeCancelResponse cancel = Factory.Payment.Common().cancel(outTradeNo); + if (cancel.getCode().equals("10000")) { orderTrade.setOrderStatus(4); orderTradeService.updateById(orderTrade); redisCache.deleteObject(outTradeNo + "promotionId");