From 0ab9dfd8f122195e4e9f09bd50c59e0a47450bec Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 19 三月 2025 15:50:03 +0800
Subject: [PATCH] fix: resolve merge conflicts in .gitignore

---
 bankapi/src/main/java/com/taxi591/bankapi/service/BankService.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 117 insertions(+), 0 deletions(-)

diff --git a/bankapi/src/main/java/com/taxi591/bankapi/service/BankService.java b/bankapi/src/main/java/com/taxi591/bankapi/service/BankService.java
new file mode 100644
index 0000000..657cfc2
--- /dev/null
+++ b/bankapi/src/main/java/com/taxi591/bankapi/service/BankService.java
@@ -0,0 +1,117 @@
+package com.taxi591.bankapi.service;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.TypeReference;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DateUtils;
+import com.taxi591.bankapi.dto.ChargeBillRequest;
+import com.taxi591.bankapi.dto.ChargeBillResponse;
+import com.taxi591.bankapi.dto.CovertPayBackResult;
+import com.taxi591.bankapi.utils.Base64;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.util.function.Function;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Service
+@Slf4j
+public class BankService {
+
+    @Autowired
+    SignatureAndVerification signatureAndVerification;
+
+    static final String TIMESTAMP_PATTERN = "yyyyMMddHHmmssSSS";
+
+    /**
+     * 创建银行应答
+     * @param request 银行请求对象
+     * @param dealResult 是否处理成功
+     * @return
+     */
+    public String createResponse(ChargeBillRequest request,Boolean dealResult){
+        ChargeBillResponse response = new ChargeBillResponse(request);
+        response.getMessage().getHead().setReturnCode(dealResult?"0000":"1111");
+        response.getMessage().getHead().setReturnMessage(dealResult?"处理成功":"处理失败");
+        response.getMessage().getInfo().setRefundFlag("false");
+        response.getMessage().getHead().setTimeStamp(DateUtils.dateTimeNow(TIMESTAMP_PATTERN));
+        if (!dealResult){
+            if  (Integer.parseInt(request.getMessage().getInfo().getResendTimes())==3){
+                response.getMessage().getInfo().setRefundFlag("true");
+            }else{
+                response.getMessage().getInfo().setRefundFlag("false");
+            }
+        }
+        String respJSON = JSON.toJSONString(response);
+        String sign = signatureAndVerification.signWhithsha1withrsa(respJSON);
+        String respStr = null;
+        try {
+            respStr = sign + "||" + new String(org.apache.commons.codec.binary.Base64.encodeBase64(respJSON.getBytes("utf-8")));
+        } catch (UnsupportedEncodingException e) {
+        }
+        return respStr;
+    }
+
+    /**
+     * 处理支付回调数据
+     * @param httpRequest  http请求对象
+     * @param consumer 处理函数
+     * @return
+     */
+    public CovertPayBackResult covertPayCallBack(HttpServletRequest httpRequest, Function<ChargeBillRequest,Boolean> consumer) {
+        CovertPayBackResult result = new CovertPayBackResult();
+        String requestContent = "";
+        try {
+            // 接收报文
+            requestContent = SignatureAndVerification.getRequestBody(httpRequest).trim();
+            String sign = requestContent.substring(0,
+                    requestContent.indexOf("||"));;
+            String requestBody = requestContent.substring(sign
+                    .length() + 2);;
+            Pattern p=Pattern.compile("\"");
+            Matcher m=p.matcher(requestBody);
+            while(m.find()){
+                requestBody=requestBody.replace(m.group(), "");
+            }
+            String request = new String(Base64.decodeFast(requestBody));
+            log.info("-----ChargeBillController------------解析完成后的requestBody-------{}" + request);
+            ChargeBillRequest chargeBillRequest = JSON.parseObject(request,
+                    new TypeReference<ChargeBillRequest>() {
+                    });
+            if (chargeBillRequest==null){
+                log.error("支付回调解析失败:{}",requestContent);
+                throw new ServiceException("支付回调解析失败");
+            }
+            boolean isok = signatureAndVerification.read_cer_and_verify_sign(requestBody,sign);
+            if (!isok){
+                throw new ServiceException("支付回调验签失败");
+            }
+            Boolean dealBack = true;
+            if (consumer!=null){
+                dealBack = consumer.apply(chargeBillRequest);
+            }
+            result.setResult(chargeBillRequest);
+            result.setBack(createResponse(chargeBillRequest,dealBack));
+        }catch (ServiceException e){
+            result.setBack(e.getMessage());
+            throw e;
+        }catch (Exception e){
+            log.error("解析异常:{}",requestContent,e);
+            throw new ServiceException("支付回调解析异常");
+        }
+        return result;
+    }
+
+
+    public void covertBillTo(){
+
+
+    }
+
+
+
+}

--
Gitblit v1.7.1