diff --git a/src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java b/src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java index 274a403..2879a72 100644 --- a/src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java +++ b/src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java @@ -1,10 +1,11 @@ package cn.chjyj.szwh.utils.pay.method; -import com.alibaba.fastjson.JSONObject; -import com.masget.api.security.AesEncryption; -import com.masget.api.security.HttpsUtil; -import com.masget.api.security.MD5Util; -import com.masget.api.security.TimeUtil; +import cn.chjyj.szwh.utils.pay.security.AesEncryption; +import cn.chjyj.szwh.utils.pay.security.HttpsUtil; +import cn.chjyj.szwh.utils.pay.security.MD5Util; +import cn.chjyj.szwh.utils.pay.security.TimeUtil; +import com.alibaba.fastjson2.JSONObject; + public class ApiUtil { private static final String FORMAT = "json"; @@ -17,6 +18,7 @@ public class ApiUtil { String encryptdata = AesEncryption.Encrypt(data, secretkey, secretkey); String timestamp = TimeUtil.getTime(); + // md5签名 String signstr = MD5Util.string2MD5(secretkey + appid + encryptdata + FORMAT + method + session + timestamp + VERSION + secretkey); @@ -29,7 +31,7 @@ public class ApiUtil { requestObj.put("v", VERSION); requestObj.put("timestamp", timestamp); requestObj.put("sign", signstr); - + //执行ssl请求 result = HttpsUtil.doSslPost(openApiUrl, requestObj.toJSONString(), "utf-8"); } catch (Exception ex) { diff --git a/src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java b/src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java index 3a00719..969e26a 100644 --- a/src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java +++ b/src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java @@ -6,6 +6,14 @@ import javax.crypto.spec.SecretKeySpec; public class AesEncryption { + /** + * 加密 + * @param data + * @param key + * @param iv + * @return + * @throws Exception + */ public static String Encrypt(String data, String key, String iv) throws Exception { try { @@ -36,6 +44,14 @@ public class AesEncryption { } } + /** + * 解密 + * @param data + * @param key + * @param iv + * @return + * @throws Exception + */ public static String Desencrypt(String data, String key, String iv) throws Exception { try { diff --git a/src/main/java/cn/chjyj/szwh/utils/pay/security/Base64Method.java b/src/main/java/cn/chjyj/szwh/utils/pay/security/Base64Method.java index ae5411c..90f344a 100644 --- a/src/main/java/cn/chjyj/szwh/utils/pay/security/Base64Method.java +++ b/src/main/java/cn/chjyj/szwh/utils/pay/security/Base64Method.java @@ -2,6 +2,9 @@ package cn.chjyj.szwh.utils.pay.security; import org.apache.commons.codec.binary.Base64; +/** + * 安全base64 替换 = + + */ public class Base64Method { public static String EncryptBase64(String a_strString) throws Exception { diff --git a/src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java b/src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java index 96bcbdf..6aab75d 100644 --- a/src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java +++ b/src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java @@ -5,7 +5,7 @@ import java.security.MessageDigest; public class MD5Util { /*** - * MD5加码 生成32位md5�? + * MD5加码 生成32位长度的md5字符串 */ public static String string2MD5(String inStr){ MessageDigest md5 = null; diff --git a/src/test/java/cn/chjyj/szwh/PayTest.java b/src/test/java/cn/chjyj/szwh/PayTest.java new file mode 100644 index 0000000..5a2dfa9 --- /dev/null +++ b/src/test/java/cn/chjyj/szwh/PayTest.java @@ -0,0 +1,32 @@ +package cn.chjyj.szwh; + +import cn.chjyj.szwh.utils.pay.security.AesEncryption; +import com.alibaba.fastjson2.JSONObject; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@SpringBootTest +@RunWith(SpringJUnit4ClassRunner.class) +public class PayTest { + @Test + public void pback(){ + String ss=" {\"Data\":\"kfz3sNCvoH6jMGoM7NFwfQuLpuG50zIu-c5DKJcJovqVOUSoy4V9k0M5VOSQd7hiznlVtlI774Sh1AUYbtIFB8rSNP8FGOIMwxrAwSoWJCIIbpy9ow4cyiUc5PgbcPcZVmNAyeyMIr6MRnXKO1vI1FQmyY2oA5R22yw6zgKsIgH1k_7wL2j4Vnuk5VNsPrROaN53gX9wLosNGlHJwYncSYBfu8CSwuvJH1Py0ki-mdX7RkbmTSBQR7FZXnNXRCdrTTV3D8X44T6RWQ3qGtQuMVUSHaLrP35254KaBGYjUc4rNT-dWbVivwJUX2_hNJz8AAqvFybIsXLM0wMbM4EWOSAgnCoy89AwLf6smUMk38ik-JUqT28gU7nBu1QZUzLOelnI7Wy2BjTPhhqqLztIaz1YlCkOBYQtdzyrbH12IUM4530blgWis_gXflICC_gyhu-BTSSGQk3ZiSLtRTwrLosQqNMPv5sCxRDW2Mx9uYB39sFOxXm_UKVRYQNDU_xcmh35o0Bp3uvzW7V0ecichQd2dcD15_72jD62zvG_iBUZw5r5VRSxT67H1OchC0ZWL5afBkGgUVKCJhaLaaLWe5fK9UC8oNDheW9W5nVSUDvIE68ApkHkLQg0LfmatikFUUt7yiGhUOjSWD3eYTsBsj6HIpx6nHdQqO-A6kMWzXv8SQeYm4cuZj2jEHQGAAoBt5F1ig1m-efJZFVRQIwEvfajca8xuNpK_0N94q9GWUz2-FHuyInXC0Sf1DkFWwAXzw4n7JMIQC6nnO7xAJjPvE7npngCQzk1XWlbgXalFZNvDeALFpIILR5lYEGi_t7DVAMi0FQfzeEAETSX3Je5nLhvvrIdOVACJFNo-naTxDxeOBPGDCA80x2wFLnOnLzGNy7yvJPUYIYm2d84jkfADKfUYqNJQTy9LK7B79Lm7cE1aV03OGIXloyohkFOEswTo92Dgru51-eMyf0FR73dj4uLDkN5Or_1CeywiBaZmMnbMHVzOBK8GSjzX6IH7ly4K_F2UgcQGHJE6RLFF56ANc8rb-XnRhKFhpZrxDyMNYKHucW05VmV0eUNFOtYN-cIUJIkR7nbGBWEYMz0nT5IojEDePyKrRFsLOZrcJIW107vPfbMSLlHsPyrZVIYYdOUhcRWI2U-uSn2c3v-l9S9T88cZzASG_6SjB25Dd61ID-K8NSNTUWJkOWRl-GvnypLcMkA56ZSpJ6dc6GIXyt3eMeGCWjOubV2m1l7EXdomfNyagA7SmO5RVrVCOMZqI2ar8p-ojxWn2mMFdn4FfCp5w==\",\n" + + "\"Sign\":\"f3520d69d7cd9dc16403603ff12fa399\",\"Method\":\"paymentreport\",\"Appid\":\"910000198\"}"; + JSONObject json = JSONObject.parseObject(ss); + // 解密 + String data = json.getString("Data"); +// $openapiurl="https://t.masget.com/openapi/rest"; +// $session = "iba3t9dqln8etmcaceq1xtqr7urevia1"; +// $appid="910000198"; +// $secretkey="gRAZZKiNw0UbTuF9"; + String sckey ="gRAZZKiNw0UbTuF9"; + try { + String desencrypt=AesEncryption.Desencrypt(data, sckey, sckey); + System.out.println(desencrypt); + }catch (Exception ex){ + ex.printStackTrace(); + } + } +}