From c2bed49a7df1c42b4a56b71168836e4f3448dc6a Mon Sep 17 00:00:00 2001
From: Sum1Dream <418471657@qq.com>
Date: Sun, 23 Jan 2022 18:34:22 +0800
Subject: [PATCH] 1

---
 .../java/com/hai/common/utils/WxUtils.java    | 27 +++++++++++++++++++
 .../hai/service/impl/HighTestServiceImpl.java | 22 +++++++--------
 2 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/hai-service/src/main/java/com/hai/common/utils/WxUtils.java b/hai-service/src/main/java/com/hai/common/utils/WxUtils.java
index d1955904..72794f3d 100644
--- a/hai-service/src/main/java/com/hai/common/utils/WxUtils.java
+++ b/hai-service/src/main/java/com/hai/common/utils/WxUtils.java
@@ -249,6 +249,33 @@ public class WxUtils {
     }
 
 
+    public static String generateSignatureAppSecret(final Map<String, Object> data, String key, WXPayConstants.SignType signType) throws Exception {
+        Set<String> keySet = data.keySet();
+        String[] keyArray = keySet.toArray(new String[keySet.size()]);
+        Arrays.sort(keyArray);
+        StringBuilder sb = new StringBuilder();
+        for (String k : keyArray) {
+            if (k.equals(WXPayConstants.FIELD_SIGN)) {
+                continue;
+            }
+            if (StringUtils.isBlank(sb.toString())) {
+                sb.append(k).append("=").append(data.get(k));
+            } else {
+                sb.append("&").append(k).append("=").append(data.get(k));
+            }
+        }
+        sb.append("&app_secret=").append(key);
+        if (WXPayConstants.SignType.MD5.equals(signType)) {
+            return MD5(sb.toString() , false);
+        }
+        else if (WXPayConstants.SignType.HMACSHA256.equals(signType)) {
+            return HMACSHA256(sb.toString(), key);
+        }
+        else {
+            throw new Exception(String.format("Invalid sign_type: %s", signType));
+        }
+    }
+
     public static String generateSignature(final Map<String, Object> data) throws Exception {
         Set<String> keySet = data.keySet();
         String[] keyArray = keySet.toArray(new String[keySet.size()]);
diff --git a/hai-service/src/main/java/com/hai/service/impl/HighTestServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighTestServiceImpl.java
index be2a4a23..2924c951 100644
--- a/hai-service/src/main/java/com/hai/service/impl/HighTestServiceImpl.java
+++ b/hai-service/src/main/java/com/hai/service/impl/HighTestServiceImpl.java
@@ -6,10 +6,7 @@ import com.hai.common.exception.ErrorCode;
 import com.hai.common.exception.ErrorHelp;
 import com.hai.common.exception.SysCode;
 import com.hai.common.pay.util.sdk.WXPayConstants;
-import com.hai.common.utils.DateUtil;
-import com.hai.common.utils.HttpsUtils;
-import com.hai.common.utils.RedisUtil;
-import com.hai.common.utils.WxUtils;
+import com.hai.common.utils.*;
 import com.hai.dao.HighUserEtcMapper;
 import com.hai.entity.HighDiscountAgentCode;
 import com.hai.entity.HighUser;
@@ -142,20 +139,21 @@ public class HighTestServiceImpl implements HighTestService {
     @Override
     public JSONObject getMobile(String phone) throws Exception {
 
+        String timestamp = String.valueOf(System.currentTimeMillis());
+
         Map<String , Object> map = new HashMap<>();
         map.put("mobile" , "18090580471");
-        map.put("amount" , "0.01");
-        map.put("out_order_id" , "CZ20220110895732352345");
-        map.put("app_key" , "kg5n9br7evt4q8lp");
-        map.put("timestamp" , DateUtil.date2String(new Date(),"yyyyMMddHHmmss"));
+        map.put("amount" , "30");
+        map.put("out_order_id" , "CZ" + DateUtil.date2String(new Date(),"yyyyMMddHHmmss") + IDGenerator.nextId(5));
+        map.put("app_key" , "eaomqcbpdz7yjfih");
+        map.put("timestamp" , timestamp.substring(0,timestamp.length()-3));
         map.put("is_fast" , "1");
         map.put("notify_url" , "https://hsgcs.dctpay.com/crest/czOrder/orderRefundNotify");
 
-        StringBuilder signStr = new StringBuilder(WxUtils.generateSignature(map));
+        String signStr = WxUtils.generateSignatureAppSecret(map, "xkf9eoq2cjh6uvzp0mtrga134lnibdw8" , WXPayConstants.SignType.MD5);
 
-        map.put("sign" , WxUtils.MD5(String.valueOf(signStr.append("key=kg5n9br7evt4q8lp")),true));
+        map.put("sign" , signStr);
 
-        JSONObject object = HttpsUtils.doPost("https://hfcs.dmjvip.com/index.php/third/mobile/createOrder" , map);
-        return object;
+        return HttpsUtils.doPost("https://hfcs.dmjvip.com/index.php/third/mobile/createOrder" , map);
     }
 }