From 631ead73058002bafa9a5a47f092e85d87c9a5d8 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Mon, 24 Mar 2025 14:48:57 +0800
Subject: [PATCH] 缴费回调修改
---
exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java | 48 ++++++++++++++++++++++++++++++++++--------------
1 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
index 0ee6e5f..925edb6 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
@@ -9,6 +9,7 @@
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.gkhy.exam.pay.entity.PayReqData;
+import com.ruoyi.common.utils.Threads;
import com.xjhys.edu.fee.sdk.client.BillClient;
import com.xjhys.edu.fee.sdk.client.impl.ClientFactory;
import com.xjhys.edu.fee.sdk.model.ResponseDataVo;
@@ -46,6 +47,7 @@
import org.dom4j.io.XMLWriter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Encoder;
@@ -290,6 +292,17 @@
return params;
}
+ @Async
+ public void asyncNotrify(String orderNo){
+ try {
+ Threads.sleep(2000);
+ affirmPost(orderNo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
//缴费结果确认查询
public String affirmPost(String orderNo) throws IOException {
@@ -310,6 +323,7 @@
HttpResultVo execute = httpClient.execute(httppost, getResponseHandler());
String stringContent = execute.getStringContent();
ResultVo resultVo = JSONObject.parseObject(stringContent, ResultVo.class);
+ log.info("缴费结果确认,请求参数:"+orderNo);
log.info("请求结果为:" + resultVo);
if (resultVo.getRespcode().equals(CaiZhengConstans.CAI_ZHENG_SUCCESS)) {
return "success";
@@ -408,24 +422,26 @@
String reqdatastr = JSONObject.toJSONString(payReqData);
- String mac = this.getMD5(appId + this.getBase64(reqdatastr));
+ String mac = this.getMD5(appId+"||"+ this.getBase64(payReqData));
JSONObject jsonObject = new JSONObject();
jsonObject.put("appid", appId);
jsonObject.put("mac", mac);
- jsonObject.put("reqdata", this.getBase64(reqdatastr));
+ jsonObject.put("reqdata", this.getBase64(payReqData));
Map<String, String> header = new HashMap();
header.put("Accept", "application/json;charset=utf-8");
header.put("Content-Type", "application/json;charset=utf-8");
String resultStr = HttpUtil.post(orderUrl, jsonObject);
- System.out.println("发起入参===" + jsonObject);
+ log.info("发起入参===" + jsonObject);
JSONObject result = JSONObject.parseObject(resultStr);
ResultVo resultVo = JSONObject.parseObject(resultStr, ResultVo.class);
- System.out.println("发起回参===" + result);
+ log.info("发起回参===" + result);
result.put("postData", reqdatastr);
JSONObject jsonObject2 = result.getJSONObject("respdata");
String signfile = jsonObject2.getString("fileData");
String orderNo1 = jsonObject2.getString("orderNo");
- String xmlFilePath = "F:/files/" + orderNo1 + ".xml";
+ // /home/www/swspkmas/files/
+// String xmlFilePath = "/home/www/swspkmas/files/" + orderNo1 + ".xml";
+ String xmlFilePath = "F:\\text\\" + orderNo1 + ".xml";
generateBase64StringToFile(signfile, xmlFilePath);
String trr2 = "";
@@ -559,7 +575,7 @@
Map<String, Object> mmp = new HashMap();
try {
- String filePath = "/www/wwwroot/exam/cssconfig.properties";
+ String filePath = "F:\\text/cssconfig.properties";
System.out.println("配置文件路径:" + filePath);
MOFClient client = new MOFClient(filePath);
System.out.println("证书标识为:" + certId);
@@ -630,9 +646,12 @@
}
}
- public String getBase64(String str) {
- String encodedStr = org.apache.commons.codec.binary.Base64.encodeBase64String(str.getBytes());
- return encodedStr;
+ public String getBase64(PayReqData str) {
+// String encodedStr = org.apache.commons.codec.binary.Base64.encodeBase64String(str.getBytes());
+ String reqData = Base64.getEncoder().encodeToString(JSONObject.toJSONString(str).getBytes());
+
+ return reqData;
+
}
@@ -670,7 +689,8 @@
// Map<String, Object> mmp = new HashMap<>();
try {
- String filePath = "F:\\text\\cssconfig.properties";
+// String filePath = "/home/www/swspkmas/cssconfig.properties";
+ String filePath = "F:\\text/cssconfig.properties";
System.out.println("配置文件路径:" + filePath);
MOFClient client = new MOFClient(filePath);
System.out.println("证书标识为:" + certId);
@@ -705,7 +725,7 @@
SignResult result = null;
String certId = "11650000MB1957293J";
try {
- MOFClient client = new MOFClient("F:\\text\\cssconfig.properties");
+ MOFClient client = new MOFClient("/home/www/swspkmas/cssconfig.properties");
result = client.sign(certId, strData.getBytes(StandardCharsets.UTF_8));
log.info("***签名成功***");
log.info("签名返回结果为:" + result);
@@ -727,7 +747,7 @@
public MOFVerifyResult verify(byte[] strData, String signData) {
MOFVerifyResult verify = null;
try {
- MOFClient client = new MOFClient("F:\\text\\cssconfig.properties");
+ MOFClient client = new MOFClient("/home/www/swspkmas/cssconfig.properties");
verify = client.verifySign(strData, signData.getBytes(StandardCharsets.UTF_8));
log.info("验签成功");
@@ -751,7 +771,7 @@
public EnvelopResult encryptEnvelop(byte[] plain) {
EnvelopResult envelopResult = null;
try {
- AdvanceSignClient client = new AdvanceSignClient("F:\\text\\cssconfig.properties");
+ AdvanceSignClient client = new AdvanceSignClient("/home/www/swspkmas/cssconfig.properties");
String certId = "rsa";
CertIdParams certIdParams = new CertIdParams(certId);
//将封装好的加密证书参数对象放入 数组中
@@ -772,7 +792,7 @@
public DecryptResult decryptEnvelop(String signData) {
DecryptResult result = null;
try {
- AdvanceSignClient client = new AdvanceSignClient("F:\\text\\cssconfig.properties");
+ AdvanceSignClient client = new AdvanceSignClient("/home/www/swspkmas/cssconfig.properties");
byte[] enc_data = signData.getBytes();
result = client.decryptEnvelop(enc_data);
log.info("解密数字信封结果成功");
--
Gitblit v1.9.2