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