From 9a041565e4e730a4d0e4c3a5797228d83fad7c63 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期五, 14 二月 2025 11:09:51 +0800 Subject: [PATCH] 煤矿缴费修改 --- exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java | 83 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 76 insertions(+), 7 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java index a7ede06..d587e47 100644 --- a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java +++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java @@ -1,5 +1,9 @@ package com.gkhy.exam.pay.service.impl; +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 com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.pay.dto.rep.CoalPayRepDto; import com.gkhy.exam.pay.dto.rep.CoalPayStudentRep; @@ -13,6 +17,7 @@ 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.ruoyi.common.constant.ResultConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; @@ -21,6 +26,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.SysDeptMapper; +import lombok.extern.slf4j.Slf4j; import org.dom4j.Element; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; @@ -32,13 +38,12 @@ import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Service +@Slf4j public class CoalPayServiceImpl extends ServiceImpl<CoalPayMapper, CoalPay> implements CoalPayService { @Resource @@ -255,10 +260,10 @@ ResultVo resultVo = payUtils.sendApiPost(payReqData); if (resultVo.getRespcode().equals("BUS0000")) { //进行票据签名并校验 - ResultVo resultVo1 = payUtils.uploadXml(resultVo.getRespdata().getOrderNo(), resultVo.getRespdata().getFileData()); - if (!resultVo1.getRespcode().equals("BUS0000")){ - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "签名验证错误"); - } +// ResultVo resultVo1 = payUtils.uploadXml(resultVo.getRespdata().getOrderNo(), resultVo.getRespdata().getFileData()); +// if (!resultVo1.getRespcode().equals("BUS0000")){ +// throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "签名验证错误"); +// } payStudent.setId(studentId); payStudent.setOrderId(resultVo.getRespdata().getOrderNo()); payStudent.setGovPayStatus(1); @@ -317,6 +322,70 @@ } } + @Override + public SignResult topay() throws IOException { + PayReqData payReqData = new PayReqData(); + PayReqData.Feedata feedatas = new PayReqData.Feedata(); + + + //订单编号 + payReqData.setOrderNo(RandomUtil.generateOrderNumber(1L, "CO")); + //订单总金额 + payReqData.setMoney(BigDecimal.valueOf(56)); + //子订单数目 + payReqData.setAmount(1); + //缴费人姓名(单位填单位名称)阿克苏地区博安煤矿安全技术服务中心 + payReqData.setPayerName("阿克苏地区博安煤矿安全技术服务中心"); + //缴费人证件号(单位填同一信用代码)52652900789893140A + payReqData.setCertNo("52652900789893140A"); + //缴款人类型(1个人 2单位) + payReqData.setPayerType(2); + //开票单位社会信用代码12650000MB1A9612XD + payReqData.setInvoiceSocialCode("11650000MB1957293J"); + //开票人 + payReqData.setHandlingPerson("张三"); + //复核人 + payReqData.setChecker("李四"); + //单位编码547185129 + payReqData.setEnterCode("547185129"); + //订单描述(非必填) + payReqData.setDesc("煤矿安全作业理论考试-002002"); + //订单明细 + List<PayReqData.Feedata> feedatas1 = new ArrayList<>(); + //数量 +// feedatas.setAmount(1); +// //业务代码 +// feedatas.setBusCode("DZ12401"); +// //单价 +// feedatas.setPrice(BigDecimal.valueOf(56)); + PayReqData.Feedata feedata = new PayReqData.Feedata(); + feedata.setBusCode("DZ002002"); + feedata.setAmount(1); + feedata.setPrice(BigDecimal.valueOf(56)); +// feedatas1.add(feedatas); + feedatas1.add(feedata); + payReqData.setFeeDatas(feedatas1); + log.info("请求参数:"+ JSONObject.toJSONString(payReqData)); + + + PayUtils payUtils = new PayUtils(); + ResultVo resultVo = payUtils.sendApiPost(payReqData); + String jsonString = JSONObject.toJSONString(resultVo); + log.info("请求结果:"+jsonString); + String fileData = resultVo.getRespdata().getFileData(); + Base64.Decoder decoder = Base64.getDecoder(); + byte[] decode = decoder.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())); + return sign; + } + private PayReqData fillData(List<CoalPayStudent> coalPayStudent, CoalPay coalPay, List<CoalCategory> coalCategories, CoalTicket coalTicket,Integer payType,CoalTeamPayReq coalTeamPayReq) { PayReqData payReqData = new PayReqData(); payReqData.setOrderNo(RandomUtil.generateOrderNumber(coalPay.getId(), "CO")); -- Gitblit v1.9.2