From 2635d30e61cf7ffec015c830da761416604c9518 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期五, 14 二月 2025 15:53:17 +0800
Subject: [PATCH] 煤矿缴费修改

---
 /dev/null                                                       |  104 --------------------------
 exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java |   14 ++-
 exam-system/src/test/java/TextPay.java                          |   96 +++++++++++++++--------
 3 files changed, 70 insertions(+), 144 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 0c92d97..1fd4b76 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
@@ -2,7 +2,6 @@
 
 import cn.com.jit.new_vstk.AdvanceSignClient;
 import cn.com.jit.new_vstk.Bean.*;
-import cn.com.jit.new_vstk.SignClient;
 import cn.com.jit.new_vstk.exception.NewCSSException;
 import com.alibaba.fastjson2.JSONObject;
 import com.gkhy.exam.pay.entity.PayReqData;
@@ -76,6 +75,9 @@
 
     @Value("${finance.uploadXmlUrl}")
     private String uploadXmlUrl;
+
+//    @Value(("${finance.path}"))
+//    private String path;
 
     /**
      * 请求开票,发起支付
@@ -413,9 +415,9 @@
     //签名
     public SignResult sign(byte[] strData) {
         SignResult result = null;
-        String certId = "rsa";
+        String certId = "11650000MB1957293J";
         try {
-            AdvanceSignClient client = new AdvanceSignClient("cssconfig.properties");
+            AdvanceSignClient client = new AdvanceSignClient("D:\\work\\cssconfig.properties");
             result = client.sign(certId,strData);
             log.info("***签名成功***");
             byte[] signData = result.getSignData();
@@ -436,7 +438,7 @@
     public VerifyResult verify(byte[] strData,String signData){
         VerifyResult verify = null;
         try {
-            AdvanceSignClient client = new AdvanceSignClient("src/main/resources/cssconfig.properties");
+            AdvanceSignClient client = new AdvanceSignClient("F:\\text\\cssconfig.properties");
             byte[] plain = strData;
             byte[] sign = signData.getBytes();
 
@@ -462,7 +464,7 @@
     public EnvelopResult encryptEnvelop(String plain){
         EnvelopResult envelopResult = null;
         try {
-            AdvanceSignClient client = new AdvanceSignClient("cssconfig.properties");
+            AdvanceSignClient client = new AdvanceSignClient("F:\\text\\cssconfig.properties");
             String certId = "rsa";
             CertIdParams certIdParams = new CertIdParams(certId);
             //将封装好的加密证书参数对象放入 数组中
@@ -484,7 +486,7 @@
     public DecryptResult decryptEnvelop(String signData){
         DecryptResult result = null;
         try {
-            AdvanceSignClient client = new AdvanceSignClient("cssconfig.properties");
+            AdvanceSignClient client = new AdvanceSignClient("F:\\text\\cssconfig.properties");
             byte[] enc_data = signData.getBytes();
             result = client.decryptEnvelop(enc_data);
             log.info("解密数字信封结果成功");
diff --git a/exam-system/src/main/resources/cssconfig.properties b/exam-system/src/main/resources/cssconfig.properties
deleted file mode 100644
index bb81eac..0000000
--- a/exam-system/src/main/resources/cssconfig.properties
+++ /dev/null
@@ -1,104 +0,0 @@
-#ServerURL=http://127.0.0.1:8000/signxmlhandler
-#ServerURL=http://127.0.0.1:8000/service/tsa
-#ServerURL=http://127.0.0.1:8000/signserver/service/xml
-ServerURL=http://192.168.0.110:8000
-DigestAlg=SM3
-#Encrypt Algorithm: des3/scb2
-EncAlg=SM4
-#\u5BF9\u79F0\u52A0\u89E3\u5BC6\u586B\u5145\u65B9\u5F0F\uFF1ANO_PADDING \u9ED8\u8BA4\u4E3APKCS7PADDING
-SymmPadding=
-#RSA\u7B97\u6CD5\u586B\u5145\u65B9\u5F0F\u652F\u6301PSS
-signPadding=
-#\u5BF9\u79F0\u7B97\u6CD5 RSA/SM2
-asymmalg=SM2
-#\u5370\u7AE0\u6807\u51C6 1:\u56FD\u6807/4:\u56FD\u529E
-standard=1
-#\u6458\u8981\u7B97\u6CD5\u81EA\u9002\u5E94\u53C2\u6570
-P1VerfiyParserCert=0
-#\u6458\u8981\u7B97\u6CD5\uFF08\u56FD\u5BC6\u548CRSA\uFF09
-GMDigest=sm3
-P1VerifyRsaDefDigest=sha1
-CertBaseInfo=version;issuerdn;subjectdn;serialnumber;notbefore;notafter
-TSACertBaseInfo=issuerdn;subjectdn;serialnumber;signedTime;signedTSA;signedTimeByMS
-CertExtendInfo=
-AppID=
-CertAlias=
-BaseInfo=digestalg;digestdata;plaindata;dscert
-SendMsgFormat=0
-HashActionPosition=0
-PrintLog=false
-#console/file/log4j  ####log4j not implement
-logTarget=console
-logFilePath=/temp/jit.dss.vstk.log
-#rfc3161/rfc2630
-TSAType=rfc3161
-#dsCert/issuerDNAndSN/CertId/fileDsCert
-p1VerifyCertId=CertId
-#dsCert/issuerDNAndSN/CertId/fileDsCert
-encryptEnvelopCertId=CertId
-#dsCert/issuerDNAndSN/CertId/fileDsCert
-ebcerVerifyCertId=CertId
-#dsCert/issuerDNAndSN/CertId/fileDsCert
-pdfSignCertId=CertId
-Compatible=true
-dss.client.class=cn.com.jit.assp.client.DSSClientHttpUrlConnectionImpl
-#dss.client.class=cn.com.jit.assp.client.DSSClientHttpClientImpl
-#default/encAfterDec/secretEnvelop(use this mode after using VCTK do envelop)   secretEnvelop:develop->RSAdecrypt->RSAencrypt->envelop
-envelopType=default
-#default unit KB and default size is 0,0 is not block;
-packageSize=0
-communicationProtocol=1
-#default:10000   unit: ms
-timeout=10000
-connectTimeOut=10000
-# default : system unicode
-FileSystemCharSet=UTF-8
-vstkVersion=20
-EncryptMode=ecb
-#package size every time, unit is byte 1047580 3142740 240000
-send_size=1048580
-#bigger than this will take big data modle, unit is byte
-bigdata_limit=2097152000
-#first send request read_timeout
-first_read_timeout=10000
-
-#the path of cssconfig.properties; support absolutepath and relativepath
-defaultConfigFile=./src/main/webapp/conf/cssconfig.properties
-#true:Keep-Alive false:Close
-connectionType=true
-#the method run time(Millisecond)
-runTime=100
-needXmlToPdf=true
-une=
-pwd=
-aid=WeChat
-#\u5E94\u6025\u5E7F\u64AD\u5C0F\u8BC1\u4E66\uFF08jnta\uFF09
-organization=jnta
-tenantId=
-#\u5236\u4f5c\u7b7e\u540d\u6216\u5236\u4f5c\u4fe1\u5c01\u7684\u7ed3\u679c\u662f\u5426\u4e3abase64\u683c\u5f0f.true:\u662f;false:\u5426.
-isEncryptSignData=false
-#\u5236\u4f5c\u7b7e\u540d\u6216\u5236\u4f5c\u4fe1\u5c01\u7684\u7ed3\u679c\u662f\u5426\u4e3a\u5e26\u6362\u884c\u7684base64\u683c\u5f0f.true:\u662f;false:\u5426.
-#\u6bcf16\u5b57\u8282\u56de\u8f66\u6362\u884c\uff0c\u9700\u8981isEncryptSignData=true\u914d\u7f6e\u624d\u4f1a\u751f\u6548
-#\u6b64\u914d\u7f6e\u4ec5\u9650\u4e8e\u539f\u6587\u63a5\u53e3
-isEncryptSignDataWithCRLF=false
-pdfVisibleSignature=true
-applyId=
-applyPwd=
-userId=
-userPwd=
-#\u662F\u5426\u8BB0\u5F55\u9519\u8BEF\u65E5\u5FD7\u53C2\u6570
-record_error_log_params=false
-sealInfo=sealName;sealPicture;validTime;asone
-#\u505Amof\u4E1A\u52A1\u5206\u6D41\uFF0C\u9ED8\u8BA4\u4E0D\u586B\u5199\uFF0C\u8868\u793A\u517C\u5BB9\u8001\u7248\u672C\u8001\u6A21\u5F0F\uFF1B\u540E\u7EED\u7248\u672C\u53EF\u4EE5\u505A\u5206\u6D41\uFF0C\u5F53\u4E3Arsa mof\u4E1A\u52A1\u5219\u9700\u8981\u8BBE\u7F6E\u4E3Amof
-mofFlow=
-#demo-VSTK\u8BED\u8A00(en_US,zh_CN)
-Language=
-isOpenGmssl=false
-#\u63E1\u624B\u534F\u8BAE(\u5BC6\u6587\u7AEF\u53E38003\u63E1\u624B\u534F\u8BAE\u76EE\u524D\u4EC5\u652F\u6301TLSv1,TLSv1.1,TLSv1.2  \u6B64\u53C2\u6570\u9700\u8981\u91CD\u542Fvstk)
-ssl_protocal=TLSv1
-#\u4EC5\u652F\u6301\u586B\u5199OAEP\uFF0C\u4E0D\u586B\u5199\u65F6\u4F7F\u7528PKCS1\u586B\u5145#AsymmPadding=OAEPWITHSHA256AndMGF1Padding
-AsymmPadding=
-#\u4FE1\u4EFB\u6240\u6709\u8BC1\u4E66(\u5BC6\u6587\u8BF7\u6C42\u65F6\u53C2\u6570\uFF0C\u9ED8\u8BA4\u4E3A\u4FE1\u4EFBclient.keystore\u8BC1\u4E66)
-TrustMaterialAll=false
-#\u9A8C\u7B7E\u8BC1\u4E66\u8FD4\u56DE\u5B57\u6BB5
-HighCertBaseInfo=version;issuerdn;subjectdn
\ No newline at end of file
diff --git a/exam-system/src/test/java/TextPay.java b/exam-system/src/test/java/TextPay.java
index 6ea27a1..5d2608f 100644
--- a/exam-system/src/test/java/TextPay.java
+++ b/exam-system/src/test/java/TextPay.java
@@ -1,11 +1,14 @@
 import cn.com.jit.new_vstk.Bean.EnvelopResult;
 import cn.com.jit.new_vstk.Bean.SignResult;
 import cn.com.jit.new_vstk.Bean.VerifyResult;
+import cn.hutool.json.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.gkhy.exam.pay.entity.PayReqData;
 import com.gkhy.exam.pay.utils.PayUtils;
 import com.gkhy.exam.pay.utils.ResultVo;
 import com.gkhy.exam.pay.utils.Sign;
 import com.gkhy.exam.pay.utils.SignDto;
+import com.google.gson.JsonObject;
 import com.ruoyi.common.utils.RandomUtil;
 import lombok.extern.log4j.Log4j2;
 import org.dom4j.Element;
@@ -15,15 +18,31 @@
 
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @SpringBootTest(classes = TextPay.class)
 @ActiveProfiles("dev")
 @Log4j2
 public class TextPay {
+
+
+//
+//@Test
+//    public void paytext001() throws IOException{
+//
+//        for (int i = 1142; i <3001 ; i++) {
+//            String buscode="DZ00"+i;
+//            log.info("buscode为:"+buscode);
+//            ResultVo paytext = paytext(buscode);
+//            log.info("请求结果为:"+paytext.getRespcode());
+//            if (paytext.getRespcode().equals("BUS0000")){
+//                break;
+//            }
+//        }
+//    }
+
+
+
 
 
     @Test
@@ -35,60 +54,69 @@
 
 
         //订单编号
-        payReqData.setOrderNo(RandomUtil.generateOrderNumber(1L, "CO"));
+        payReqData.setOrderNo("CO202502140115634461");
         //订单总金额
-        payReqData.setMoney(BigDecimal.valueOf(159));
+        payReqData.setMoney(BigDecimal.valueOf(56));
         //子订单数目
-        payReqData.setAmount(2);
-        //缴费人姓名(单位填单位名称)
-        payReqData.setPayerName("新疆维吾尔自治区应急管理宣传教育中心");
-        //缴费人证件号(单位填同一信用代码)
-        payReqData.setCertNo("65000023000000172848");
+        payReqData.setAmount(1);
+        //缴费人姓名(单位填单位名称)阿克苏地区博安煤矿安全技术服务中心
+        payReqData.setPayerName("阿克苏地区博安煤矿安全技术服务中心");
+        //缴费人证件号(单位填同一信用代码)52652900789893140A
+        payReqData.setCertNo("52652900789893140A");
         //缴款人类型(1个人  2单位)
         payReqData.setPayerType(2);
-        //开票单位社会信用代码
-        payReqData.setInvoiceSocialCode("65000023000000172848");
+        //开票单位社会信用代码12650000MB1A9612XD
+        payReqData.setInvoiceSocialCode("11650000MB1957293J");
         //开票人
         payReqData.setHandlingPerson("张三");
         //复核人
         payReqData.setChecker("李四");
-        //单位编码
-        payReqData.setEnterCode("680534083");
+        //单位编码547185129
+        payReqData.setEnterCode("547185129");
         //订单描述(非必填)
-        payReqData.setDesc("安全技术考试考务费_煤矿安全作业-001504");
+        payReqData.setDesc("煤矿安全作业理论考试-002002");
         //订单明细
         List<PayReqData.Feedata> feedatas1 = new ArrayList<>();
         //数量
-        feedatas.setAmount(1);
-        //业务代码
-        feedatas.setBusCode("DZ001504");
-        //单价
-        feedatas.setPrice(BigDecimal.valueOf(103));
+//        feedatas.setAmount(1);
+//        //业务代码
+//        feedatas.setBusCode("DZ12401");
+//        //单价
+//        feedatas.setPrice(BigDecimal.valueOf(56));
         PayReqData.Feedata feedata = new PayReqData.Feedata();
-        feedata.setBusCode("DZ001505");
+        feedata.setBusCode("DZ002002");
         feedata.setAmount(1);
         feedata.setPrice(BigDecimal.valueOf(56));
-        feedatas1.add(feedatas);
+//        feedatas1.add(feedatas);
         feedatas1.add(feedata);
         payReqData.setFeeDatas(feedatas1);
-        log.info("请求参数:"+payReqData);
+        log.info("请求参数:"+ JSONObject.toJSONString(payReqData));
 
 
         PayUtils payUtils = new PayUtils();
         ResultVo resultVo = payUtils.sendApiPost(payReqData);
-//        log.info("请求结果:" + resultVo);
-//        String fileData = resultVo.getRespdata().getFileData();
-//        SignResult sign = payUtils.sign(fileData);
-//        log.info("签名结果为:"+ Arrays.toString(sign.getSignData()));
-//        VerifyResult verify = payUtils.verify(fileData, new String(sign.getSignData()));
-//        SignDto signDto = new SignDto("SM3", "Base64", new Date(), verify.getReturnData(), verify.getSerialNumber(), verify.getIssure());
-//        Sign sign1 = new Sign();
-//        Element signature = sign1.getSignature(signDto);
-//        EnvelopResult envelopResult = payUtils.encryptEnvelop(String.valueOf(signature));
-//        log.info("制作数字信封为:"+ Arrays.toString(envelopResult.getEnvelopData()));
+        String jsonString = JSONObject.toJSONString(resultVo);
+        log.info("请求结果:"+jsonString);
+        String fileData = resultVo.getRespdata().getFileData();
+        byte[] decode = Base64.getDecoder().decode(fileData);
+        SignResult sign = payUtils.sign(decode);
+        log.info("签名结果为:"+ Arrays.toString(sign.getSignData()));
+        VerifyResult verify = payUtils.verify(decode, new String(sign.getSignData()));
+        SignDto signDto = new SignDto("SM3", "Base64", new Date(), verify.getReturnData(), verify.getSerialNumber(), verify.getIssure());
+        Sign sign1 = new Sign();
+        Element signature = sign1.getSignature(signDto);
+        EnvelopResult envelopResult = payUtils.encryptEnvelop(String.valueOf(signature));
+        log.info("制作数字信封为:"+ Arrays.toString(envelopResult.getEnvelopData()));
 
     }
 
+//    @Test
+//    public void sing(){
+//        PayUtils payUtils = new PayUtils();
+//        SignResult sign = payUtils.sign("aaaaaabbbbbb");
+//        log.info(sign);
+//    }
+
 
     @Test
     public void text001() {

--
Gitblit v1.9.2