From ef57094e91072ebe05bb3781e028d6d7ad8a0c45 Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: Mon, 17 Feb 2025 11:15:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-20250116' into dev-20250116
---
exam-system/src/main/java/com/gkhy/exam/pay/utils/DemoUtils.java | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 276 insertions(+), 0 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/DemoUtils.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/DemoUtils.java
new file mode 100644
index 0000000..685fa28
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/DemoUtils.java
@@ -0,0 +1,276 @@
+package com.gkhy.exam.pay.utils;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSONObject;
+import org.apache.commons.codec.binary.Base64;
+import sun.misc.BASE64Encoder;
+
+import java.io.*;
+import java.math.BigDecimal;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class DemoUtils {
+
+
+ public JSONObject faqiV2(JSONObject res) {
+ System.out.println("发起接到参数===" + res.toJSONString());
+ String certNo = res.getString("certNo");
+ String payerType = res.getString("payerType");
+ String payUser = res.getString("payUser");
+ String checker = res.getString("checker");
+
+ String enterCode = res.getString("enterCode");
+ String busCode = res.getString("busCode");
+ BigDecimal price = res.getBigDecimal("price");
+
+ String handlingPerson = res.getString("handlingPerson");
+ String orderDesc = res.getString("orderDesc");
+ String invoiceSocialCode = res.getString("invoiceSocialCode");
+ int amount = res.getIntValue("amount");
+ String orderNo = "dadadad";
+ Double money = Double.valueOf(amount * price.doubleValue());
+
+ String reqdatastr = "{\"desc\": \"" + orderDesc + "\",\"payerType\": \"" + payerType + "\",\"checker\": \"" + checker + "\",\"amount\": 2,\"orderNo\": \"" + orderNo + "\",\"feeDatas\": [{\"amount\": " + amount + ",\"price\": " + (amount * price.doubleValue()) + ",\"busCode\": \"" + busCode + "\"}],\"money\": " + money + ",\"certNo\": \"" + certNo + "\",\"handlingPerson\": \"" + handlingPerson + "\",\"invoiceSocialCode\": \"" + invoiceSocialCode + "\",\"enterCode\": \"" + enterCode + "\",\"payerName\": \"" + payUser + "\"}";
+
+
+ String mac = getMD5("A1749891493E4CDDBFE4506357B1F0AB||" + getBase64(reqdatastr));
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("appid", "A1749891493E4CDDBFE4506357B1F0AB");
+ jsonObject.put("mac", mac);
+ jsonObject.put("reqdata", getBase64(reqdatastr));
+ 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("http://finpt.xjcz.gov.cn/fs-service/fs-pay/invoice.do ", (Map) jsonObject);
+ System.out.println("发起入参===" + jsonObject);
+ JSONObject result = JSONObject.parseObject(resultStr);
+ System.out.println("发起回参===" + result);
+ result.put("postData", reqdatastr);
+
+ JSONObject jsonObject2 = result.getJSONObject("respdata");
+
+ String signfile = jsonObject2.getString("fileData");
+ String orderNo1 = jsonObject2.getString("orderNo");
+ String xmlFilePath = "F:/nginx-1.15.8/files/payH5/" + orderNo1 + ".xml";
+ generateBase64StringToFile(signfile, xmlFilePath);
+ String trr2 = "";
+ try {
+ File file2 = new File(xmlFilePath);
+ FileReader reader1 = new FileReader(file2);
+ BufferedReader bReader = new BufferedReader(reader1);
+ StringBuilder sb = new StringBuilder();
+ String s = "";
+ while ((s = bReader.readLine()) != null) {
+ sb.append(s);
+ }
+ bReader.close();
+ trr2 = sb.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ String jmsignfile = signFilejdnew(trr2);
+ String zuizhongpath = montageXmlV3(xmlFilePath, jmsignfile);
+ String zzsignfile = convertFileToBase64(zuizhongpath);
+
+ uploadXml(orderNo1, zzsignfile);
+ File file = new File(xmlFilePath);
+ file.delete();
+ File file1 = new File(zuizhongpath);
+ file1.delete();
+ return result;
+ }
+
+ public String getMD5(String input) {
+ try {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ byte[] messageDigest = md.digest(input.getBytes());
+ StringBuilder hexString = new StringBuilder();
+ for (byte b : messageDigest) {
+ hexString.append(String.format("%02x", new Object[]{Byte.valueOf(b)}));
+ }
+ return hexString.toString();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public String getBase64(String str) {
+ String encodedStr = Base64.encodeBase64String(str.getBytes());
+ return encodedStr;
+ }
+
+
+ public static boolean generateBase64StringToFile(String fileStr, String fileFilePath) {
+ if (fileStr == null) {
+ return false;
+ }
+
+ try {
+ byte[] b = Base64.decodeBase64(fileStr);
+ for (int i = 0; i < b.length; i++) {
+
+ if (b[i] < 0) {
+ b[i] = (byte) (b[i] + 256);
+ }
+ }
+
+ OutputStream out = new FileOutputStream(fileFilePath);
+ out.write(b);
+ out.flush();
+ out.close();
+ return true;
+ } catch (Exception e) {
+
+ return false;
+ }
+ }
+
+ public String signFilejdnew(String plain) {
+ BillSign sign = new BillSign((ISignCommond) new Object());
+ try {
+ String xx = sign.signBill(plain);
+ return xx;
+ } catch (BillSignException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ public String uploadXml(String orderNo, String signFile) {
+ ResponseDataVo<?> res = ClientFactory.sdkConfig("A1749891493E4CDDBFE4506357B1F0AB", "http://finpt.xjcz.gov.cn/fs-service", "http://finpt.xjcz.gov.cn/fs-service");
+ SignatureFileVo signatureFile = new SignatureFileVo();
+ signatureFile.setFileData(signFile);
+ signatureFile.setOrderNo(orderNo);
+// BillClient billClient = ClientFactory.getBillClient();
+// ResponseDataVo<UploadXmlReponseDataVo> response = billClient.uploadXml(signatureFile);
+//
+// String mac = getMD5("A1749891493E4CDDBFE4506357B1F0AB||" + getBase64(signatureFile.toString()));
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("appid", "A1749891493E4CDDBFE4506357B1F0AB");
+// jsonObject.put("mac", mac);
+// jsonObject.put("reqdata", getBase64(signatureFile.toString()));
+ return null;
+ }
+
+// public JSONObject signFileV2(JSONObject job) throws Exception {
+// JSONObject xysfResult = new JSONObject();
+// String certId = "11650000MB1957293J";
+// String plain = job.getString("data").trim();
+// MOFSignResult result = null;
+// Map<String, Object> mmp = new HashMap<>();
+//
+// try {
+// String filePath = "F:/cssconfig.properties";
+// System.out.println("配置文件路径:" + filePath);
+//
+// MOFClient client = new MOFClient(filePath);
+// System.out.println("证书标识为:" + certId);
+// System.out.println("待签名数据:" + plain);
+//
+//
+// result = client.sign(certId, plain.getBytes(StandardCharsets.UTF_8));
+// /* 323 */
+// System.out.println("签名返回结果:" + JSONObject.toJSONString(result));
+//
+// /* 325 */
+// byte[] signData = result.getSignData();
+//
+// /* 327 */
+// String base64Str = new String(Base64.encode(signData));
+// /* 328 */
+// mmp.put("signResult", base64Str);
+//
+// /* 330 */
+// MOFVerifyResult resultVer = client.verifySign(signData, plain.getBytes(StandardCharsets.UTF_8));
+// /* 331 */
+// System.out.println("验签结果为:" + JSONObject.toJSONString(resultVer));
+//
+// /* 333 */
+// mmp.put("issure", resultVer.getIssure());
+// /* 334 */
+// mmp.put("sn", resultVer.getSn());
+// /* 335 */
+// mmp.put("signTime", resultVer.getSignTime());
+//
+// /* 337 */
+// xysfResult.put("success", Boolean.valueOf(true));
+// /* 338 */
+// xysfResult.put("content", mmp);
+// /* 339 */
+// return xysfResult;
+// }
+// /* 341 */ catch (NewCSSException e) {
+// /* 342 */
+// System.out.println("****签名失败****");
+// /* 343 */
+// System.out.println("错误号为:" + e.getCode());
+// /* 344 */
+// System.out.println("错误描述为:" + e.getDescription());
+// /* 345 */
+// xysfResult.put("success", Boolean.valueOf(false));
+// /* 346 */
+// xysfResult.put("msg", "系统错误");
+// /* 347 */
+// return xysfResult;
+// }
+// }
+
+
+ public static String montageXmlV3(String ywfilePath, String xmlStr) {
+ try {
+ /* 358 */
+ String outputxmlpath = ywfilePath.replace(".xml", "_3.xml");
+
+ /* 360 */
+ xmlStr = xmlStr.trim().replace("\n", "");
+ /* 361 */
+ FileWriter writer = new FileWriter(outputxmlpath);
+ /* 362 */
+ writer.write(xmlStr);
+ /* 363 */
+ writer.close();
+ /* 364 */
+ return outputxmlpath;
+ }
+ /* 366 */ catch (Exception e) {
+ /* 367 */
+ e.printStackTrace();
+
+ /* 369 */
+ return null;
+ }
+ }
+
+ public static String convertFileToBase64(String imgPath) {
+ /* 374 */
+ byte[] data = null;
+
+ try {
+ /* 377 */
+ InputStream in = new FileInputStream(imgPath);
+ /* 378 */
+ data = new byte[in.available()];
+ /* 379 */
+ in.read(data);
+ /* 380 */
+ in.close();
+ /* 381 */
+ } catch (IOException e) {
+ /* 382 */
+ e.printStackTrace();
+ }
+
+ /* 385 */
+ BASE64Encoder encoder = new BASE64Encoder();
+ /* 386 */
+ String base64Str = encoder.encode(data);
+ /* 387 */
+ return base64Str;
+ }
+
+}
--
Gitblit v1.9.2