refactor(pay): 调整支付宝支付流程
parent
d2e1697e4e
commit
00385906c3
|
@ -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";
|
||||
}
|
||||
// 获取订单后缀
|
||||
|
|
|
@ -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("关闭失败");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue