From a838db1fb5f915cbc8213c76b3cc8d82a90340bd Mon Sep 17 00:00:00 2001 From: "shuo.wang" Date: Mon, 28 Jul 2025 09:45:19 +0800 Subject: [PATCH] =?UTF-8?q?openAPi=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/utils/OpenSignatureUtil.java | 13 +++++++------ .../cool/store/config/OpenApiValidateFilter.java | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/OpenSignatureUtil.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/OpenSignatureUtil.java index 98ccd401e..8b69c71aa 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/OpenSignatureUtil.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/OpenSignatureUtil.java @@ -1,5 +1,6 @@ package com.cool.store.utils; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import javax.crypto.Mac; @@ -17,18 +18,18 @@ import java.util.stream.Collectors; public class OpenSignatureUtil { private static final String HMAC_SHA256 = "HmacSHA256"; - public static String generateSign(Map params, String appSecret) { + public static String generateSign(Map params, String appSecret) { // 1. 分离固定参数和业务参数 - String appKey = params.get("appKey"); - String timestamp = params.get("timestamp"); + String appKey = params.get("appKey").toString(); + String timestamp = params.get("timestamp").toString(); // 2. 创建不包含固定参数的临时Map用于排序 - Map sortedParams = new TreeMap<>( + Map sortedParams = new TreeMap<>( params.entrySet().stream() .filter(e -> !"appKey".equals(e.getKey())) .filter(e -> !"timestamp".equals(e.getKey())) .filter(e -> !"sign".equals(e.getKey())) - .filter(e -> e.getValue() != null && !e.getValue().isEmpty()) + .filter(e -> Objects.nonNull(e.getValue())) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue @@ -40,7 +41,7 @@ public class OpenSignatureUtil { // 3.1 添加排序后的业务参数 sortedParams.forEach((key, value) -> { - sb.append(key).append("=").append(value).append("&"); + sb.append(key).append("=").append(JSONObject.toJSONString( value)).append("&"); }); // 3.2 添加固定参数(不参与排序) diff --git a/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java b/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java index 8317f964f..d72e9df04 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java @@ -123,9 +123,9 @@ public class OpenApiValidateFilter implements Filter { // 2. 使用 Jackson 解析 JSON 并转为 TreeMap(自动按键排序) ObjectMapper objectMapper = new ObjectMapper(); - SortedMap params = objectMapper.readValue( + SortedMap params = objectMapper.readValue( jsonBody, - new TypeReference>() {} + new TypeReference>() {} ); params.put("appKey",appKey); params.put("timestamp", timestampStr);