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