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