From 7935724516cb699835da888d59cd5b7bec5c6049 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 12 九月 2024 12:07:29 +0800
Subject: [PATCH] 完成业主功能的优化

---
 java110-utils/src/main/java/com/java110/utils/util/PayUtil.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 117 insertions(+), 2 deletions(-)

diff --git a/java110-utils/src/main/java/com/java110/utils/util/PayUtil.java b/java110-utils/src/main/java/com/java110/utils/util/PayUtil.java
old mode 100644
new mode 100755
index 701fbe1..ccd26bb
--- a/java110-utils/src/main/java/com/java110/utils/util/PayUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/PayUtil.java
@@ -14,6 +14,8 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
 import javax.servlet.http.HttpServletRequest;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -29,11 +31,21 @@
 import java.math.BigDecimal;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.UUID;
 
 public class PayUtil {
 
-    static Logger log = LogManager.getLogger(PayUtil.class.getName());
+    static Logger logger = LogManager.getLogger(PayUtil.class.getName());
 
     /**
      * 鑾峰彇褰撳墠鏈哄櫒鐨刬p
@@ -98,6 +110,19 @@
 
     /**
      * 鍒涘缓绛惧悕Sign
+     * <p>
+     * {sdfsfsd}123123123  md5
+     * <p>
+     * {
+     * <p>
+     * heaer:{
+     * serviceCode:''锛�
+     * sign:'sddd'
+     * },
+     * body:{
+     * sssssss
+     * }
+     * }
      *
      * @param key
      * @param parameters
@@ -118,9 +143,52 @@
             }
         }
         sb.append("key=" + key);
+        logger.debug("鍔犲瘑鍓嶄覆锛�" + sb.toString());
         String sign = md5(sb.toString()).toUpperCase();
         return sign;
     }
+
+    /**
+     * 鍒涘缓绛惧悕Sign
+     * <p>
+     * {sdfsfsd}123123123  md5
+     * <p>
+     * {
+     * <p>
+     * heaer:{
+     * serviceCode:''锛�
+     * sign:'sddd'
+     * },
+     * body:{
+     * sssssss
+     * }
+     * }
+     *
+     * @param key
+     * @param parameters
+     * @return
+     */
+    public static String createChinaUmsSign(SortedMap<String, String> parameters, String key) {
+        StringBuffer sb = new StringBuffer();
+        Set es = parameters.entrySet();
+        Iterator<?> it = es.iterator();
+        while (it.hasNext()) {
+            Map.Entry entry = (Map.Entry) it.next();
+            String k = (String) entry.getKey();
+            if (entry.getValue() != null || !"".equals(entry.getValue())) {
+                String v = String.valueOf(entry.getValue());
+                if (null != v && !"".equals(v) && !"sign".equals(k)) {
+                    sb.append(k + "=" + v + "&");
+                }
+            }
+        }
+        String data = sb.toString().substring(0, sb.length() - 1) + key;
+        //sb.append(key);
+        logger.debug("鍔犲瘑鍓嶄覆锛�" + data);
+        String sign = md5(data).toUpperCase();
+        return sign;
+    }
+
 
     /**
      * md5绛惧悕
@@ -345,4 +413,51 @@
             return money;
         }
     }
+
+    public static String createSignSha256(SortedMap<String, String> parameters, String key) {
+        StringBuffer sb = new StringBuffer();
+        Set es = parameters.entrySet();
+        Iterator<?> it = es.iterator();
+        while (it.hasNext()) {
+            Map.Entry entry = (Map.Entry) it.next();
+            String k = (String) entry.getKey();
+            if (entry.getValue() != null || !"".equals(entry.getValue())) {
+                String v = String.valueOf(entry.getValue());
+                if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
+                    sb.append(k + "=" + v + "&");
+                }
+            }
+        }
+        sb.append("key=" + key);
+        logger.debug("鍔犲瘑鍓嶄覆锛�" + sb.toString());
+        //String sign = md5(sb.toString()).toUpperCase();
+        String sign = "";
+        try {
+            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
+            SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256");
+            sha256_HMAC.init(secret_key);
+            //  utf-8 : 瑙e喅涓枃鍔犲瘑涓嶄竴鑷撮棶棰�,蹇呴』鎸囧畾缂栫爜鏍煎紡
+            sign = byteArrayToHexString(sha256_HMAC.doFinal(sb.toString().getBytes("utf-8"))).toUpperCase();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return sign;
+    }
+    /**
+     * 灏嗗姞瀵嗗悗鐨勫瓧鑺傛暟缁勮浆鎹㈡垚瀛楃涓�
+     *
+     * @param b 瀛楄妭鏁扮粍
+     * @return 瀛楃涓�
+     */
+    private static String byteArrayToHexString(byte[] b) {
+        StringBuilder hs = new StringBuilder();
+        String stmp;
+        for (int n = 0; b != null && n < b.length; n++) {
+            stmp = Integer.toHexString(b[n] & 0XFF);
+            if (stmp.length() == 1)
+                hs.append('0');
+            hs.append(stmp);
+        }
+        return hs.toString().toLowerCase();
+    }
 }

--
Gitblit v1.8.0