Răsfoiți Sursa

fix:sdk签名md5大小写问题

flowerpig 10 luni în urmă
părinte
comite
41ab08fe2e

+ 1 - 2
src/main/java/com/ljsd/channel/Mock361YXSDK.java

@@ -117,8 +117,7 @@ public class Mock361YXSDK {
 
         String signCheck = md5(sortedQuery);
         LOGGER.info("signCheck:{}", signCheck);
-        return true;
-//        return signCheck.equals(sign);
+        return signCheck.equals(sign.toLowerCase());
     }
 
     public static String buildSortedQuery(Map<String, String> params) {

+ 2 - 21
src/main/java/com/ljsd/controller/PayCallbackController.java

@@ -8,10 +8,7 @@ import com.ljsd.jieling.thrift.idl.Result;
 import com.ljsd.jieling.thrift.pool.ThriftClient;
 import com.ljsd.pojo.ResMsg;
 import com.ljsd.redis.RedisKey;
-import com.ljsd.util.BaseGlobal;
-import com.ljsd.util.StringUtils;
-import com.ljsd.util.TimeUtil;
-import com.ljsd.util.XmlParser;
+import com.ljsd.util.*;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DBObject;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -54,12 +51,10 @@ public class PayCallbackController extends HttpServlet {
         request.setCharacterEncoding("UTF-8");
         response.setCharacterEncoding("UTF-8");
         response.setContentType("application/json; charset=utf-8");
-//        String uid = request.getParameter("userId");
+        LOGGER.info("PayCallbackController json params = {}",RequestLogger.logRequestParams(request));
         String sign = request.getParameter("sign");
         String nt_data = request.getParameter("nt_data");
         String md5Sign = request.getParameter("md5Sign");
-        LOGGER.info("PayCallbackController sign = {}, nt_data = {}, md5Sign = {}, app_id = {}", sign, nt_data,
-                md5Sign, request.getParameter("app_id"));
         ResMsg resMsg = new ResMsg();
         resMsg.setCode(1);
         DBObject payInfo = new BasicDBObject();
@@ -124,21 +119,7 @@ public class PayCallbackController extends HttpServlet {
             Result result = ThriftClient.deliveryRecharge((int) payInfo.get("uid"), (String) payInfo.get("pay_item"), (String) payInfo.get("open_id"),
                      (String) payInfo.get("billno"), Long.parseLong((String) payInfo.get("creattime")), (int) payInfo.get("money"));
 
-//            URIBuilder uriBuilder = new URIBuilder("http://127.0.0.1:7915/deliveryRecharge");
-//            uriBuilder.addParameter("uid", (String) payInfo.get("uid"));
-//            uriBuilder.addParameter("goodsId", (String) payInfo.get("pay_item"));
-//            uriBuilder.addParameter("openId", (String) payInfo.get("open_id"));
-//            uriBuilder.addParameter("orderId", (String) payInfo.get("cporderId"));
-//            uriBuilder.addParameter("orderTime", (String) payInfo.get("creattime"));
-//            uriBuilder.addParameter("amount", String.valueOf((int) payInfo.get("money")));
-//
-//            HttpGet httpGet = new HttpGet(uriBuilder.build().toString());
-//            CloseableHttpResponse resp = httpClient.execute(httpGet);
-
-//            String result = EntityUtils.toString(resp.getEntity());
             LOGGER.info("deliveryRecharge result = {}", result);
-
-//            resp.close();
             if (result == null || result.resultCode != 1) {
                 resMsg.setCode(1);
                 resMsg.setMsg("发货失败");

+ 9 - 3
src/main/java/com/ljsd/listener/WebContextListener.java

@@ -25,9 +25,15 @@ public class WebContextListener implements ServletContextListener {
                 path = DEFAULT_CONFIG_PATH;
                 inputStream = getClass().getResourceAsStream(path);
             }else{
-               //path += "/config/jl_loginserver/application.properties";
-                 path = System.getProperty("my.config.path");  // 从 JVM 参数获取路径
-//                path += "/application.properties";
+                // 判断是否为macOS(忽略大小写,兼容"Mac OS X"和"macOS")
+                boolean isMacOS = osName.toLowerCase().contains("mac");
+                if (isMacOS){
+                    //本地mac环境
+                    path = System.getProperty("my.config.path");  // 从 JVM 参数获取路径
+                }else {
+                    //线上linux环境
+                    path += "/config/x1/application.properties";
+                }
                 inputStream = new FileInputStream(path);
             }
             LOGGER.info("WebContextListener==>path={}",path);

+ 113 - 0
src/main/java/com/ljsd/util/RequestLogger.java

@@ -0,0 +1,113 @@
+package com.ljsd.util;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 打印表单请求和JSON请求的工具类
+ */
+public class RequestLogger {
+
+    /**
+     * 根据请求类型(表单/JSON)打印参数,并返回字符串用于日志
+     */
+    public static String logRequestParams(HttpServletRequest request) throws IOException {
+        String contentType = request.getContentType();
+        if (contentType == null) {
+            return "请求Content-Type为空";
+        }
+
+        // 处理表单请求(application/x-www-form-urlencoded)
+        if (contentType.contains("application/x-www-form-urlencoded")) {
+            return logFormParams(request);
+        }
+        // 处理JSON请求(application/json)
+        else if (contentType.contains("application/json")) {
+            return logJsonParams(request);
+        }
+        // 其他类型
+        else {
+            return "不支持的Content-Type:" + contentType;
+        }
+    }
+
+    /**
+     * 打印表单参数(返回格式化字符串)
+     */
+    private static String logFormParams(HttpServletRequest request) {
+        Map<String, String> paramMap = new LinkedHashMap<>();
+        // 获取所有表单参数名
+        Enumeration<String> paramNames = request.getParameterNames();
+        while (paramNames.hasMoreElements()) {
+            String name = paramNames.nextElement();
+            // 获取参数值(如果是多值参数,取第一个值)
+            String value = request.getParameter(name);
+            paramMap.put(name, value);
+        }
+        // 格式化为 "key1=value1; key2=value2"
+        return formatParamString(paramMap);
+    }
+
+    /**
+     * 打印JSON参数(返回格式化字符串)
+     */
+    private static String logJsonParams(HttpServletRequest request) throws IOException {
+        // 读取请求体JSON
+        StringBuilder jsonSb = new StringBuilder();
+        BufferedReader reader = request.getReader();
+        String line;
+        while ((line = reader.readLine()) != null) {
+            jsonSb.append(line.trim());
+        }
+        String json = jsonSb.toString();
+
+        // 简单解析单层JSON(仅支持key-value结构)
+        Map<String, String> paramMap = parseSimpleJson(json);
+        // 格式化为 "key1=value1; key2=value2"
+        return formatParamString(paramMap);
+    }
+
+    /**
+     * 简单解析单层JSON(辅助方法)
+     */
+    private static Map<String, String> parseSimpleJson(String json) {
+        Map<String, String> paramMap = new LinkedHashMap<>();
+        if (json == null || json.trim().isEmpty()) {
+            return paramMap;
+        }
+        // 去除首尾大括号
+        json = json.trim().replaceAll("^\\{|\\}$", "");
+        // 分割键值对
+        String[] pairs = json.split(",");
+        for (String pair : pairs) {
+            pair = pair.trim();
+            if (pair.isEmpty()) continue;
+            // 分割key和value(处理冒号前后的空格)
+            String[] kv = pair.split(":", 2);
+            if (kv.length != 2) continue;
+            // 去除引号和空格
+            String key = kv[0].trim().replace("\"", "");
+            String value = kv[1].trim().replace("\"", "");
+            paramMap.put(key, value);
+        }
+        return paramMap;
+    }
+
+    /**
+     * 格式化参数字符串(辅助方法)
+     */
+    private static String formatParamString(Map<String, String> paramMap) {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry<String, String> entry : paramMap.entrySet()) {
+            if (sb.length() > 0) {
+                sb.append("; ");
+            }
+            sb.append(entry.getKey()).append("=").append(entry.getValue());
+        }
+        return sb.toString();
+    }
+}