From 59ac31065740db24b7a242e0cbfeb5a4806da7a2 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 18 九月 2025 16:24:02 +0800
Subject: [PATCH] AI对接,微信小程序支付

---
 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