From 5d4ebe6d0b7dda230b19f4913bdeb60556b46678 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 13 十月 2025 18:33:47 +0800
Subject: [PATCH] bug修改
---
ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxUtils.java | 50 +++++++++++++++++++++++++++++++++++++-------------
1 files changed, 37 insertions(+), 13 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxUtils.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxUtils.java
index 6287358..5ebed59 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxUtils.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxUtils.java
@@ -11,14 +11,17 @@
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.AlgorithmParameters;
+import java.security.SecureRandom;
import java.security.Security;
import java.util.Arrays;
+import java.util.Random;
/**
* @Description 获取用户信息工具类
@@ -27,7 +30,12 @@
*/
@Slf4j
public class WxUtils {
+ /**
+ * 随机字符
+ */
+ private static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ private static final Random RANDOM = new SecureRandom();
/**
* 微信小程序API 用户数据的解密
*
@@ -95,20 +103,36 @@
* @return
*/
public static String streamBodyByReceive(HttpServletRequest request) throws IOException {
- log.info("微信异步回调地址:{}", request.getRequestURL());
- StringBuffer buffer = new StringBuffer();
- InputStream inputStream = request.getInputStream();
- InputStreamReader reader = new InputStreamReader(inputStream);
- BufferedReader bufferedReader = new BufferedReader(reader);
- String body = null;
- while ((body = bufferedReader.readLine()) != null) {
- buffer.append(body);
+ BufferedReader reader = null;
+ StringBuffer sb = new StringBuffer();
+ try {
+ ServletInputStream stream = request.getInputStream();
+ // 获取响应
+ reader = new BufferedReader(new InputStreamReader(stream));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("读取微信支付接口数据流出现异常!");
+ } finally {
+ reader.close();
+ WxUtils.info(sb.toString());
}
- String data = buffer.toString();
- reader.close();
- inputStream.close();
- log.info("微信异步回调数据:{}", data);
- return data;
+ return sb.toString();
+ }
+
+ /**
+ * 获取随机字符串 Nonce Str
+ *
+ * @return String 随机字符串
+ */
+ public static String generateNonceStr() {
+ char[] nonceChars = new char[32];
+ for (int index = 0; index < nonceChars.length; ++index) {
+ nonceChars[index] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
+ }
+ return new String(nonceChars);
}
/**
--
Gitblit v1.7.1