From f9cb0f3f384279b2cbe87c35dde3ba573a0197f3 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期四, 24 四月 2025 16:17:25 +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