gongfuzhu 1 år sedan
förälder
incheckning
209e8ea482

+ 144 - 133
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/api/dfy/Signature.java

@@ -1,137 +1,148 @@
-//package com.zswl.cloud.springBtach.server.core.api.dfy;
-//
-//import cn.hutool.core.codec.Base64Encoder;
-//import cn.hutool.crypto.SecureUtil;
-//import cn.hutool.json.JSONArray;
-//import cn.hutool.json.JSONObject;
-//import cn.hutool.json.JSONUtil;
-//import com.zswl.cloud.springBtach.server.core.api.dfy.request.ScenicRequest;
-//import org.apache.commons.lang3.StringUtils;
-//import java.util.ArrayList;
-//import java.util.Collections;
-//import java.util.List;
-//
-///**
-// * API签名工具类
-// */
-//public class Signature {
-//
-//    private static final String API_SIGNATURE_KEY = "sign";
-//
-//    public static void main(String[] args) {
-//
-//
-//        ScenicRequest scenicRequest = new ScenicRequest();
-//        ScenicRequest.Scenic scenic = new ScenicRequest.Scenic();
-//        scenic.setKey("南京");
-//        scenic.setPage("1");
-//        scenic.setPageSize("10");
-//
-//
-//        scenicRequest.setData(scenic);
-////71C6F9A4927718E2E0B94D9D834875F2
-////71C6F9A4927718E2E0B94D9D834875F2
-//
-//        String SecretKey="aaaaaaaa";
-//
+package com.zswl.cloud.springBtach.server.core.api.dfy;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.zswl.cloud.springBtach.server.core.api.dfy.request.ScenicRequest;
+import com.zswl.cloud.springBtach.server.core.api.dfy.request.ScenicResponse;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * API签名工具类
+ */
+public class Signature {
+
+    private static final String API_SIGNATURE_KEY = "sign";
+
+    public static void main(String[] args) {
+
+
+        ScenicRequest scenicRequest = new ScenicRequest();
+        ScenicRequest.Scenic scenic = new ScenicRequest.Scenic();
+        scenic.setKey("南京");
+        scenic.setPage("1");
+        scenic.setPageSize("10");
+
+
+        scenicRequest.setData(scenic);
+//71C6F9A4927718E2E0B94D9D834875F2
+//71C6F9A4927718E2E0B94D9D834875F2
+
+        String SecretKey="aaaaaaaa";
+
 //        System.out.println(JSONUtil.toJsonStr(scenicRequest));
 //        System.out.println(JSONUtil.toJsonStr(scenicRequest));
-//        String signature = getSignature(JSONUtil.parseObj(scenicRequest), SecretKey);
+        scenicRequest.setApiKey("tickettest");
+        String signature = getSignature(JSONUtil.parseObj(scenicRequest), SecretKey);
 //        System.out.println(signature);
 //        System.out.println(signature);
+        scenicRequest.setSign(signature);
+//        scenicRequest.setApiKey("tickettest");
+
 //        String data = Base64Encoder.encode(JSONUtil.parseObj(scenicRequest).get("data").toString());
 //        String data = Base64Encoder.encode(JSONUtil.parseObj(scenicRequest).get("data").toString());
 //        System.out.println(data);
 //        System.out.println(data);
-//        System.out.println(scenicRequest.getTimestamp());
-//
-//
-//    }
-//
-//    /**
-//     * 根据入参和密钥获取签名
-//     */
-//    public static String getSignature(JSONObject data, String secretKey) {
-//
-//        // 第一步:获取并排序json数据
-//        //忽略签名
-//        data.remove("sign");
-//
-//        //递归获取json结构中的键值对,组合键值并保存到列表中
-//        List<String> keyValueList = new ArrayList<String>();
-//        propertyFilter(null, data, keyValueList);
-//
-//        //对列表进行排序,区分大小写
-//        Collections.sort(keyValueList);
-//
-//
-//        // 第二步:格式化数据,用&分割
-//        String formatText = StringUtils.join(keyValueList, "&");
-//
-//        //在首尾加上秘钥,用&分割
-//        String finalText = secretKey + "&" + formatText + "&" + secretKey;
-//
-//        // 第三步:MD5加密并转换成大写的16进制(finalText为utf-8编码)
-//
-//        String upperCase = SecureUtil.md5(finalText).toUpperCase();
-//
-//
-//
-//        return upperCase;
-//    }
-//
-//
-//    private static String byte2hex(byte[] bytes) {
-//        StringBuilder sign = new StringBuilder();
-//        for (int i = 0; i < bytes.length; i++) {
-//            String hex = Integer.toHexString(bytes[i] & 0xFF);
-//            if (hex.length() == 1) {
-//                sign.append("0");
-//            }
-//            sign.append(hex.toUpperCase());
-//        }
-//        return sign.toString();
-//    }
-//
-//    /**
-//     * PropertyPreFilter
-//     * 与jsonObjectPropertyFilter,jsonArrayPropertyFilter配合完成键值对的抽取组合
-//     */
-//    private static void propertyFilter(String key, Object value, List<String> list) {
-//        if (null == value) {
-//            return;
-//        }
-//        if (value instanceof JSONObject) {
-//            jsonObjectPropertyFilter(key, (JSONObject) value, list);
-//        } else if (value instanceof JSONArray) {
-//            jsonArrayPropertyFilter(key, (JSONArray) value, list);
-//        } else {
-//            if (value != null && value.toString().length() > 0) {
-//                list.add(key.trim() + "=" + value);
-//            }
-//        }
-//    }
-//
-//    /**
-//     * jsonObjectPropertyFilter 过滤json对象
-//     */
-//    private static void jsonObjectPropertyFilter(String key, JSONObject value, List<String> list) {
-//        JSONObject jsonObject = value;
-//        if (jsonObject.isEmpty()) {
-//            return;
-//        }
-//        for (String str : jsonObject.keySet()) {
-//            propertyFilter(str, jsonObject.get(str), list);
-//        }
-//    }
-//
-//    /**
-//     * jsonArrayPropertyFilter 过滤json数组
-//     */
-//    private static void jsonArrayPropertyFilter(String key, JSONArray value, List<String> list) {
-//        JSONArray jsonArray = value;
-//        if (jsonArray.isEmpty()) {
-//            return;
-//        }
-//        for (Object json : jsonArray) {
-//            propertyFilter(key, json, list);
-//        }
-//    }
-//
-//}
+        System.out.println(JSONUtil.toJsonStr(scenicRequest));
+
+        String post = HttpUtil.post("https://doptest-api.dfyoo.com/Ticket/scenicList", JSONUtil.toJsonStr(scenicRequest));
+
+        ScenicResponse bean = JSONUtil.toBean(post, ScenicResponse.class);
+        System.out.println(JSONUtil.toJsonStr(bean));
+
+
+    }
+
+    /**
+     * 根据入参和密钥获取签名
+     */
+    public static String getSignature(JSONObject data, String secretKey) {
+
+        // 第一步:获取并排序json数据
+        //忽略签名
+        data.remove("sign");
+
+        //递归获取json结构中的键值对,组合键值并保存到列表中
+        List<String> keyValueList = new ArrayList<String>();
+        propertyFilter(null, data, keyValueList);
+
+        //对列表进行排序,区分大小写
+        Collections.sort(keyValueList);
+
+
+        // 第二步:格式化数据,用&分割
+        String formatText = StringUtils.join(keyValueList, "&");
+
+        //在首尾加上秘钥,用&分割
+        String finalText = secretKey + "&" + formatText + "&" + secretKey;
+
+        // 第三步:MD5加密并转换成大写的16进制(finalText为utf-8编码)
+
+        String upperCase = SecureUtil.md5(finalText).toUpperCase();
+
+
+
+        return upperCase;
+    }
+
+
+    private static String byte2hex(byte[] bytes) {
+        StringBuilder sign = new StringBuilder();
+        for (int i = 0; i < bytes.length; i++) {
+            String hex = Integer.toHexString(bytes[i] & 0xFF);
+            if (hex.length() == 1) {
+                sign.append("0");
+            }
+            sign.append(hex.toUpperCase());
+        }
+        return sign.toString();
+    }
+
+    /**
+     * PropertyPreFilter
+     * 与jsonObjectPropertyFilter,jsonArrayPropertyFilter配合完成键值对的抽取组合
+     */
+    private static void propertyFilter(String key, Object value, List<String> list) {
+        if (null == value) {
+            return;
+        }
+        if (value instanceof JSONObject) {
+            jsonObjectPropertyFilter(key, (JSONObject) value, list);
+        } else if (value instanceof JSONArray) {
+            jsonArrayPropertyFilter(key, (JSONArray) value, list);
+        } else {
+            if (value != null && value.toString().length() > 0) {
+                list.add(key.trim() + "=" + value);
+            }
+        }
+    }
+
+    /**
+     * jsonObjectPropertyFilter 过滤json对象
+     */
+    private static void jsonObjectPropertyFilter(String key, JSONObject value, List<String> list) {
+        JSONObject jsonObject = value;
+        if (jsonObject.isEmpty()) {
+            return;
+        }
+        for (String str : jsonObject.keySet()) {
+            propertyFilter(str, jsonObject.get(str), list);
+        }
+    }
+
+    /**
+     * jsonArrayPropertyFilter 过滤json数组
+     */
+    private static void jsonArrayPropertyFilter(String key, JSONArray value, List<String> list) {
+        JSONArray jsonArray = value;
+        if (jsonArray.isEmpty()) {
+            return;
+        }
+        for (Object json : jsonArray) {
+            propertyFilter(key, json, list);
+        }
+    }
+
+}