From 1bc819e18cef05479fb2e4486f4d0f490c6baaba Mon Sep 17 00:00:00 2001 From: zhaoyiran Date: Tue, 23 Apr 2024 14:07:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/win/bank/domain/BankDO.java | 4 ++++ .../com/win/bank/service/bank/BankService.java | 14 +++++++++++++- .../win/bank/service/bocom/BocomServiceImpl.java | 16 ++++++++++++---- .../com/win/bank/service/cmb/CmbServiceImpl.java | 12 ++++++++++-- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/win/bank/domain/BankDO.java b/src/main/java/com/win/bank/domain/BankDO.java index 1046b5c..9d313ce 100644 --- a/src/main/java/com/win/bank/domain/BankDO.java +++ b/src/main/java/com/win/bank/domain/BankDO.java @@ -25,6 +25,10 @@ public class BankDO extends BaseDO { */ @TableId private Long id; + /** + * 每笔交易的唯一编号 + */ + private String businessCode; /** * 状态,0:未处理;1:支付中;2:支付成功;3:支付失败 */ diff --git a/src/main/java/com/win/bank/service/bank/BankService.java b/src/main/java/com/win/bank/service/bank/BankService.java index aeaa5f1..61fdb51 100644 --- a/src/main/java/com/win/bank/service/bank/BankService.java +++ b/src/main/java/com/win/bank/service/bank/BankService.java @@ -1,11 +1,14 @@ package com.win.bank.service.bank; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; -import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.win.bank.domain.BankDO; import com.win.bank.mapper.BankMapper; @@ -19,4 +22,13 @@ public class BankService extends ServiceImpl implements ISer return baseMapper.selectList(queryWrapper); } + public String getBussinessCode(BankDO bankDO) { + String businessCode = bankDO.getBusinessCode(); + if (StringUtils.isEmpty(businessCode)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + businessCode = sdf.format(new Date()) + bankDO.getId(); + } + return businessCode; + } + } diff --git a/src/main/java/com/win/bank/service/bocom/BocomServiceImpl.java b/src/main/java/com/win/bank/service/bocom/BocomServiceImpl.java index 61600d5..d72fd81 100644 --- a/src/main/java/com/win/bank/service/bocom/BocomServiceImpl.java +++ b/src/main/java/com/win/bank/service/bocom/BocomServiceImpl.java @@ -4,6 +4,7 @@ import java.io.StringReader; import java.text.SimpleDateFormat; import java.util.Date; +import javax.annotation.Resource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -19,6 +20,7 @@ import org.xml.sax.InputSource; import com.win.bank.domain.BankDO; import com.win.bank.enums.PaymentStatusEnum; import com.win.bank.service.BaseBankService; +import com.win.bank.service.bank.BankService; import com.win.bank.utils.HttpUtil; import com.win.bank.utils.XmlUtil; @@ -40,10 +42,15 @@ public class BocomServiceImpl implements BaseBankService { private static final String SUCCESS_CODE = "0000"; private static final Logger logger = LoggerFactory.getLogger(BocomServiceImpl.class); + @Resource + private BankService bankService; + @Override public BankDO payment(BankDO bankDO) { String trCode = "210201"; - String head = generateHeadMessage(trCode, bankDO.getId().toString()); + String bussinessCode = bankService.getBussinessCode(bankDO); + bankDO.setBusinessCode(bussinessCode); + String head = generateHeadMessage(trCode, bussinessCode); StringBuilder body = new StringBuilder(); body.append(""); @@ -57,7 +64,7 @@ public class BocomServiceImpl implements BaseBankService { } body.append("CNY"); body.append("").append(bankDO.getAmount()).append(""); - body.append("").append(bankDO.getId()).append(""); + body.append("").append(bussinessCode).append(""); if (StringUtils.isNotEmpty(bankDO.getPurpose())) { body.append("").append(bankDO.getPurpose()).append(""); } @@ -100,11 +107,12 @@ public class BocomServiceImpl implements BaseBankService { @Override public BankDO queryPaymentResult(BankDO bankDO) { String trCode = "310204"; - String head = generateHeadMessage(trCode, bankDO.getId().toString()); + String bussinessCode = bankService.getBussinessCode(bankDO); + String head = generateHeadMessage(trCode, bussinessCode); StringBuilder body = new StringBuilder(); body.append(""); body.append("1"); - body.append("").append(bankDO.getId()).append(""); + body.append("").append(bussinessCode).append(""); body.append(""); String message = "" + head + body + ""; logger.debug("发给交通银行的数据:" + XmlUtil.formatXML(message)); diff --git a/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java b/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java index c8fc8f6..666ae3e 100644 --- a/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java +++ b/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java @@ -8,6 +8,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.annotation.Resource; + import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +22,7 @@ import com.google.gson.JsonObject; import com.win.bank.domain.BankDO; import com.win.bank.enums.PaymentStatusEnum; import com.win.bank.service.BaseBankService; +import com.win.bank.service.bank.BankService; import com.win.bank.utils.HttpUtil; import com.win.bank.utils.JsonUtil; @@ -45,6 +48,9 @@ public class CmbServiceImpl implements BaseBankService { private static final String SUCCESS_CODE = "SUC0000"; private static final Logger logger = LoggerFactory.getLogger(CmbServiceImpl.class); + @Resource + private BankService bankService; + @Override public BankDO payment(BankDO bankDO) { String funCode = "BB1PAYOP"; @@ -63,7 +69,9 @@ public class CmbServiceImpl implements BaseBankService { bnkFlg = "N"; } info.addProperty("bnkFlg", bnkFlg); - info.addProperty("yurRef", bankDO.getId().toString()); + String businessCode = bankService.getBussinessCode(bankDO); + bankDO.setBusinessCode(businessCode); + info.addProperty("yurRef", businessCode); bb1payopx1.add(info); requestJson.getAsJsonObject("request").getAsJsonObject("body").add("bb1payopx1", bb1payopx1); logger.debug("发送给招商银行的数据:" + JsonUtil.formatJson(requestJson.toString())); @@ -95,7 +103,7 @@ public class CmbServiceImpl implements BaseBankService { @Override public BankDO queryPaymentResult(BankDO bankDO) { String funCode = "BB1PAYQR"; - String yurRef = bankDO.getId().toString(); + String yurRef = bankDO.getBusinessCode(); String data = "{\"request\":{\"body\":{\"bb1payqrx1\":[{\"busCod\":\"N02030\",\"yurRef\":\"" + yurRef + "\"}]},\"head\":{\"funcode\":\"" + funCode + "\",\"userid\":\"" + uid + "\"}}}"; logger.debug("发送给招商银行的数据" + JsonUtil.formatJson(data)); String response;