From be2e00346362a9a3ff4f1a46de134639c73953ed Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期二, 15 七月 2025 14:11:55 +0800
Subject: [PATCH] bug修改
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index 58c3808..6574ab5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -14,6 +14,7 @@
import com.google.gson.GsonBuilder;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.order.domain.dto.WechatPaymentRefundDto;
import com.ruoyi.order.domain.dto.WeixinPaymentNotifyDto;
import com.ruoyi.order.domain.pojo.account.OrderRefund;
@@ -38,12 +39,14 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
+import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Map;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
/**
* @program: ruoyi
@@ -75,6 +78,9 @@
@Resource
private OrderRefundService orderRefundService;
+ @Resource
+ private RedisService redisService;
+
@PostMapping(value = "/payNotify")
@ApiOperation(value = "微信支付/退款通知")
public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException {
@@ -96,7 +102,7 @@
PartnerTransactionsResult result = notifyResult.getResult();
// 支付通知回调
if ("SUCCESS".equals(result.getTradeState())) {
- orderService.payBack(result);
+ orderService.payBack(result, BigDecimal.ONE);
}
resultMessage = GSON.toJson(notifyResult);
} else if (WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType)
@@ -239,8 +245,16 @@
if("S".equals(transStat)){
PartnerTransactionsResult transaction = new PartnerTransactionsResult();
transaction.setOutTradeNo(data.getReqSeqId());
+
+ //防止回调频繁导致时间处理异常
+ Object cacheObject = redisService.getCacheObject(data.getReqSeqId());
+ if(null == cacheObject){
+ redisService.setCacheObject(data.getReqSeqId(), "", 10L, TimeUnit.SECONDS);
+ }else{
+ return;
+ }
//开始处理业务数据
- orderService.payBack(transaction);
+ orderService.payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
response.setStatus(200);
PrintWriter out = null;
--
Gitblit v1.7.1