Browse Source

支付回调处理

master
xyiege 3 years ago
parent
commit
16ca5a6cba
  1. 14
      src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java
  2. 16
      src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java
  3. 3
      src/main/java/cn/chjyj/szwh/utils/pay/security/Base64Method.java
  4. 2
      src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java
  5. 32
      src/test/java/cn/chjyj/szwh/PayTest.java

14
src/main/java/cn/chjyj/szwh/utils/pay/method/ApiUtil.java

@ -1,10 +1,11 @@
package cn.chjyj.szwh.utils.pay.method; package cn.chjyj.szwh.utils.pay.method;
import com.alibaba.fastjson.JSONObject; import cn.chjyj.szwh.utils.pay.security.AesEncryption;
import com.masget.api.security.AesEncryption; import cn.chjyj.szwh.utils.pay.security.HttpsUtil;
import com.masget.api.security.HttpsUtil; import cn.chjyj.szwh.utils.pay.security.MD5Util;
import com.masget.api.security.MD5Util; import cn.chjyj.szwh.utils.pay.security.TimeUtil;
import com.masget.api.security.TimeUtil; import com.alibaba.fastjson2.JSONObject;
public class ApiUtil { public class ApiUtil {
private static final String FORMAT = "json"; private static final String FORMAT = "json";
@ -17,6 +18,7 @@ public class ApiUtil {
String encryptdata = AesEncryption.Encrypt(data, secretkey, String encryptdata = AesEncryption.Encrypt(data, secretkey,
secretkey); secretkey);
String timestamp = TimeUtil.getTime(); String timestamp = TimeUtil.getTime();
// md5签名
String signstr = MD5Util.string2MD5(secretkey + appid String signstr = MD5Util.string2MD5(secretkey + appid
+ encryptdata + FORMAT + method + session + timestamp + encryptdata + FORMAT + method + session + timestamp
+ VERSION + secretkey); + VERSION + secretkey);
@ -29,7 +31,7 @@ public class ApiUtil {
requestObj.put("v", VERSION); requestObj.put("v", VERSION);
requestObj.put("timestamp", timestamp); requestObj.put("timestamp", timestamp);
requestObj.put("sign", signstr); requestObj.put("sign", signstr);
//执行ssl请求
result = HttpsUtil.doSslPost(openApiUrl, result = HttpsUtil.doSslPost(openApiUrl,
requestObj.toJSONString(), "utf-8"); requestObj.toJSONString(), "utf-8");
} catch (Exception ex) { } catch (Exception ex) {

16
src/main/java/cn/chjyj/szwh/utils/pay/security/AesEncryption.java

@ -6,6 +6,14 @@ import javax.crypto.spec.SecretKeySpec;
public class AesEncryption { public class AesEncryption {
/**
* 加密
* @param data
* @param key
* @param iv
* @return
* @throws Exception
*/
public static String Encrypt(String data, String key, String iv) public static String Encrypt(String data, String key, String iv)
throws Exception { throws Exception {
try { 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) public static String Desencrypt(String data, String key, String iv)
throws Exception { throws Exception {
try { try {

3
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; import org.apache.commons.codec.binary.Base64;
/**
* 安全base64 替换 = +
*/
public class Base64Method { public class Base64Method {
public static String EncryptBase64(String a_strString) throws Exception { public static String EncryptBase64(String a_strString) throws Exception {

2
src/main/java/cn/chjyj/szwh/utils/pay/security/MD5Util.java

@ -5,7 +5,7 @@ import java.security.MessageDigest;
public class MD5Util { public class MD5Util {
/*** /***
* MD5加码 生成32位md5? * MD5加码 生成32位长度的md5字符串
*/ */
public static String string2MD5(String inStr){ public static String string2MD5(String inStr){
MessageDigest md5 = null; MessageDigest md5 = null;

32
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();
}
}
}
Loading…
Cancel
Save