From 333904fc99e3ad1a9c63112dca4410944fe1516e Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Sat, 14 Sep 2024 09:17:10 +0800 Subject: [PATCH] =?UTF-8?q?fw-cbs=E5=88=86=E6=94=AF=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base-webapp/pom.xml | 10 +- fw-cbs/pom.xml | 48 + .../cbs8/dto/req/AgentPayRequestDTO.java | 32 + .../dto/req/AgentPayResultRequestDTO.java | 20 + .../frame/cbs8/dto/req/ElecRequestDTO.java | 134 +++ .../frame/cbs8/dto/req/PayRequestDTO.java | 272 ++++++ .../cbs8/dto/req/PayResultRequestDTO.java | 44 + .../cbs8/dto/req/PaymentApplyAgentDTO.java | 132 +++ .../dto/req/PaymentApplySubmitReqDTO.java | 245 +++++ .../cbs8/dto/req/TransactionDetailReqDTO.java | 164 ++++ .../frame/cbs8/dto/res/AgentPayQueryDTO.java | 280 ++++++ .../cbs8/dto/res/AgentPayResultResDTO.java | 450 +++++++++ .../frame/cbs8/dto/res/CbsResDataDTO.java | 458 +++++++++ .../frame/cbs8/dto/res/CbsResponseDTO.java | 44 + .../frame/cbs8/dto/res/ElecResponseDTO.java | 305 ++++++ .../frame/cbs8/dto/res/PayResponseDTO.java | 73 ++ .../frame/cbs8/dto/res/PayResultResDTO.java | 890 ++++++++++++++++++ .../cbs8/dto/res/TransactionDetailDTO.java | 207 ++++ .../hzya/frame/cbs8/entity/PaymentEntity.java | 327 +++++++ .../frame/cbs8/service/ICbs8ExtService.java | 60 ++ .../hzya/frame/cbs8/service/ICbs8Service.java | 65 ++ .../cbs8/service/impl/Cbs8ExtServiceImpl.java | 216 +++++ .../cbs8/service/impl/Cbs8ServiceImpl.java | 269 ++++++ .../com/hzya/frame/cbs8/util/CBSUtil.java | 187 ++++ .../hzya/frame/cbs8/util/CbsAccessToken.java | 140 +++ .../hzya/frame/cbs8/util/CurrencyEnum.java | 137 +++ .../com/hzya/frame/cbs8/util/PayState.java | 73 ++ .../com/hzya/frame/cbs8/util/SM2Util.java | 237 +++++ fw-cbs/src/main/webapp/WEB-INF/web.xml | 6 + pom.xml | 2 +- 30 files changed, 5521 insertions(+), 6 deletions(-) create mode 100644 fw-cbs/pom.xml create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayRequestDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayResultRequestDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/ElecRequestDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayRequestDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayResultRequestDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplyAgentDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplySubmitReqDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/TransactionDetailReqDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayQueryDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayResultResDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResDataDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResponseDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/ElecResponseDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResponseDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResultResDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/TransactionDetailDTO.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/entity/PaymentEntity.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8ExtService.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8Service.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ExtServiceImpl.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ServiceImpl.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CBSUtil.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CbsAccessToken.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CurrencyEnum.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/util/PayState.java create mode 100644 fw-cbs/src/main/java/com/hzya/frame/cbs8/util/SM2Util.java create mode 100644 fw-cbs/src/main/webapp/WEB-INF/web.xml diff --git a/base-webapp/pom.xml b/base-webapp/pom.xml index 79bd4cf9..c423ca54 100644 --- a/base-webapp/pom.xml +++ b/base-webapp/pom.xml @@ -23,11 +23,11 @@ - - - - - + + com.hzya.frame + fw-cbs + ${revision} + diff --git a/fw-cbs/pom.xml b/fw-cbs/pom.xml new file mode 100644 index 00000000..4bdeaccc --- /dev/null +++ b/fw-cbs/pom.xml @@ -0,0 +1,48 @@ + + + + kangarooDataCenterV3 + com.hzya.frame + ${revision} + + 4.0.0 + fw-cbs + jar + ${revision} + + + + com.hzya.frame + base-service + ${revision} + + + mysql + mysql-connector-java + ${mysql-connector-java} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + none + execute + true + + + + + repackage + + + + + + + diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayRequestDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayRequestDTO.java new file mode 100644 index 00000000..1a906cba --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayRequestDTO.java @@ -0,0 +1,32 @@ +package com.hzya.frame.cbs8.dto.req; + +import java.util.List; + +/** + * @Description 代发代扣请求参数 + * @Author xiangerlin + * @Date 2024/6/18 16:20 + **/ +public class AgentPayRequestDTO { + + //代发表头 + private PaymentApplySubmitReqDTO paymentApplySubmitReqDTO; + //代发明细 + private List paymentApplyAgentDTO; + + public PaymentApplySubmitReqDTO getPaymentApplySubmitReqDTO() { + return paymentApplySubmitReqDTO; + } + + public void setPaymentApplySubmitReqDTO(PaymentApplySubmitReqDTO paymentApplySubmitReqDTO) { + this.paymentApplySubmitReqDTO = paymentApplySubmitReqDTO; + } + + public List getPaymentApplyAgentDTO() { + return paymentApplyAgentDTO; + } + + public void setPaymentApplyAgentDTO(List paymentApplyAgentDTO) { + this.paymentApplyAgentDTO = paymentApplyAgentDTO; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayResultRequestDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayResultRequestDTO.java new file mode 100644 index 00000000..a4ef80c8 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/AgentPayResultRequestDTO.java @@ -0,0 +1,20 @@ +package com.hzya.frame.cbs8.dto.req; + +/** + * @Description 代发代扣详情查询请求参数 + * @Author xiangerlin + * @Date 2024/6/18 17:40 + **/ +public class AgentPayResultRequestDTO { + + //申请单编号。 代发代扣支付接口会返回这个单号的 + private String busNum; + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/ElecRequestDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/ElecRequestDTO.java new file mode 100644 index 00000000..f318d279 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/ElecRequestDTO.java @@ -0,0 +1,134 @@ +package com.hzya.frame.cbs8.dto.req; + +import java.util.List; + +/** + * @Description 电子回单查询请求参数 + * @Author xiangerlin + * @Date 2024/1/4 17:08 + **/ +public class ElecRequestDTO { + // 开始日期 + private String startDate; + + // 结束日期 + private String endDate; + + // 账号 + private String accountNo; + + // 币种列表 + private List currencyList; + + // 银行类型列表 + private List bankTypeList; + + // 回单文件状态 1-已取回 0-未取回 + private String billStatus; + + // 借贷 1-借 2-贷 + private String loanType; + + // 单位编码列表 + private List unitCodeList; + + // 对账码列表 + private List checkCodeList; + + // ERP业务参考号 + private String settleBusinessReferenceCode; + + public ElecRequestDTO(String settleBusinessReferenceCode) { + this.settleBusinessReferenceCode = settleBusinessReferenceCode; + } + + public ElecRequestDTO(String startDate, String endDate, String settleBusinessReferenceCode) { + this.startDate = startDate; + this.endDate = endDate; + this.settleBusinessReferenceCode = settleBusinessReferenceCode; + } + + public ElecRequestDTO() { + + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getAccountNo() { + return accountNo; + } + + public void setAccountNo(String accountNo) { + this.accountNo = accountNo; + } + + public List getCurrencyList() { + return currencyList; + } + + public void setCurrencyList(List currencyList) { + this.currencyList = currencyList; + } + + public List getBankTypeList() { + return bankTypeList; + } + + public void setBankTypeList(List bankTypeList) { + this.bankTypeList = bankTypeList; + } + + public String getBillStatus() { + return billStatus; + } + + public void setBillStatus(String billStatus) { + this.billStatus = billStatus; + } + + public String getLoanType() { + return loanType; + } + + public void setLoanType(String loanType) { + this.loanType = loanType; + } + + public List getUnitCodeList() { + return unitCodeList; + } + + public void setUnitCodeList(List unitCodeList) { + this.unitCodeList = unitCodeList; + } + + public List getCheckCodeList() { + return checkCodeList; + } + + public void setCheckCodeList(List checkCodeList) { + this.checkCodeList = checkCodeList; + } + + public String getSettleBusinessReferenceCode() { + return settleBusinessReferenceCode; + } + + public void setSettleBusinessReferenceCode(String settleBusinessReferenceCode) { + this.settleBusinessReferenceCode = settleBusinessReferenceCode; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayRequestDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayRequestDTO.java new file mode 100644 index 00000000..957d18ad --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayRequestDTO.java @@ -0,0 +1,272 @@ +package com.hzya.frame.cbs8.dto.req; + +/** + * @Description 经办支付请求DTO + * @Author xiangerlin + * @Date 2024/1/3 09:02 + **/ +public class PayRequestDTO { + private String referenceNum;//业务参考号,必填 + private String busType;//业务类型 必填 + private String amount;//金额 必填 + private String currency;//币种编码,必填 + private String payAccount;//付款账号,非集中支付模式必填 + private String revAccount;//收款账号 必填 + private String revAccountName;//收款方户名 必填 + private String revBankType;//收款银行类型编码,必填 + private String revBankName;//收款开户行名称 + private String cnapsCode;//联行号 必填 + private String purpose;//支付用途 必填 + + private String innerAccount;//内部账号 + private String revBankArea;//收款银行地区名称 + private String revProvince;//收款人省 + private String revCity;//收款人市 + private String bankNum;//收款地区码|银行号 + private String summary;//该笔支付备注 + private String expectTime;//期望支付时间 + private String personalFlag;//公私标记 1对私 0对公 + private String urgentTag;//加急,1加急0不加2特急 + private String realTimeTag;//是否实时 1实时0落地 + private String cityFlag;//同城标志 0同城1异地 + private String payChannel;//支付渠道 + private String busiStep;//业务步数 集中支付需要传1,其他不用传 + private String applyUnitCode;//申请人单位号,集中支付必传 + private String displayApplyUnitCode;//申请人单位号(前端显示),集中支付如果传了,会将其转化为applyUnitCode + + private String erpExtend1;//客户备用字段1 + private String erpExtend2;//客户备用字段2 + private String erpExtend3;//客户备用字段3 + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getRevAccount() { + return revAccount; + } + + public void setRevAccount(String revAccount) { + this.revAccount = revAccount; + } + + public String getRevAccountName() { + return revAccountName; + } + + public void setRevAccountName(String revAccountName) { + this.revAccountName = revAccountName; + } + + public String getRevBankType() { + return revBankType; + } + + public void setRevBankType(String revBankType) { + this.revBankType = revBankType; + } + + public String getRevBankName() { + return revBankName; + } + + public void setRevBankName(String revBankName) { + this.revBankName = revBankName; + } + + public String getCnapsCode() { + return cnapsCode; + } + + public void setCnapsCode(String cnapsCode) { + this.cnapsCode = cnapsCode; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getInnerAccount() { + return innerAccount; + } + + public void setInnerAccount(String innerAccount) { + this.innerAccount = innerAccount; + } + + public String getRevBankArea() { + return revBankArea; + } + + public void setRevBankArea(String revBankArea) { + this.revBankArea = revBankArea; + } + + public String getRevProvince() { + return revProvince; + } + + public void setRevProvince(String revProvince) { + this.revProvince = revProvince; + } + + public String getRevCity() { + return revCity; + } + + public void setRevCity(String revCity) { + this.revCity = revCity; + } + + public String getBankNum() { + return bankNum; + } + + public void setBankNum(String bankNum) { + this.bankNum = bankNum; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public String getExpectTime() { + return expectTime; + } + + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; + } + + public String getPersonalFlag() { + return personalFlag; + } + + public void setPersonalFlag(String personalFlag) { + this.personalFlag = personalFlag; + } + + public String getUrgentTag() { + return urgentTag; + } + + public void setUrgentTag(String urgentTag) { + this.urgentTag = urgentTag; + } + + public String getRealTimeTag() { + return realTimeTag; + } + + public void setRealTimeTag(String realTimeTag) { + this.realTimeTag = realTimeTag; + } + + public String getCityFlag() { + return cityFlag; + } + + public void setCityFlag(String cityFlag) { + this.cityFlag = cityFlag; + } + + public String getPayChannel() { + return payChannel; + } + + public void setPayChannel(String payChannel) { + this.payChannel = payChannel; + } + + public String getBusiStep() { + return busiStep; + } + + public void setBusiStep(String busiStep) { + this.busiStep = busiStep; + } + + public String getApplyUnitCode() { + return applyUnitCode; + } + + public void setApplyUnitCode(String applyUnitCode) { + this.applyUnitCode = applyUnitCode; + } + + public String getDisplayApplyUnitCode() { + return displayApplyUnitCode; + } + + public void setDisplayApplyUnitCode(String displayApplyUnitCode) { + this.displayApplyUnitCode = displayApplyUnitCode; + } + + public String getErpExtend1() { + return erpExtend1; + } + + public void setErpExtend1(String erpExtend1) { + this.erpExtend1 = erpExtend1; + } + + public String getErpExtend2() { + return erpExtend2; + } + + public void setErpExtend2(String erpExtend2) { + this.erpExtend2 = erpExtend2; + } + + public String getErpExtend3() { + return erpExtend3; + } + + public void setErpExtend3(String erpExtend3) { + this.erpExtend3 = erpExtend3; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayResultRequestDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayResultRequestDTO.java new file mode 100644 index 00000000..8180c6f0 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PayResultRequestDTO.java @@ -0,0 +1,44 @@ +package com.hzya.frame.cbs8.dto.req; + +import java.util.List; + +/** + * @Description 查询交易结果请求参数 + * @Author xiangerlin + * @Date 2024/1/3 09:46 + **/ +public class PayResultRequestDTO { + public PayResultRequestDTO() { + } + public PayResultRequestDTO(String referenceNum) { + this.referenceNum = referenceNum; + } + + private String referenceNum;//业务参考号,必填 + private List statusList;//状态 + private List payStatusList;//支付状态 + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public List getStatusList() { + return statusList; + } + + public void setStatusList(List statusList) { + this.statusList = statusList; + } + + public List getPayStatusList() { + return payStatusList; + } + + public void setPayStatusList(List payStatusList) { + this.payStatusList = payStatusList; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplyAgentDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplyAgentDTO.java new file mode 100644 index 00000000..509165a3 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplyAgentDTO.java @@ -0,0 +1,132 @@ +package com.hzya.frame.cbs8.dto.req; + +/** + * @Description 代发代扣明细 + * @Author xiangerlin + * @Date 2024/6/18 13:45 + **/ +public class PaymentApplyAgentDTO { + //每笔明细金额 + private String dtlAmount; + //收款账号 + private String dtlRevAccount; + //联行号 同行可不传,跨行必传 + private String dtlCnapsCode; + //收款账户名称 + private String dtlRevName; + //收款开户行 ,如果传的联行号能匹配到对应到开户行,cbs8会自动带出 + private String dtlRevBankName; + + + + //是否跨行 Y跨行 N同行 + private String dtlBankFlag; + //明细用途 + private String dtlPurpose; + //明细摘要 + private String dtlRemark; + //收款账号银行号|地区码 + private String dtlRevBankArea; + //收款开户地 + private String dtlRevBankCity; + //明细序号,从1开始递增 + private int dtlSeqNum; + //备用字段 一共6个 + private String dtlExtend1; + + public String getDtlAmount() { + return dtlAmount; + } + + public void setDtlAmount(String dtlAmount) { + this.dtlAmount = dtlAmount; + } + + public String getDtlRevAccount() { + return dtlRevAccount; + } + + public void setDtlRevAccount(String dtlRevAccount) { + this.dtlRevAccount = dtlRevAccount; + } + + public String getDtlCnapsCode() { + return dtlCnapsCode; + } + + public void setDtlCnapsCode(String dtlCnapsCode) { + this.dtlCnapsCode = dtlCnapsCode; + } + + public String getDtlRevName() { + return dtlRevName; + } + + public void setDtlRevName(String dtlRevName) { + this.dtlRevName = dtlRevName; + } + + public String getDtlRevBankName() { + return dtlRevBankName; + } + + public void setDtlRevBankName(String dtlRevBankName) { + this.dtlRevBankName = dtlRevBankName; + } + + public String getDtlBankFlag() { + return dtlBankFlag; + } + + public void setDtlBankFlag(String dtlBankFlag) { + this.dtlBankFlag = dtlBankFlag; + } + + public String getDtlPurpose() { + return dtlPurpose; + } + + public void setDtlPurpose(String dtlPurpose) { + this.dtlPurpose = dtlPurpose; + } + + public String getDtlRemark() { + return dtlRemark; + } + + public void setDtlRemark(String dtlRemark) { + this.dtlRemark = dtlRemark; + } + + public String getDtlRevBankArea() { + return dtlRevBankArea; + } + + public void setDtlRevBankArea(String dtlRevBankArea) { + this.dtlRevBankArea = dtlRevBankArea; + } + + public String getDtlRevBankCity() { + return dtlRevBankCity; + } + + public void setDtlRevBankCity(String dtlRevBankCity) { + this.dtlRevBankCity = dtlRevBankCity; + } + + public int getDtlSeqNum() { + return dtlSeqNum; + } + + public void setDtlSeqNum(int dtlSeqNum) { + this.dtlSeqNum = dtlSeqNum; + } + + public String getDtlExtend1() { + return dtlExtend1; + } + + public void setDtlExtend1(String dtlExtend1) { + this.dtlExtend1 = dtlExtend1; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplySubmitReqDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplySubmitReqDTO.java new file mode 100644 index 00000000..863ecb63 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/PaymentApplySubmitReqDTO.java @@ -0,0 +1,245 @@ +package com.hzya.frame.cbs8.dto.req; + +/** + * @Description 批量代发代扣 203代发 201代扣 + * @Author xiangerlin + * @Date 2024/6/18 11:58 + **/ +public class PaymentApplySubmitReqDTO { + //业务参考号 + private String referenceNum; + /** + * 业务类型 + * 201-代扣 + * 203-代发 + * 代发工资传203 + */ + private String busType; + //总金额 小数位2位 + private String amount; + //币种 + private String currency; + //付款账号 + private String payAccount; + //用途 + private String purpose; + // 以上是必填字段 + + + + //备注 + private String summary; + //期望支付时间 + private String expectTime; + //公私标识 1对私 0对公 + private String personalFlag; + //加急标志 1加急 0不加急 + private String urgentTag; + //是否实时 1实时 0落地 + private String realTimeTag; + /** + * 同城标志 0同城 1异地 + * 收/付账号所属同一个城市为同城,否则为异地 + */ + private String cityFlag; + //银行备用字段 一共8个 + private String bankExtend1; + private String bankExtend2; + private String bankExtend3; + private String bankExtend4; + private String bankExtend5; + private String bankExtend6; + private String bankExtend7; + private String bankExtend8; + + //客户备用字段1 + private String erpExtend1; + //客户备用字段1 + private String erpExtend2; + //客户备用字段1 + private String erpExtend3; + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public String getExpectTime() { + return expectTime; + } + + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; + } + + public String getPersonalFlag() { + return personalFlag; + } + + public void setPersonalFlag(String personalFlag) { + this.personalFlag = personalFlag; + } + + public String getUrgentTag() { + return urgentTag; + } + + public void setUrgentTag(String urgentTag) { + this.urgentTag = urgentTag; + } + + public String getRealTimeTag() { + return realTimeTag; + } + + public void setRealTimeTag(String realTimeTag) { + this.realTimeTag = realTimeTag; + } + + public String getCityFlag() { + return cityFlag; + } + + public void setCityFlag(String cityFlag) { + this.cityFlag = cityFlag; + } + + public String getBankExtend1() { + return bankExtend1; + } + + public void setBankExtend1(String bankExtend1) { + this.bankExtend1 = bankExtend1; + } + + public String getErpExtend1() { + return erpExtend1; + } + + public void setErpExtend1(String erpExtend1) { + this.erpExtend1 = erpExtend1; + } + + public String getErpExtend2() { + return erpExtend2; + } + + public void setErpExtend2(String erpExtend2) { + this.erpExtend2 = erpExtend2; + } + + public String getErpExtend3() { + return erpExtend3; + } + + public void setErpExtend3(String erpExtend3) { + this.erpExtend3 = erpExtend3; + } + + public String getBankExtend2() { + return bankExtend2; + } + + public void setBankExtend2(String bankExtend2) { + this.bankExtend2 = bankExtend2; + } + + public String getBankExtend3() { + return bankExtend3; + } + + public void setBankExtend3(String bankExtend3) { + this.bankExtend3 = bankExtend3; + } + + public String getBankExtend4() { + return bankExtend4; + } + + public void setBankExtend4(String bankExtend4) { + this.bankExtend4 = bankExtend4; + } + + public String getBankExtend5() { + return bankExtend5; + } + + public void setBankExtend5(String bankExtend5) { + this.bankExtend5 = bankExtend5; + } + + public String getBankExtend6() { + return bankExtend6; + } + + public void setBankExtend6(String bankExtend6) { + this.bankExtend6 = bankExtend6; + } + + public String getBankExtend7() { + return bankExtend7; + } + + public void setBankExtend7(String bankExtend7) { + this.bankExtend7 = bankExtend7; + } + + public String getBankExtend8() { + return bankExtend8; + } + + public void setBankExtend8(String bankExtend8) { + this.bankExtend8 = bankExtend8; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/TransactionDetailReqDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/TransactionDetailReqDTO.java new file mode 100644 index 00000000..26f5f4bf --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/req/TransactionDetailReqDTO.java @@ -0,0 +1,164 @@ +package com.hzya.frame.cbs8.dto.req; + +import java.util.List; + +/** + * @Description 查询境内交易明细参数 + * @Author xiangerlin + * @Date 2024/1/3 09:55 + **/ +public class TransactionDetailReqDTO { + private int currentPage;//当前页码 从1开始 + private int pageSize;//本次查询的记录数,最大1000条 + private String startDate;//开始日期 + private String endDate;//结束日期 + private String dateType;//日期类型0:交易日期,1:起息日期 + private List accountNoList;//账户列表 + private List bankTypeList;//银行类型列表 + private List currencyList;//币种列表 + private String detailedSources;//明细来源 + private String currentFlag;//明细类型 + private String loanType;//借贷类型 1:借 2:贷 + private List accountNatureList;//账户性质列表 + private String bankSerialNumber;//银行流水号 + private String transactionSerialNumber;//交易流水号 + private List unitCodeList ;//单位编码列表 + private String erpSerialNumber ;//erp业务参考号 + + public TransactionDetailReqDTO() { + + } + + public TransactionDetailReqDTO(String startDate, String endDate) { + this.startDate = startDate; + this.endDate = endDate; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getDateType() { + return dateType; + } + + public void setDateType(String dateType) { + this.dateType = dateType; + } + + public List getAccountNoList() { + return accountNoList; + } + + public void setAccountNoList(List accountNoList) { + this.accountNoList = accountNoList; + } + + public List getBankTypeList() { + return bankTypeList; + } + + public void setBankTypeList(List bankTypeList) { + this.bankTypeList = bankTypeList; + } + + public List getCurrencyList() { + return currencyList; + } + + public void setCurrencyList(List currencyList) { + this.currencyList = currencyList; + } + + public String getDetailedSources() { + return detailedSources; + } + + public void setDetailedSources(String detailedSources) { + this.detailedSources = detailedSources; + } + + public String getCurrentFlag() { + return currentFlag; + } + + public void setCurrentFlag(String currentFlag) { + this.currentFlag = currentFlag; + } + + public String getLoanType() { + return loanType; + } + + public void setLoanType(String loanType) { + this.loanType = loanType; + } + + public List getAccountNatureList() { + return accountNatureList; + } + + public void setAccountNatureList(List accountNatureList) { + this.accountNatureList = accountNatureList; + } + + public String getBankSerialNumber() { + return bankSerialNumber; + } + + public void setBankSerialNumber(String bankSerialNumber) { + this.bankSerialNumber = bankSerialNumber; + } + + public String getTransactionSerialNumber() { + return transactionSerialNumber; + } + + public void setTransactionSerialNumber(String transactionSerialNumber) { + this.transactionSerialNumber = transactionSerialNumber; + } + + public List getUnitCodeList() { + return unitCodeList; + } + + public void setUnitCodeList(List unitCodeList) { + this.unitCodeList = unitCodeList; + } + + public String getErpSerialNumber() { + return erpSerialNumber; + } + + public void setErpSerialNumber(String erpSerialNumber) { + this.erpSerialNumber = erpSerialNumber; + } + + public int getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayQueryDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayQueryDTO.java new file mode 100644 index 00000000..402e7895 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayQueryDTO.java @@ -0,0 +1,280 @@ +package com.hzya.frame.cbs8.dto.res; + +/** + * @Description 代发代扣查询详情 + * @Author xiangerlin + * @Date 2024/6/19 09:02 + **/ +public class AgentPayQueryDTO { + // 申请单编号 + private String busNum; + + // 代发/代扣明细序号 + private String dtlSeqNum; + + // 金额 + private String dtlAmount; // 考虑到金额计算精度,建议使用BigDecimal + + // 收款人名称 + private String dtlRevName; + + // 收款人账号 + private String dtlRevAccount; + + // 收款人开户行 + private String dtlRevBankName; + + // 银行号 + private String dtlBankNum; + + // 联行号 + private String dtlCnapsCode; + + // 是否跨行(Y:开户行是招商银行。N:开户行是他行。为空默认为招行) + private String dtlBankFlag; + + // 地区名称 + private String dtlRevBankArea; + + // 注释 + private String dtlRemark; + + // 状态 + private String dtlStatus; + + // 错误信息 + private String dtlErrorMessage; + + // 他行开户地 + private String dtlRevBankCity; + + // 备用字段1-6 + private String dtlExtend1; + private String dtlExtend2; + private String dtlExtend3; + private String dtlExtend4; + private String dtlExtend5; + private String dtlExtend6; + + // ERP备注1-3 + private String dtlErpComment1; + private String dtlErpComment2; + private String dtlErpComment3; + + // 用途 + private String dtlPurpose; + + // 银行支付时间 + private String dtlPayTime; + + // 实际扣款金额 + private String dtlActualAmount; + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } + + public String getDtlSeqNum() { + return dtlSeqNum; + } + + public void setDtlSeqNum(String dtlSeqNum) { + this.dtlSeqNum = dtlSeqNum; + } + + public String getDtlAmount() { + return dtlAmount; + } + + public void setDtlAmount(String dtlAmount) { + this.dtlAmount = dtlAmount; + } + + public String getDtlRevName() { + return dtlRevName; + } + + public void setDtlRevName(String dtlRevName) { + this.dtlRevName = dtlRevName; + } + + public String getDtlRevAccount() { + return dtlRevAccount; + } + + public void setDtlRevAccount(String dtlRevAccount) { + this.dtlRevAccount = dtlRevAccount; + } + + public String getDtlRevBankName() { + return dtlRevBankName; + } + + public void setDtlRevBankName(String dtlRevBankName) { + this.dtlRevBankName = dtlRevBankName; + } + + public String getDtlBankNum() { + return dtlBankNum; + } + + public void setDtlBankNum(String dtlBankNum) { + this.dtlBankNum = dtlBankNum; + } + + public String getDtlCnapsCode() { + return dtlCnapsCode; + } + + public void setDtlCnapsCode(String dtlCnapsCode) { + this.dtlCnapsCode = dtlCnapsCode; + } + + public String getDtlBankFlag() { + return dtlBankFlag; + } + + public void setDtlBankFlag(String dtlBankFlag) { + this.dtlBankFlag = dtlBankFlag; + } + + public String getDtlRevBankArea() { + return dtlRevBankArea; + } + + public void setDtlRevBankArea(String dtlRevBankArea) { + this.dtlRevBankArea = dtlRevBankArea; + } + + public String getDtlRemark() { + return dtlRemark; + } + + public void setDtlRemark(String dtlRemark) { + this.dtlRemark = dtlRemark; + } + + public String getDtlStatus() { + return dtlStatus; + } + + public void setDtlStatus(String dtlStatus) { + this.dtlStatus = dtlStatus; + } + + public String getDtlErrorMessage() { + return dtlErrorMessage; + } + + public void setDtlErrorMessage(String dtlErrorMessage) { + this.dtlErrorMessage = dtlErrorMessage; + } + + public String getDtlRevBankCity() { + return dtlRevBankCity; + } + + public void setDtlRevBankCity(String dtlRevBankCity) { + this.dtlRevBankCity = dtlRevBankCity; + } + + public String getDtlExtend1() { + return dtlExtend1; + } + + public void setDtlExtend1(String dtlExtend1) { + this.dtlExtend1 = dtlExtend1; + } + + public String getDtlExtend2() { + return dtlExtend2; + } + + public void setDtlExtend2(String dtlExtend2) { + this.dtlExtend2 = dtlExtend2; + } + + public String getDtlExtend3() { + return dtlExtend3; + } + + public void setDtlExtend3(String dtlExtend3) { + this.dtlExtend3 = dtlExtend3; + } + + public String getDtlExtend4() { + return dtlExtend4; + } + + public void setDtlExtend4(String dtlExtend4) { + this.dtlExtend4 = dtlExtend4; + } + + public String getDtlExtend5() { + return dtlExtend5; + } + + public void setDtlExtend5(String dtlExtend5) { + this.dtlExtend5 = dtlExtend5; + } + + public String getDtlExtend6() { + return dtlExtend6; + } + + public void setDtlExtend6(String dtlExtend6) { + this.dtlExtend6 = dtlExtend6; + } + + public String getDtlErpComment1() { + return dtlErpComment1; + } + + public void setDtlErpComment1(String dtlErpComment1) { + this.dtlErpComment1 = dtlErpComment1; + } + + public String getDtlErpComment2() { + return dtlErpComment2; + } + + public void setDtlErpComment2(String dtlErpComment2) { + this.dtlErpComment2 = dtlErpComment2; + } + + public String getDtlErpComment3() { + return dtlErpComment3; + } + + public void setDtlErpComment3(String dtlErpComment3) { + this.dtlErpComment3 = dtlErpComment3; + } + + public String getDtlPurpose() { + return dtlPurpose; + } + + public void setDtlPurpose(String dtlPurpose) { + this.dtlPurpose = dtlPurpose; + } + + public String getDtlPayTime() { + return dtlPayTime; + } + + public void setDtlPayTime(String dtlPayTime) { + this.dtlPayTime = dtlPayTime; + } + + public String getDtlActualAmount() { + return dtlActualAmount; + } + + public void setDtlActualAmount(String dtlActualAmount) { + this.dtlActualAmount = dtlActualAmount; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayResultResDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayResultResDTO.java new file mode 100644 index 00000000..5ea5d5ae --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/AgentPayResultResDTO.java @@ -0,0 +1,450 @@ +package com.hzya.frame.cbs8.dto.res; + +import java.util.List; + +/** + * @Description 代发代扣 返回参数对象 + * @Author xiangerlin + * @Date 2024/6/19 08:53 + **/ +public class AgentPayResultResDTO { + // 支付的业务类型 + private String busType; + + // 申请单编号 + private String busNum; + + // 付款账户 + private String payAccount; + + // 付款账户名称 + private String payAccountName; + + // 付款账户开户行 + private String payBankName; + + // 付款银行类型 + private String payBankType; + + // 币种 + private String currency; + + // 金额 + private String amount; + + // 收款账户 + private String revAccount; + + // 收款账户名称 + private String revAccountName; + + // 收款开户行 + private String revBankName; + + // 收款银行类型 + private String revBankType; + + // 收款人省 + private String revProvince; + + // 对账码集合(假设为String列表) + private List checkCodeList; + + // 收款人市 + private String revCity; + + // 支付渠道 + private String payChannel; + + // 付款单提示信息/银行返回信息 + private String errorMsg; + + // 支付申请状态 + private String status; + + // 经办人ID + private String createBy; + + // 经办人名称 + private String createByName; + + // 用途 + private String purpose; + + // 摘要/备注 + private String summary; + + // 期望支付时间 + private String expectTime; + + // 支付时间 + private String payDate; + + // 支付状态 + private String payStatus; + + // 客户备用字段1 + private String erpExtend1; + + // 客户备用字段2 + private String erpExtend2; + + // 客户备用字段3 + private String erpExtend3; + + // 计划流水号 + private String planNumber; + + // 资金预算编号 + private String planItemCode; + + // 预算项名称 + private String planItemName; + + // 预算所属单位编码 + private String planUnitCode; + + // 预算所属单位名称 + private String planUnitName; + + // 单位编码(前端展示) + private String displayUnitCode; + + // 预算单位编码(前端展示) + private String displayPlanUnitCode; + + // 经办用户单位编码(前端展示) + private String displayOperaterOrgCode; + + // 付方单位编码(前端展示) + private String displayPayOrgCode; + + // 客商编号 + private String revCustomerCode; + + // 结算方式 + private String payType; + + //代发代扣详情 + private List agentDetails; + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getPayAccountName() { + return payAccountName; + } + + public void setPayAccountName(String payAccountName) { + this.payAccountName = payAccountName; + } + + public String getPayBankName() { + return payBankName; + } + + public void setPayBankName(String payBankName) { + this.payBankName = payBankName; + } + + public String getPayBankType() { + return payBankType; + } + + public void setPayBankType(String payBankType) { + this.payBankType = payBankType; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getRevAccount() { + return revAccount; + } + + public void setRevAccount(String revAccount) { + this.revAccount = revAccount; + } + + public String getRevAccountName() { + return revAccountName; + } + + public void setRevAccountName(String revAccountName) { + this.revAccountName = revAccountName; + } + + public String getRevBankName() { + return revBankName; + } + + public void setRevBankName(String revBankName) { + this.revBankName = revBankName; + } + + public String getRevBankType() { + return revBankType; + } + + public void setRevBankType(String revBankType) { + this.revBankType = revBankType; + } + + public String getRevProvince() { + return revProvince; + } + + public void setRevProvince(String revProvince) { + this.revProvince = revProvince; + } + + public List getCheckCodeList() { + return checkCodeList; + } + + public void setCheckCodeList(List checkCodeList) { + this.checkCodeList = checkCodeList; + } + + public String getRevCity() { + return revCity; + } + + public void setRevCity(String revCity) { + this.revCity = revCity; + } + + public String getPayChannel() { + return payChannel; + } + + public void setPayChannel(String payChannel) { + this.payChannel = payChannel; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getCreateByName() { + return createByName; + } + + public void setCreateByName(String createByName) { + this.createByName = createByName; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public String getExpectTime() { + return expectTime; + } + + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; + } + + public String getPayDate() { + return payDate; + } + + public void setPayDate(String payDate) { + this.payDate = payDate; + } + + public String getPayStatus() { + return payStatus; + } + + public void setPayStatus(String payStatus) { + this.payStatus = payStatus; + } + + public String getErpExtend1() { + return erpExtend1; + } + + public void setErpExtend1(String erpExtend1) { + this.erpExtend1 = erpExtend1; + } + + public String getErpExtend2() { + return erpExtend2; + } + + public void setErpExtend2(String erpExtend2) { + this.erpExtend2 = erpExtend2; + } + + public String getErpExtend3() { + return erpExtend3; + } + + public void setErpExtend3(String erpExtend3) { + this.erpExtend3 = erpExtend3; + } + + public String getPlanNumber() { + return planNumber; + } + + public void setPlanNumber(String planNumber) { + this.planNumber = planNumber; + } + + public String getPlanItemCode() { + return planItemCode; + } + + public void setPlanItemCode(String planItemCode) { + this.planItemCode = planItemCode; + } + + public String getPlanItemName() { + return planItemName; + } + + public void setPlanItemName(String planItemName) { + this.planItemName = planItemName; + } + + public String getPlanUnitCode() { + return planUnitCode; + } + + public void setPlanUnitCode(String planUnitCode) { + this.planUnitCode = planUnitCode; + } + + public String getPlanUnitName() { + return planUnitName; + } + + public void setPlanUnitName(String planUnitName) { + this.planUnitName = planUnitName; + } + + public String getDisplayUnitCode() { + return displayUnitCode; + } + + public void setDisplayUnitCode(String displayUnitCode) { + this.displayUnitCode = displayUnitCode; + } + + public String getDisplayPlanUnitCode() { + return displayPlanUnitCode; + } + + public void setDisplayPlanUnitCode(String displayPlanUnitCode) { + this.displayPlanUnitCode = displayPlanUnitCode; + } + + public String getDisplayOperaterOrgCode() { + return displayOperaterOrgCode; + } + + public void setDisplayOperaterOrgCode(String displayOperaterOrgCode) { + this.displayOperaterOrgCode = displayOperaterOrgCode; + } + + public String getDisplayPayOrgCode() { + return displayPayOrgCode; + } + + public void setDisplayPayOrgCode(String displayPayOrgCode) { + this.displayPayOrgCode = displayPayOrgCode; + } + + public String getRevCustomerCode() { + return revCustomerCode; + } + + public void setRevCustomerCode(String revCustomerCode) { + this.revCustomerCode = revCustomerCode; + } + + public String getPayType() { + return payType; + } + + public void setPayType(String payType) { + this.payType = payType; + } + + public List getAgentDetails() { + return agentDetails; + } + + public void setAgentDetails(List agentDetails) { + this.agentDetails = agentDetails; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResDataDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResDataDTO.java new file mode 100644 index 00000000..0bb30dc8 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResDataDTO.java @@ -0,0 +1,458 @@ +package com.hzya.frame.cbs8.dto.res; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.List; + +/** + * @Description data节点 + * @Author xiangerlin + * @Date 2024/1/2 09:26 + **/ +public class CbsResDataDTO { + + + private List list;//明细数据 + //------- 交易明细字段----- + private int endRow; + private Boolean hasNextPage;//是否有下一页 + private Boolean hasPreviousPage;//是否有前一页 + @JSONField(name = "isFirstPage") + private Boolean hasFirstPage; + @JSONField(name = "isLastPage") + private Boolean hasLastPage; + private int navigateFirstPage; + private int navigateLastPage; + private int navigatePages; + private int nextPage; + private int pageNum; + private int pageSize; + private int pages; + private int prePage; + private int size; + private int startRow; + private int total; + //------- 交易明细字段----- + + //------经办支付返回参数------ + private String busNum;//申请单编号 + private String errorCode;//错误编码 + private String errorMsg;//错误信息 + private String freezeFlowNum;//内部户冻结流水号 + private String recordNum;//批量经办序号 + private String referenceNum;//业务参考号 + private Boolean successed;//是否成功 + //------经办支付返回参数------ + + + //------查询交易结果返回参数------- + + private String busType;//支付业务类型 + private String payAccount;//付款账号 + private String payAccountName;//付款户名 + private String payBankName;//付款开户行名称 + private String payBankType;//付款银行类型 + private String currency;//币种 + private String amount;//金额 + private String revAccount;//收款账户 + private String revAccountName;//收款账户名 + private String revBankName;//收款开户行 + private String revBankType;//收款银行类型 + private String payChannel;//支付渠道 + + private String status;//支付申请单状态 + private String payStatus;//支付状态 + private String payDate;//支付时间 + private String planNumber;//计划流水号 + private String planItemCode;//资金预算编号 + private String planItemName;//预算名称 + private String erpExtend1;//客户备用字段1 + private String erpExtend2;//客户备用字段1 + private String erpExtend3;//客户备用字段1 + + //------查询交易结果返回参数------- + + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public int getEndRow() { + return endRow; + } + + public void setEndRow(int endRow) { + this.endRow = endRow; + } + + public Boolean getHasNextPage() { + return hasNextPage; + } + + public void setHasNextPage(Boolean hasNextPage) { + this.hasNextPage = hasNextPage; + } + + public Boolean getHasPreviousPage() { + return hasPreviousPage; + } + + public void setHasPreviousPage(Boolean hasPreviousPage) { + this.hasPreviousPage = hasPreviousPage; + } + + public Boolean getHasFirstPage() { + return hasFirstPage; + } + + public void setHasFirstPage(Boolean hasFirstPage) { + this.hasFirstPage = hasFirstPage; + } + + public Boolean getHasLastPage() { + return hasLastPage; + } + + public void setHasLastPage(Boolean hasLastPage) { + this.hasLastPage = hasLastPage; + } + + public int getNavigateFirstPage() { + return navigateFirstPage; + } + + public void setNavigateFirstPage(int navigateFirstPage) { + this.navigateFirstPage = navigateFirstPage; + } + + public int getNavigateLastPage() { + return navigateLastPage; + } + + public void setNavigateLastPage(int navigateLastPage) { + this.navigateLastPage = navigateLastPage; + } + + public int getNavigatePages() { + return navigatePages; + } + + public void setNavigatePages(int navigatePages) { + this.navigatePages = navigatePages; + } + + public int getNextPage() { + return nextPage; + } + + public void setNextPage(int nextPage) { + this.nextPage = nextPage; + } + + public int getPageNum() { + return pageNum; + } + + public void setPageNum(int pageNum) { + this.pageNum = pageNum; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getPages() { + return pages; + } + + public void setPages(int pages) { + this.pages = pages; + } + + public int getPrePage() { + return prePage; + } + + public void setPrePage(int prePage) { + this.prePage = prePage; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getStartRow() { + return startRow; + } + + public void setStartRow(int startRow) { + this.startRow = startRow; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getFreezeFlowNum() { + return freezeFlowNum; + } + + public void setFreezeFlowNum(String freezeFlowNum) { + this.freezeFlowNum = freezeFlowNum; + } + + public String getRecordNum() { + return recordNum; + } + + public void setRecordNum(String recordNum) { + this.recordNum = recordNum; + } + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public Boolean getSuccessed() { + return successed; + } + + public void setSuccessed(Boolean successed) { + this.successed = successed; + } + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getPayAccountName() { + return payAccountName; + } + + public void setPayAccountName(String payAccountName) { + this.payAccountName = payAccountName; + } + + public String getPayBankName() { + return payBankName; + } + + public void setPayBankName(String payBankName) { + this.payBankName = payBankName; + } + + public String getPayBankType() { + return payBankType; + } + + public void setPayBankType(String payBankType) { + this.payBankType = payBankType; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getRevAccount() { + return revAccount; + } + + public void setRevAccount(String revAccount) { + this.revAccount = revAccount; + } + + public String getRevAccountName() { + return revAccountName; + } + + public void setRevAccountName(String revAccountName) { + this.revAccountName = revAccountName; + } + + public String getRevBankName() { + return revBankName; + } + + public void setRevBankName(String revBankName) { + this.revBankName = revBankName; + } + + public String getRevBankType() { + return revBankType; + } + + public void setRevBankType(String revBankType) { + this.revBankType = revBankType; + } + + public String getPayChannel() { + return payChannel; + } + + public void setPayChannel(String payChannel) { + this.payChannel = payChannel; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getPayStatus() { + return payStatus; + } + + public void setPayStatus(String payStatus) { + this.payStatus = payStatus; + } + + public String getPayDate() { + return payDate; + } + + public void setPayDate(String payDate) { + this.payDate = payDate; + } + + public String getPlanNumber() { + return planNumber; + } + + public void setPlanNumber(String planNumber) { + this.planNumber = planNumber; + } + + public String getPlanItemCode() { + return planItemCode; + } + + public void setPlanItemCode(String planItemCode) { + this.planItemCode = planItemCode; + } + + public String getPlanItemName() { + return planItemName; + } + + public void setPlanItemName(String planItemName) { + this.planItemName = planItemName; + } + + public String getErpExtend1() { + return erpExtend1; + } + + public void setErpExtend1(String erpExtend1) { + this.erpExtend1 = erpExtend1; + } + + public String getErpExtend2() { + return erpExtend2; + } + + public void setErpExtend2(String erpExtend2) { + this.erpExtend2 = erpExtend2; + } + + public String getErpExtend3() { + return erpExtend3; + } + + public void setErpExtend3(String erpExtend3) { + this.erpExtend3 = erpExtend3; + } + + /** + * 把json字符串转换成指定范型的list + * @param json + * @param list + * @param clazz + * @param + */ + private static void adaptAndAddToList(String json, List list, Class clazz) { + JSONObject jsonObject = JSON.parseObject(json); + + if (jsonObject.containsKey("list")) { + JSONArray listArray = jsonObject.getJSONArray("list"); + for (Object item : listArray) { + JSONObject itemObject = (JSONObject) item; + // 适配不同类型的节点 + list.add(JSON.toJavaObject(itemObject, clazz)); + } + } + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResponseDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResponseDTO.java new file mode 100644 index 00000000..1abae5b9 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/CbsResponseDTO.java @@ -0,0 +1,44 @@ +package com.hzya.frame.cbs8.dto.res; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.List; + +/** + * @Description cbs响应DTO + * @Author xiangerlin + * @Date 2024/1/2 09:25 + **/ +public class CbsResponseDTO { + //private List data;//数据 + private List data;//数据 + private String code;//0表示成功 + private String msg;//消息 + + + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/ElecResponseDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/ElecResponseDTO.java new file mode 100644 index 00000000..6e77d30a --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/ElecResponseDTO.java @@ -0,0 +1,305 @@ +package com.hzya.frame.cbs8.dto.res; + +/** + * @Description 电子回单查询返回参数 + * @Author xiangerlin + * @Date 2024/1/4 17:13 + **/ +public class ElecResponseDTO { + + // 账号 + private String accountNo; + + // 账号名称 + private String accountName; + + // 银行类型 + private String bankType; + + // 银行类型名称 + private String bankTypeName; + + // 开户行 + private String openingBank; + + // 交易日期 + private String transactionDate; + + // 电子回单文件状态 + private String electronicBillStatus; + + // 电子回单文件名称 + private String billFileName; + + // 回单文件下载地址 + private String bucketFileUrl; + + // 回单文件名称 + private String bucketFileName; + + // 回单类型 + private String electronicBillType; + + // 银行流水号 + private String bankSerialNumber; + + // 回单编号 + private String printInstanceNumber; + + // 币种 + private String currency; + + // 币种名称 + private String currencyName; + + // 借贷类型 + private String loanType; + + // 交易金额 + private String transactionAmount; + + // 对方账号 + private String oppositeAccount; + + // 对方账户名 + private String oppositeAccountName; + + // 对方开户地 + private String oppositeOpeningPlace; + + // 对方开户行 + private String oppositeOpeningBank; + + // 摘要 + private String digest; + + // 用途 + private String purpose; + + // 账户性质 + private String accountNatureCode; + + // 对账码 + private String checkCode; + + // 单位编码 + private String unitCode; + + // ERP业务参考号 + private String settleBusinessReferenceCode; + public String getAccountNo() { + return accountNo; + } + + public void setAccountNo(String accountNo) { + this.accountNo = accountNo; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getBankType() { + return bankType; + } + + public void setBankType(String bankType) { + this.bankType = bankType; + } + + public String getBankTypeName() { + return bankTypeName; + } + + public void setBankTypeName(String bankTypeName) { + this.bankTypeName = bankTypeName; + } + + public String getOpeningBank() { + return openingBank; + } + + public void setOpeningBank(String openingBank) { + this.openingBank = openingBank; + } + + public String getTransactionDate() { + return transactionDate; + } + + public void setTransactionDate(String transactionDate) { + this.transactionDate = transactionDate; + } + + public String getElectronicBillStatus() { + return electronicBillStatus; + } + + public void setElectronicBillStatus(String electronicBillStatus) { + this.electronicBillStatus = electronicBillStatus; + } + + public String getBillFileName() { + return billFileName; + } + + public void setBillFileName(String billFileName) { + this.billFileName = billFileName; + } + + public String getBucketFileUrl() { + return bucketFileUrl; + } + + public void setBucketFileUrl(String bucketFileUrl) { + this.bucketFileUrl = bucketFileUrl; + } + + public String getBucketFileName() { + return bucketFileName; + } + + public void setBucketFileName(String bucketFileName) { + this.bucketFileName = bucketFileName; + } + + public String getElectronicBillType() { + return electronicBillType; + } + + public void setElectronicBillType(String electronicBillType) { + this.electronicBillType = electronicBillType; + } + + public String getBankSerialNumber() { + return bankSerialNumber; + } + + public void setBankSerialNumber(String bankSerialNumber) { + this.bankSerialNumber = bankSerialNumber; + } + + public String getPrintInstanceNumber() { + return printInstanceNumber; + } + + public void setPrintInstanceNumber(String printInstanceNumber) { + this.printInstanceNumber = printInstanceNumber; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getCurrencyName() { + return currencyName; + } + + public void setCurrencyName(String currencyName) { + this.currencyName = currencyName; + } + + public String getLoanType() { + return loanType; + } + + public void setLoanType(String loanType) { + this.loanType = loanType; + } + + public String getTransactionAmount() { + return transactionAmount; + } + + public void setTransactionAmount(String transactionAmount) { + this.transactionAmount = transactionAmount; + } + + public String getOppositeAccount() { + return oppositeAccount; + } + + public void setOppositeAccount(String oppositeAccount) { + this.oppositeAccount = oppositeAccount; + } + + public String getOppositeAccountName() { + return oppositeAccountName; + } + + public void setOppositeAccountName(String oppositeAccountName) { + this.oppositeAccountName = oppositeAccountName; + } + + public String getOppositeOpeningPlace() { + return oppositeOpeningPlace; + } + + public void setOppositeOpeningPlace(String oppositeOpeningPlace) { + this.oppositeOpeningPlace = oppositeOpeningPlace; + } + + public String getOppositeOpeningBank() { + return oppositeOpeningBank; + } + + public void setOppositeOpeningBank(String oppositeOpeningBank) { + this.oppositeOpeningBank = oppositeOpeningBank; + } + + public String getDigest() { + return digest; + } + + public void setDigest(String digest) { + this.digest = digest; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getAccountNatureCode() { + return accountNatureCode; + } + + public void setAccountNatureCode(String accountNatureCode) { + this.accountNatureCode = accountNatureCode; + } + + public String getCheckCode() { + return checkCode; + } + + public void setCheckCode(String checkCode) { + this.checkCode = checkCode; + } + + public String getUnitCode() { + return unitCode; + } + + public void setUnitCode(String unitCode) { + this.unitCode = unitCode; + } + + public String getSettleBusinessReferenceCode() { + return settleBusinessReferenceCode; + } + + public void setSettleBusinessReferenceCode(String settleBusinessReferenceCode) { + this.settleBusinessReferenceCode = settleBusinessReferenceCode; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResponseDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResponseDTO.java new file mode 100644 index 00000000..2534d4f8 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResponseDTO.java @@ -0,0 +1,73 @@ +package com.hzya.frame.cbs8.dto.res; + +/** + * @Description 经办支付接口返回参数中的data节点 + * @Author xiangerlin + * @Date 2024/1/3 14:35 + **/ +public class PayResponseDTO { + + private String busNum;//申请单编号 + private String errorCode;//错误编码 + private String errorMsg;//错误信息 + private String freezeFlowNum;//内部户冻结流水号 + private String recordNum;//批量经办序号 + private String referenceNum;//业务参考号 + private Boolean successed;//是否成功 + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getFreezeFlowNum() { + return freezeFlowNum; + } + + public void setFreezeFlowNum(String freezeFlowNum) { + this.freezeFlowNum = freezeFlowNum; + } + + public String getRecordNum() { + return recordNum; + } + + public void setRecordNum(String recordNum) { + this.recordNum = recordNum; + } + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public Boolean getSuccessed() { + return successed; + } + + public void setSuccessed(Boolean successed) { + this.successed = successed; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResultResDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResultResDTO.java new file mode 100644 index 00000000..4ab82489 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/PayResultResDTO.java @@ -0,0 +1,890 @@ +package com.hzya.frame.cbs8.dto.res; + +/** + * @Description 交易结果查询data节点响应的参数 + * @Author xiangerlin + * @Date 2024/1/3 15:45 + **/ +public class PayResultResDTO { + + private String payDate;//支付日期 + private String accountFlag; + + private String agentDetails; + + private String amount; + + private String bankExtend1; + + private String bankExtend10; + + private String bankExtend11; + + private String bankExtend2; + + private String bankExtend3; + + private String bankExtend4; + + private String bankExtend5; + + private String bankExtend6; + + private String bankExtend7; + + private String bankExtend8; + + private String bankExtend9; + + private String bankInterfaceType; + + private String bankNum; + + private String bankVersion; + + private String batchNum; + + private String busNum; + + private String busType; + + private String checkCodeList; + + private String cityFlag; + + private String cnapsCode; + + private String createBy; + + private String createByName; + + private String createTime; + + private String currency; + + private String dealPeopleList; + + private String detailNum; + + private String erpExtend1; + + private String erpExtend2; + + private String erpExtend3; + + private String errorMsg; + + private String expectTime; + + + + private String extend1; + + private String extend2; + + private String extend3; + + private String extend4; + + private String extend5; + + private String freezeFlowNum; + + private String freezeStatus; + + private String id; + + private String innerAccount; + + private String innerAccountName; + + private String inputType; + + private String isDeleted; + + private String isSaveRev; + + private String lastPrintTime; + + private String lastPrintUser; + + private String operaterOrgCode; + + private String operaterOrgCodeList; + + private String operaterOrgName; + + private String payAccount; + + private String payAccountName; + + private String payAccountSeq; + + private String payBankName; + + private String payBankType; + + private String payChannel; + + private String payOrgCode; + + private String payOrgName; + + private String payStatus;// 支付状态 + + private String paymentApplyUnionDTO; + + private String personalFlag; + + private String printTimes; + + private String procInstId; + + private String procStatus; + + private String projectCode; + + private String purpose; + + private String realName; + + private String realRevAccount; + + private String realTimeTag; + + private String referenceNum; + + private String revAccount; + + private String revAccountName; + + private String revAccountSeq; + + private String revBankArea; + + private String revBankName; + + private String revBankType; + + private String revCity; + + private String revProvince; + + private String status;//支付申请状态 + + private String summary; + + private String unitCode; + + private String unitName; + + private String updateBy; + + private String updateTime; + + private String urgentTag; + + public String getAccountFlag() { + return accountFlag; + } + + public void setAccountFlag(String accountFlag) { + this.accountFlag = accountFlag; + } + + public String getAgentDetails() { + return agentDetails; + } + + public void setAgentDetails(String agentDetails) { + this.agentDetails = agentDetails; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getBankExtend1() { + return bankExtend1; + } + + public void setBankExtend1(String bankExtend1) { + this.bankExtend1 = bankExtend1; + } + + public String getBankExtend10() { + return bankExtend10; + } + + public void setBankExtend10(String bankExtend10) { + this.bankExtend10 = bankExtend10; + } + + public String getBankExtend11() { + return bankExtend11; + } + + public void setBankExtend11(String bankExtend11) { + this.bankExtend11 = bankExtend11; + } + + public String getBankExtend2() { + return bankExtend2; + } + + public void setBankExtend2(String bankExtend2) { + this.bankExtend2 = bankExtend2; + } + + public String getBankExtend3() { + return bankExtend3; + } + + public void setBankExtend3(String bankExtend3) { + this.bankExtend3 = bankExtend3; + } + + public String getBankExtend4() { + return bankExtend4; + } + + public void setBankExtend4(String bankExtend4) { + this.bankExtend4 = bankExtend4; + } + + public String getBankExtend5() { + return bankExtend5; + } + + public void setBankExtend5(String bankExtend5) { + this.bankExtend5 = bankExtend5; + } + + public String getBankExtend6() { + return bankExtend6; + } + + public void setBankExtend6(String bankExtend6) { + this.bankExtend6 = bankExtend6; + } + + public String getBankExtend7() { + return bankExtend7; + } + + public void setBankExtend7(String bankExtend7) { + this.bankExtend7 = bankExtend7; + } + + public String getBankExtend8() { + return bankExtend8; + } + + public void setBankExtend8(String bankExtend8) { + this.bankExtend8 = bankExtend8; + } + + public String getBankExtend9() { + return bankExtend9; + } + + public void setBankExtend9(String bankExtend9) { + this.bankExtend9 = bankExtend9; + } + + public String getBankInterfaceType() { + return bankInterfaceType; + } + + public void setBankInterfaceType(String bankInterfaceType) { + this.bankInterfaceType = bankInterfaceType; + } + + public String getBankNum() { + return bankNum; + } + + public void setBankNum(String bankNum) { + this.bankNum = bankNum; + } + + public String getBankVersion() { + return bankVersion; + } + + public void setBankVersion(String bankVersion) { + this.bankVersion = bankVersion; + } + + public String getBatchNum() { + return batchNum; + } + + public void setBatchNum(String batchNum) { + this.batchNum = batchNum; + } + + public String getBusNum() { + return busNum; + } + + public void setBusNum(String busNum) { + this.busNum = busNum; + } + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getCheckCodeList() { + return checkCodeList; + } + + public void setCheckCodeList(String checkCodeList) { + this.checkCodeList = checkCodeList; + } + + public String getCityFlag() { + return cityFlag; + } + + public void setCityFlag(String cityFlag) { + this.cityFlag = cityFlag; + } + + public String getCnapsCode() { + return cnapsCode; + } + + public void setCnapsCode(String cnapsCode) { + this.cnapsCode = cnapsCode; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getCreateByName() { + return createByName; + } + + public void setCreateByName(String createByName) { + this.createByName = createByName; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getDealPeopleList() { + return dealPeopleList; + } + + public void setDealPeopleList(String dealPeopleList) { + this.dealPeopleList = dealPeopleList; + } + + public String getDetailNum() { + return detailNum; + } + + public void setDetailNum(String detailNum) { + this.detailNum = detailNum; + } + + public String getErpExtend1() { + return erpExtend1; + } + + public void setErpExtend1(String erpExtend1) { + this.erpExtend1 = erpExtend1; + } + + public String getErpExtend2() { + return erpExtend2; + } + + public void setErpExtend2(String erpExtend2) { + this.erpExtend2 = erpExtend2; + } + + public String getErpExtend3() { + return erpExtend3; + } + + public void setErpExtend3(String erpExtend3) { + this.erpExtend3 = erpExtend3; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getExpectTime() { + return expectTime; + } + + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; + } + + public String getExtend1() { + return extend1; + } + + public void setExtend1(String extend1) { + this.extend1 = extend1; + } + + public String getExtend2() { + return extend2; + } + + public void setExtend2(String extend2) { + this.extend2 = extend2; + } + + public String getExtend3() { + return extend3; + } + + public void setExtend3(String extend3) { + this.extend3 = extend3; + } + + public String getExtend4() { + return extend4; + } + + public void setExtend4(String extend4) { + this.extend4 = extend4; + } + + public String getExtend5() { + return extend5; + } + + public void setExtend5(String extend5) { + this.extend5 = extend5; + } + + public String getFreezeFlowNum() { + return freezeFlowNum; + } + + public void setFreezeFlowNum(String freezeFlowNum) { + this.freezeFlowNum = freezeFlowNum; + } + + public String getFreezeStatus() { + return freezeStatus; + } + + public void setFreezeStatus(String freezeStatus) { + this.freezeStatus = freezeStatus; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInnerAccount() { + return innerAccount; + } + + public void setInnerAccount(String innerAccount) { + this.innerAccount = innerAccount; + } + + public String getInnerAccountName() { + return innerAccountName; + } + + public void setInnerAccountName(String innerAccountName) { + this.innerAccountName = innerAccountName; + } + + public String getInputType() { + return inputType; + } + + public void setInputType(String inputType) { + this.inputType = inputType; + } + + public String getIsDeleted() { + return isDeleted; + } + + public void setIsDeleted(String isDeleted) { + this.isDeleted = isDeleted; + } + + public String getIsSaveRev() { + return isSaveRev; + } + + public void setIsSaveRev(String isSaveRev) { + this.isSaveRev = isSaveRev; + } + + public String getLastPrintTime() { + return lastPrintTime; + } + + public void setLastPrintTime(String lastPrintTime) { + this.lastPrintTime = lastPrintTime; + } + + public String getLastPrintUser() { + return lastPrintUser; + } + + public void setLastPrintUser(String lastPrintUser) { + this.lastPrintUser = lastPrintUser; + } + + public String getOperaterOrgCode() { + return operaterOrgCode; + } + + public void setOperaterOrgCode(String operaterOrgCode) { + this.operaterOrgCode = operaterOrgCode; + } + + public String getOperaterOrgCodeList() { + return operaterOrgCodeList; + } + + public void setOperaterOrgCodeList(String operaterOrgCodeList) { + this.operaterOrgCodeList = operaterOrgCodeList; + } + + public String getOperaterOrgName() { + return operaterOrgName; + } + + public void setOperaterOrgName(String operaterOrgName) { + this.operaterOrgName = operaterOrgName; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getPayAccountName() { + return payAccountName; + } + + public void setPayAccountName(String payAccountName) { + this.payAccountName = payAccountName; + } + + public String getPayAccountSeq() { + return payAccountSeq; + } + + public void setPayAccountSeq(String payAccountSeq) { + this.payAccountSeq = payAccountSeq; + } + + public String getPayBankName() { + return payBankName; + } + + public void setPayBankName(String payBankName) { + this.payBankName = payBankName; + } + + public String getPayBankType() { + return payBankType; + } + + public void setPayBankType(String payBankType) { + this.payBankType = payBankType; + } + + public String getPayChannel() { + return payChannel; + } + + public void setPayChannel(String payChannel) { + this.payChannel = payChannel; + } + + public String getPayOrgCode() { + return payOrgCode; + } + + public void setPayOrgCode(String payOrgCode) { + this.payOrgCode = payOrgCode; + } + + public String getPayOrgName() { + return payOrgName; + } + + public void setPayOrgName(String payOrgName) { + this.payOrgName = payOrgName; + } + + public String getPayStatus() { + return payStatus; + } + + public void setPayStatus(String payStatus) { + this.payStatus = payStatus; + } + + public String getPaymentApplyUnionDTO() { + return paymentApplyUnionDTO; + } + + public void setPaymentApplyUnionDTO(String paymentApplyUnionDTO) { + this.paymentApplyUnionDTO = paymentApplyUnionDTO; + } + + public String getPersonalFlag() { + return personalFlag; + } + + public void setPersonalFlag(String personalFlag) { + this.personalFlag = personalFlag; + } + + public String getPrintTimes() { + return printTimes; + } + + public void setPrintTimes(String printTimes) { + this.printTimes = printTimes; + } + + public String getProcInstId() { + return procInstId; + } + + public void setProcInstId(String procInstId) { + this.procInstId = procInstId; + } + + public String getProcStatus() { + return procStatus; + } + + public void setProcStatus(String procStatus) { + this.procStatus = procStatus; + } + + public String getProjectCode() { + return projectCode; + } + + public void setProjectCode(String projectCode) { + this.projectCode = projectCode; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getRealName() { + return realName; + } + + public void setRealName(String realName) { + this.realName = realName; + } + + public String getRealRevAccount() { + return realRevAccount; + } + + public void setRealRevAccount(String realRevAccount) { + this.realRevAccount = realRevAccount; + } + + public String getRealTimeTag() { + return realTimeTag; + } + + public void setRealTimeTag(String realTimeTag) { + this.realTimeTag = realTimeTag; + } + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public String getRevAccount() { + return revAccount; + } + + public void setRevAccount(String revAccount) { + this.revAccount = revAccount; + } + + public String getRevAccountName() { + return revAccountName; + } + + public void setRevAccountName(String revAccountName) { + this.revAccountName = revAccountName; + } + + public String getRevAccountSeq() { + return revAccountSeq; + } + + public void setRevAccountSeq(String revAccountSeq) { + this.revAccountSeq = revAccountSeq; + } + + public String getRevBankArea() { + return revBankArea; + } + + public void setRevBankArea(String revBankArea) { + this.revBankArea = revBankArea; + } + + public String getRevBankName() { + return revBankName; + } + + public void setRevBankName(String revBankName) { + this.revBankName = revBankName; + } + + public String getRevBankType() { + return revBankType; + } + + public void setRevBankType(String revBankType) { + this.revBankType = revBankType; + } + + public String getRevCity() { + return revCity; + } + + public void setRevCity(String revCity) { + this.revCity = revCity; + } + + public String getRevProvince() { + return revProvince; + } + + public void setRevProvince(String revProvince) { + this.revProvince = revProvince; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public String getUnitCode() { + return unitCode; + } + + public void setUnitCode(String unitCode) { + this.unitCode = unitCode; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUrgentTag() { + return urgentTag; + } + + public void setUrgentTag(String urgentTag) { + this.urgentTag = urgentTag; + } + + public String getPayDate() { + return payDate; + } + + public void setPayDate(String payDate) { + this.payDate = payDate; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/TransactionDetailDTO.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/TransactionDetailDTO.java new file mode 100644 index 00000000..9cd4e3cd --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/dto/res/TransactionDetailDTO.java @@ -0,0 +1,207 @@ +package com.hzya.frame.cbs8.dto.res; + +/** + * @Description 境内账户交易明细 + * @Author xiangerlin + * @Date 2023/12/29 16:40 + **/ +public class TransactionDetailDTO{ + private String accountNo;//银行账号 + private String accountName;//银行名称 + private String bankType;//银行类型 + private String openBank;//开户行名称 + private String bankTransactionDate;//交易日期 + private String bankSerialNumber;//银行流水号 + private String transactionSerialNumber;//交易流水号 + private String currency;//币种 + private String loanType;//借贷类型 + private String incurredAmount;//发生额 + private String accountBalance;//交易后余额 + private String purpose;//用途 + private String digest;//摘要 + private String oppositeAccount;//对方账号 + private String oppositeName;//对方户名 + private String oppositeOpeningBank;//对方开户行 + private String associatedCustomerNumber;//关联客户号 + private String merchantNumber;//客商编号 + private String merchantName;//客商名称 + private String transactionCode;//交易代码 + private String remark;//备注 + private String erpSerialNumber;//erp业务参考号 + + public String getAccountNo() { + return accountNo; + } + + public void setAccountNo(String accountNo) { + this.accountNo = accountNo; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getBankType() { + return bankType; + } + + public void setBankType(String bankType) { + this.bankType = bankType; + } + + public String getOpenBank() { + return openBank; + } + + public void setOpenBank(String openBank) { + this.openBank = openBank; + } + + public String getBankTransactionDate() { + return bankTransactionDate; + } + + public void setBankTransactionDate(String bankTransactionDate) { + this.bankTransactionDate = bankTransactionDate; + } + + public String getBankSerialNumber() { + return bankSerialNumber; + } + + public void setBankSerialNumber(String bankSerialNumber) { + this.bankSerialNumber = bankSerialNumber; + } + + public String getTransactionSerialNumber() { + return transactionSerialNumber; + } + + public void setTransactionSerialNumber(String transactionSerialNumber) { + this.transactionSerialNumber = transactionSerialNumber; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLoanType() { + return loanType; + } + + public void setLoanType(String loanType) { + this.loanType = loanType; + } + + public String getIncurredAmount() { + return incurredAmount; + } + + public void setIncurredAmount(String incurredAmount) { + this.incurredAmount = incurredAmount; + } + + public String getAccountBalance() { + return accountBalance; + } + + public void setAccountBalance(String accountBalance) { + this.accountBalance = accountBalance; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getDigest() { + return digest; + } + + public void setDigest(String digest) { + this.digest = digest; + } + + public String getOppositeAccount() { + return oppositeAccount; + } + + public void setOppositeAccount(String oppositeAccount) { + this.oppositeAccount = oppositeAccount; + } + + public String getOppositeName() { + return oppositeName; + } + + public void setOppositeName(String oppositeName) { + this.oppositeName = oppositeName; + } + + public String getOppositeOpeningBank() { + return oppositeOpeningBank; + } + + public void setOppositeOpeningBank(String oppositeOpeningBank) { + this.oppositeOpeningBank = oppositeOpeningBank; + } + + public String getAssociatedCustomerNumber() { + return associatedCustomerNumber; + } + + public void setAssociatedCustomerNumber(String associatedCustomerNumber) { + this.associatedCustomerNumber = associatedCustomerNumber; + } + + public String getMerchantNumber() { + return merchantNumber; + } + + public void setMerchantNumber(String merchantNumber) { + this.merchantNumber = merchantNumber; + } + + public String getMerchantName() { + return merchantName; + } + + public void setMerchantName(String merchantName) { + this.merchantName = merchantName; + } + + public String getTransactionCode() { + return transactionCode; + } + + public void setTransactionCode(String transactionCode) { + this.transactionCode = transactionCode; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getErpSerialNumber() { + return erpSerialNumber; + } + + public void setErpSerialNumber(String erpSerialNumber) { + this.erpSerialNumber = erpSerialNumber; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/entity/PaymentEntity.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/entity/PaymentEntity.java new file mode 100644 index 00000000..c98cfb5f --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/entity/PaymentEntity.java @@ -0,0 +1,327 @@ +package com.hzya.frame.cbs8.entity; + +import com.hzya.frame.web.entity.BaseEntity; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/6/6 16:17 + **/ +public class PaymentEntity extends BaseEntity { + + private String oaId;//主表id + private String formsonId;//明细表id + private String payCompany;//付款公司 + private String title;//流程标题 + private String tableName;//表名称 + private String billName;//单据名称 + private String referenceNum;//业务参考号 唯一id + private String referenceNumNew;//重试的时候生成新的业务参考号 + private String busType;//业务类型 + private String payResultField;//支付结果字段 + private String payDateField;//打款日期字段 + private String applyCodeField;//支付申请单号字段 + private String receiptFiled;//电子回单字段 + private String summaryId;//summaryid + private String startDate;//单据日期 + private String finishedflag;//流程状态 + private String payDate;//打款日期 + private String payResult;//支付结果 + private String applyCode;//支付申请单号 + private String payAccount;//付款账号 + private String payBankName;//付款开户银行 + private String amount;//金额 + private String purpose;//支付用途 + private String revAccount;//收款账号 + private String revBankName;//收款开户行名称 + private String revBankType;//收款银行类型 + private String revAccountName;//收款账户名称 + private String cnapsCode;//联行号 + private String receipt;//电子回单 + private String currency;//币种 数字 + private String currencyName;//币种 中文 + private String currencyCode;//币种编码 + private String personalFlag;//公私标记 + private String payType;//付款类别 + private String payCompanyCode;//付款公司编码 + + public String getOaId() { + return oaId; + } + + public void setOaId(String oaId) { + this.oaId = oaId; + } + + public String getPayCompany() { + return payCompany; + } + + public void setPayCompany(String payCompany) { + this.payCompany = payCompany; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getBillName() { + return billName; + } + + public void setBillName(String billName) { + this.billName = billName; + } + + public String getReferenceNum() { + return referenceNum; + } + + public void setReferenceNum(String referenceNum) { + this.referenceNum = referenceNum; + } + + public String getReferenceNumNew() { + return referenceNumNew; + } + + public void setReferenceNumNew(String referenceNumNew) { + this.referenceNumNew = referenceNumNew; + } + + public String getBusType() { + return busType; + } + + public void setBusType(String busType) { + this.busType = busType; + } + + public String getPayResultField() { + return payResultField; + } + + public void setPayResultField(String payResultField) { + this.payResultField = payResultField; + } + + public String getPayDateField() { + return payDateField; + } + + public void setPayDateField(String payDateField) { + this.payDateField = payDateField; + } + + public String getReceiptFiled() { + return receiptFiled; + } + + public void setReceiptFiled(String receiptFiled) { + this.receiptFiled = receiptFiled; + } + + public String getSummaryId() { + return summaryId; + } + + public void setSummaryId(String summaryId) { + this.summaryId = summaryId; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getFinishedflag() { + return finishedflag; + } + + public void setFinishedflag(String finishedflag) { + this.finishedflag = finishedflag; + } + + public String getPayDate() { + return payDate; + } + + public void setPayDate(String payDate) { + this.payDate = payDate; + } + + public String getPayResult() { + return payResult; + } + + public void setPayResult(String payResult) { + this.payResult = payResult; + } + + public String getPayAccount() { + return payAccount; + } + + public void setPayAccount(String payAccount) { + this.payAccount = payAccount; + } + + public String getPayBankName() { + return payBankName; + } + + public void setPayBankName(String payBankName) { + this.payBankName = payBankName; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public String getRevAccount() { + return revAccount; + } + + public void setRevAccount(String revAccount) { + this.revAccount = revAccount; + } + + public String getRevBankName() { + return revBankName; + } + + public void setRevBankName(String revBankName) { + this.revBankName = revBankName; + } + + public String getRevBankType() { + return revBankType; + } + + public void setRevBankType(String revBankType) { + this.revBankType = revBankType; + } + + public String getRevAccountName() { + return revAccountName; + } + + public void setRevAccountName(String revAccountName) { + this.revAccountName = revAccountName; + } + + public String getCnapsCode() { + return cnapsCode; + } + + public void setCnapsCode(String cnapsCode) { + this.cnapsCode = cnapsCode; + } + + public String getReceipt() { + return receipt; + } + + public void setReceipt(String receipt) { + this.receipt = receipt; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getCurrencyName() { + return currencyName; + } + + public void setCurrencyName(String currencyName) { + this.currencyName = currencyName; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public String getPersonalFlag() { + return personalFlag; + } + + public void setPersonalFlag(String personalFlag) { + this.personalFlag = personalFlag; + } + + public String getPayType() { + return payType; + } + + public void setPayType(String payType) { + this.payType = payType; + } + + public String getPayCompanyCode() { + return payCompanyCode; + } + + public void setPayCompanyCode(String payCompanyCode) { + this.payCompanyCode = payCompanyCode; + } + + public String getFormsonId() { + return formsonId; + } + + public void setFormsonId(String formsonId) { + this.formsonId = formsonId; + } + + public String getApplyCodeField() { + return applyCodeField; + } + + public void setApplyCodeField(String applyCodeField) { + this.applyCodeField = applyCodeField; + } + + public String getApplyCode() { + return applyCode; + } + + public void setApplyCode(String applyCode) { + this.applyCode = applyCode; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8ExtService.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8ExtService.java new file mode 100644 index 00000000..5f47a625 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8ExtService.java @@ -0,0 +1,60 @@ +package com.hzya.frame.cbs8.service; + +import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/6/7 14:20 + **/ +public interface ICbs8ExtService { + + /** + * 支付经办 + * @param entity + * @return + */ + SysExtensionApiEntity payApply(SysExtensionApiEntity entity); + + /** + * 代发代扣 支付申请 + * @param entity + * @return + */ + SysExtensionApiEntity agentPayApply(SysExtensionApiEntity entity); + + /** + * 交易结果查询 + * @param entity + * @return + */ + SysExtensionApiEntity payResult(SysExtensionApiEntity entity); + + /** + * 交易明细查询 + * @param entity + * @return + */ + SysExtensionApiEntity transactionDetailQuery(SysExtensionApiEntity entity); + /** + * 代发代扣 + * @param entity + * @return + */ + SysExtensionApiEntity payApplyAgent(SysExtensionApiEntity entity); + + /** + * 代发代扣结果查询 + * @param entity + * @return + */ + SysExtensionApiEntity payApplyAgentResult(SysExtensionApiEntity entity); + + /** + * 电子回单查询 + * @param entity + * @return + */ + SysExtensionApiEntity elecQuery(SysExtensionApiEntity entity); + +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8Service.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8Service.java new file mode 100644 index 00000000..9693e554 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/ICbs8Service.java @@ -0,0 +1,65 @@ +package com.hzya.frame.cbs8.service; + +import com.hzya.frame.cbs8.dto.req.*; +import com.hzya.frame.cbs8.dto.res.*; +import com.hzya.frame.cbs8.entity.PaymentEntity; + +import java.util.List; + +/** + * @Description cbs8接口 + * @Author xiangerlin + * @Date 2024/6/6 15:30 + **/ +public interface ICbs8Service { + + /** + * 支付申请 + * @param paymentEntity + */ + PayResponseDTO payApply(PaymentEntity paymentEntity); + + /** + * 通过业务参考号查询交易结果 3.2.6 + * @param resultRequestDTO + * @return + * @throws Exception + */ + List queryPayResult(PayResultRequestDTO resultRequestDTO); + + /** + * 查询电子回单 + * @param elecRequestDTO + * startDate 开始日期 - 必填 + * endDate 结束日期 -必填 + * billStatus 回单状态 1-已取回 0-未取回 ,只有已取回的才能下载 + * settleBusinessReferenceCode 业务参考号 + * @return List + * bucketFileUrl 回单下载地址 + * billFileName 回单文件名称 + * settleBusinessReferenceCode 业务参考号 + */ + List queryElecBill(ElecRequestDTO elecRequestDTO); + + /** + * 查询交易明细 + * @param transactionDetailReqDTO + * @return + */ + CbsResDataDTO queryTransactionDetail(TransactionDetailReqDTO transactionDetailReqDTO); + + /** + * 代发代扣 支付申请 + * @param paymentApplySubmitReqDTO + * @param paymentApplyAgentList + */ + PayResponseDTO agentPayApply(PaymentApplySubmitReqDTO paymentApplySubmitReqDTO, List paymentApplyAgentList); + + /** + * 代发代扣 详情查询 + * @param agentPayResultRequestDTO + * @return + */ + AgentPayResultResDTO agentPayResult(AgentPayResultRequestDTO agentPayResultRequestDTO); + +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ExtServiceImpl.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ExtServiceImpl.java new file mode 100644 index 00000000..68527318 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ExtServiceImpl.java @@ -0,0 +1,216 @@ +package com.hzya.frame.cbs8.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.cbs8.dto.req.*; +import com.hzya.frame.cbs8.entity.PaymentEntity; +import com.hzya.frame.cbs8.service.ICbs8ExtService; +import com.hzya.frame.cbs8.util.CBSUtil; +import com.hzya.frame.cbs8.util.CbsAccessToken; +import com.hzya.frame.stringutil.StringUtil; +import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; +import com.hzya.frame.web.exception.BaseSystemException; +import org.apache.http.protocol.HTTP; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import java.util.*; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/6/7 14:20 + **/ + +@Service(value = "cbs8Ext") +public class Cbs8ExtServiceImpl implements ICbs8ExtService { + + Logger logger = LoggerFactory.getLogger(getClass()); + /** + * 支付经办 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity payApply(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + PaymentEntity paymentEntity = JSONObject.parseObject(bodys,PaymentEntity.class); + if (null != paymentEntity){ + PayRequestDTO payRequestDTO = new PayRequestDTO(); + String ferenceNum = Convert.toStr(paymentEntity.getReferenceNumNew(),paymentEntity.getReferenceNum()); + payRequestDTO.setReferenceNum(ferenceNum); + payRequestDTO.setBusType(paymentEntity.getBusType()); + payRequestDTO.setAmount(paymentEntity.getAmount()); + payRequestDTO.setCurrency(paymentEntity.getCurrency()); + payRequestDTO.setPayAccount(StringUtil.replaceBlank(paymentEntity.getPayAccount())); + payRequestDTO.setRevAccount(StringUtil.replaceBlank(paymentEntity.getRevAccount())); + payRequestDTO.setRevAccountName(StringUtil.replaceBlank(paymentEntity.getRevAccountName())); + payRequestDTO.setRevBankType(StringUtil.replaceBlank((paymentEntity.getRevBankType()))); + payRequestDTO.setRevBankName(StringUtil.replaceBlank(paymentEntity.getRevBankName())); + payRequestDTO.setCnapsCode(StringUtil.replaceBlank((paymentEntity.getCnapsCode()))); + payRequestDTO.setPurpose(paymentEntity.getPurpose()); + payRequestDTO.setErpExtend1(paymentEntity.getPayType()); + //集中支付模式 + if (CBSUtil.CENTRALIZED_PAYMENT_TYPE.equals(payRequestDTO.getBusType())){ + payRequestDTO.setBusiStep("1"); + payRequestDTO.setApplyUnitCode(paymentEntity.getPayCompanyCode()); + payRequestDTO.setPayAccount(null); + } + List list = Arrays.asList(payRequestDTO); + String requestData = JSONObject.toJSONString(list); + //加密 签名 + encrypAndsign(entity,requestData); + } + } + return entity; + } + + /** + * 代发代扣 支付申请 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity agentPayApply(SysExtensionApiEntity entity) { + String boyds = entity.getBodys(); + if (StrUtil.isNotEmpty(boyds)){ + AgentPayRequestDTO agentPayRequest = JSONObject.parseObject(boyds,AgentPayRequestDTO.class); + String requestData = JSONObject.toJSONString(agentPayRequest); + //加密签名 + encrypAndsign(entity, requestData); + } + return entity; + } + + /** + * 交易结果查询 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity payResult(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + PayResultRequestDTO payResultRequest = JSONObject.parseObject(bodys,PayResultRequestDTO.class); + if (null != payResultRequest && StrUtil.isNotEmpty(payResultRequest.getReferenceNum())){ + String requestData = JSONObject.toJSONString(payResultRequest); + //加密 签名 + encrypAndsign(entity,requestData); + }else { + throw new BaseSystemException("业务参考号不能为空!!!!"); + } + } + return entity; + } + + /** + * 交易明细查询 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity transactionDetailQuery(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + TransactionDetailReqDTO transactionDetailReqDTO = JSONObject.parseObject(bodys,TransactionDetailReqDTO.class); + String requestData = JSONObject.toJSONString(transactionDetailReqDTO); + ////加密签名 + encrypAndsign(entity, requestData); + } + return entity; + } + + /** + * 代发代扣 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity payApplyAgent(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + AgentPayRequestDTO agentPayRequest = JSONObject.parseObject(bodys,AgentPayRequestDTO.class); + String requestData = JSONObject.toJSONString(agentPayRequest); + ////加密签名 + encrypAndsign(entity, requestData); + } + return entity; + } + + + + /** + * 代发代扣结果查询 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity payApplyAgentResult(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + AgentPayResultRequestDTO agentPayResultRequestDTO = JSONObject.parseObject(bodys,AgentPayResultRequestDTO.class); + String requestData = JSONObject.toJSONString(agentPayResultRequestDTO); + encrypAndsign(entity,requestData); + } + return entity; + } + + /** + * 电子回单查询 + * + * @param entity + * @return + */ + @Override + public SysExtensionApiEntity elecQuery(SysExtensionApiEntity entity) { + String bodys = entity.getBodys(); + if (StrUtil.isNotEmpty(bodys)){ + ElecRequestDTO elecRequestDTO = JSONObject.parseObject(bodys,ElecRequestDTO.class); + String requestData = JSONObject.toJSONString(elecRequestDTO); + //加密 签名 + encrypAndsign(entity,requestData); + } + return entity; + } + + + /** + * 请求头 + * @param sign + * @param timestamp + * @return + */ + private Map headersValueOf(String sign, long timestamp){ + Map header = new HashMap(); + header.put(CBSUtil.SIGN_HEADER_NAME,sign); + header.put(CBSUtil.TIMESTAMP_HEADER,Long.toString(timestamp)); + header.put(HTTP.CONTENT_TYPE,CBSUtil.TARGET_CONTENT_TYPE); + header.put(CBSUtil.AUTHORIZATION,CBSUtil.BEARER+ CbsAccessToken.getToken()); + return header; + } + + /** + * 加密 签名 + * @param entity 接口转发参数对象 + * @param requestData 请求参数json字符串 + */ + private void encrypAndsign(SysExtensionApiEntity entity, String requestData) { + //签名 + long timestamp = System.currentTimeMillis(); + logger.info("CBS请求参数明文:{}",requestData); + String sign = CBSUtil.sign(requestData,timestamp); + //加密 + byte[] encryptedData = CBSUtil.encrypt(requestData); + Map header = headersValueOf(sign,timestamp); + entity.setByteBodys(encryptedData); + entity.setHeaders(header); + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ServiceImpl.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ServiceImpl.java new file mode 100644 index 00000000..8949397e --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/service/impl/Cbs8ServiceImpl.java @@ -0,0 +1,269 @@ +package com.hzya.frame.cbs8.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapBuilder; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.hzya.frame.cbs8.dto.req.*; +import com.hzya.frame.cbs8.dto.res.*; +import com.hzya.frame.cbs8.entity.PaymentEntity; +import com.hzya.frame.cbs8.service.ICbs8Service; +import com.hzya.frame.cbs8.util.CBSUtil; +import com.hzya.frame.web.entity.JsonResultEntity; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +/** + * @Description cbs8接口 + * @Author xiangerlin + * @Date 2024/6/7 14:44 + **/ +@Service +public class Cbs8ServiceImpl implements ICbs8Service { + Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public PayResponseDTO payApply(PaymentEntity paymentEntity) { + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260001") + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj") + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(JSONObject.toJSONString(paymentEntity)).timeout(60000).execute().body(); + //解密响应报文 + String result = decryptResBody(body); + if (StrUtil.isNotEmpty(result)){ + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + List dataList = cbsResponseDTO.getData(); + if (CollectionUtils.isNotEmpty(dataList)){ + JSONObject o = dataList.get(0); + PayResponseDTO payResponseDTO = JSON.toJavaObject(o, PayResponseDTO.class); + return payResponseDTO; + } + } + return new PayResponseDTO(); + } + + /** + * 通过业务参考号查询交易结果 3.2.6 + * + * @param resultRequestDTO + * @return + * @throws Exception + */ + @Override + public List queryPayResult(PayResultRequestDTO resultRequestDTO) { + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260002") + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj") + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(JSONObject.toJSONString(resultRequestDTO)).timeout(60000).execute().body(); + String result = decryptResBody(body); + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + if (CollectionUtils.isNotEmpty(cbsResponseDTO.getData())){ + List dataList = cbsResponseDTO.getData(); + List payResultList = CBSUtil.convertJsonArrayToList(dataList, PayResultResDTO.class); + return payResultList; + } + return new ArrayList(); + } + + /** + * 查询电子回单 + * + * @param elecRequestDTO startDate 开始日期 - 必填 + * endDate 结束日期 -必填 + * billStatus 回单状态 1-已取回 0-未取回 ,只有已取回的才能下载 + * settleBusinessReferenceCode 业务参考号 + * @return List + * bucketFileUrl 回单下载地址 + * billFileName 回单文件名称 + * settleBusinessReferenceCode 业务参考号 + */ + @Override + public List queryElecBill(ElecRequestDTO elecRequestDTO) { + if (null == elecRequestDTO){ + elecRequestDTO = new ElecRequestDTO(); + } + if (StrUtil.isEmpty(elecRequestDTO.getStartDate())){ + elecRequestDTO.setStartDate(DateUtil.today()); + } + if (StrUtil.isEmpty(elecRequestDTO.getEndDate())){ + elecRequestDTO.setEndDate(DateUtil.today()); + } + String params = JSON.toJSONString(elecRequestDTO, SerializerFeature.WRITE_MAP_NULL_FEATURES, SerializerFeature.QuoteFieldNames); + logger.info("电子回单查询请求参数为:{}", params); + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260005") + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj") + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(params).timeout(60000).execute().body(); + String result = decryptResBody(body); + if (StrUtil.isNotEmpty(result)){ + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + if (null != cbsResponseDTO){ + if (CollectionUtils.isNotEmpty(cbsResponseDTO.getData())){ + List dataList = cbsResponseDTO.getData(); + if (CollectionUtils.isNotEmpty(dataList)){ + JSONObject jsonObject = dataList.get(0); + CbsResDataDTO dataDTO = JSON.toJavaObject(jsonObject, CbsResDataDTO.class); + List elecResponseDTOList = CBSUtil.convertJsonArrayToList(dataDTO.getList(), ElecResponseDTO.class); + return elecResponseDTOList; + } + } + } + } + return null; + } + + /** + * 查询交易明细 + * + * @param transactionDetailReqDTO + * @return + */ + @Override + public CbsResDataDTO queryTransactionDetail(TransactionDetailReqDTO transactionDetailReqDTO) { + //页码 + int currentPage = transactionDetailReqDTO.getCurrentPage(); + //每页条数 + int pageSize = transactionDetailReqDTO.getPageSize(); + if (currentPage == 0){ + currentPage = CBSUtil.DEFAULT_CURRENT_PAGE; + transactionDetailReqDTO.setCurrentPage(currentPage);//页码 + } + if (pageSize == 0){ + pageSize = CBSUtil.DEFAULT_PAGE_SIZE; + transactionDetailReqDTO.setPageSize(pageSize); + } + if (StrUtil.isNotEmpty(transactionDetailReqDTO.getStartDate())){ + transactionDetailReqDTO.setStartDate(DateUtil.today()); + } + if (StrUtil.isNotEmpty(transactionDetailReqDTO.getEndDate())){ + transactionDetailReqDTO.setEndDate(DateUtil.today()); + } + String params = JSON.toJSONString(transactionDetailReqDTO); + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260006") + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj") + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(params).timeout(60000).execute().body(); + String result = decryptResBody(body); + if (StrUtil.isNotEmpty(result)){ + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + if (null != cbsResponseDTO){ + if (CollectionUtils.isNotEmpty(cbsResponseDTO.getData())){ + List list = cbsResponseDTO.getData(); + if (CollectionUtils.isNotEmpty(list)){ + JSONObject jsonObject = list.get(0); + CbsResDataDTO dataDTO = JSON.toJavaObject(jsonObject, CbsResDataDTO.class); + return dataDTO; + } + } + } + } + return new CbsResDataDTO(); + } + + /** + * 代发代扣 支付申请 + * @param paymentApplySubmitReqDTO + * @param paymentApplyAgentList + */ + @Override + public PayResponseDTO agentPayApply(PaymentApplySubmitReqDTO paymentApplySubmitReqDTO, List paymentApplyAgentList) { + AgentPayRequestDTO param = new AgentPayRequestDTO(); + param.setPaymentApplySubmitReqDTO(paymentApplySubmitReqDTO); + param.setPaymentApplyAgentDTO(paymentApplyAgentList); + String params = JSON.toJSONString(param); + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260003") + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj") + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(params).timeout(60000).execute().body(); + String result = decryptResBody(body); + if (StrUtil.isNotEmpty(result)){ + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + List dataList = cbsResponseDTO.getData(); + if (CollectionUtils.isNotEmpty(dataList)){ + JSONObject o = dataList.get(0); + PayResponseDTO payResponseDTO = JSON.toJavaObject(o, PayResponseDTO.class); + return payResponseDTO; + } + } + return new PayResponseDTO(); + } + + /** + * 代发代扣 详情查询 + * + * @param agentPayResultRequestDTO + * @return + */ + @Override + public AgentPayResultResDTO agentPayResult(AgentPayResultRequestDTO agentPayResultRequestDTO) { + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000260004")//数智办公 + .put("publicKey","ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj")//数智财资 + .put("secretKey","7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800026") + .build(); + String params = JSON.toJSONString(agentPayResultRequestDTO); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterfaceToESB").addHeaders(headerMap).body(params).timeout(60000).execute().body(); + //解密报文 + String result = decryptResBody(body); + if (StrUtil.isNotEmpty(result)){ + CbsResponseDTO cbsResponseDTO = JSONObject.parseObject(result, CbsResponseDTO.class); + List dataList = cbsResponseDTO.getData(); + if (CollectionUtils.isNotEmpty(dataList)){ + JSONObject o = dataList.get(0); + AgentPayResultResDTO agentPayResultResDTO = JSON.toJavaObject(o, AgentPayResultResDTO.class); + return agentPayResultResDTO; + } + } + return new AgentPayResultResDTO(); + } + + /** + * 解密响应报文 + * @param body + * @return + */ + private String decryptResBody(String body){ + if (StrUtil.isNotEmpty(body)){ + JsonResultEntity resultEntity = JSONObject.parseObject(body,JsonResultEntity.class); + String bodyBase64 = String.valueOf(resultEntity.getAttribute()); + byte[] bodyBytes = Base64.getDecoder().decode(bodyBase64); + //这里验证一下,如果系统异常 返回的报文没加密 + String test = new String(bodyBytes); + if (JSONUtil.isTypeJSON(test)){ + return test; + } + //解密报文 + String result = CBSUtil.decrypt(bodyBytes); + logger.info("银行响应参数:{}",result); + return result; + } + return null; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CBSUtil.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CBSUtil.java new file mode 100644 index 00000000..602a9124 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CBSUtil.java @@ -0,0 +1,187 @@ +package com.hzya.frame.cbs8.util; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import org.apache.commons.codec.binary.Base64; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * @Description + * @Author xiangerlin + * @Date 2024/6/7 15:38 + **/ +@Component +public class CBSUtil { + /** + * 集中支付模式 + */ + public static final String CENTRALIZED_PAYMENT_TYPE = "401"; + /** + * 分页查询 最大条数 + */ + public static final int MAX_PAGE_SIZE = 1000; + /** + * 默认分页查询条数 + */ + public static final int DEFAULT_PAGE_SIZE = 100; + /** + * 默认页码 + */ + public static final int DEFAULT_CURRENT_PAGE = 1; + static Logger logger = LogManager.getLogger(CBSUtil.class); + + /** + * 请求参数格式 + */ + public static String TARGET_CONTENT_TYPE = "application/json"; + + /** + * 签名请求头参数名 + */ + public static String SIGN_HEADER_NAME = "X-MBCLOUD-API-SIGN"; + /** + * 时间戳请求头参数名 + */ + public static String TIMESTAMP_HEADER = "X-MBCLOUD-TIMESTAMP"; + + public static String ENCRYPTION_ENABLED_HEADER_NAME = "X-MBCLOUD-ENCRYPTION-ENABLED"; + + public static String X_MBCLOUD_COMPRESS = "X-Mbcloud-Compress"; + + /** + * 请求头token参数名 + */ + public static String AUTHORIZATION = "Authorization"; + + /** + *token前缀 + */ + public static String BEARER = "Bearer "; + + /** + * 财资管理云公钥(平台公钥) + */ + public static String bodyEncryptionKey; + + /** + * 企业私钥(加密) + */ + public static String signEncryptionPrivateKey; + + /** + * 企业私钥(解密) + */ + public static String bodyDecryptionKey; + + /** + * 财资管理云公钥(平台公钥) + */ + @Value("${cbs8.cbs_public_key:}") + public void setBodyEncryptionKey(String bodyEncryptionKey) { + CBSUtil.bodyEncryptionKey = bodyEncryptionKey; + } + /** + * 企业私钥(解密) + */ + @Value("${cbs8.ya_private_key:}") + public void setSignEncryptionPrivateKey(String signEncryptionPrivateKey) { + CBSUtil.signEncryptionPrivateKey = signEncryptionPrivateKey; + } + /** + * 企业私钥(解密) + */ + @Value("${cbs8.ya_private_key:}") + public void setBodyDecryptionKey(String bodyDecryptionKey) { + CBSUtil.bodyDecryptionKey = bodyDecryptionKey; + } + + //将json数组转为list + public static List convertJsonArrayToList(List list, Class clazz) { + String jsonArray = JSON.toJSONString(list); + List result = JSON.parseObject(jsonArray, new TypeReference>(clazz) {}); + return result; + } + + /** + * 将时间戳转换成日期字符串 + * @param timestamp + * @return + */ + public static String convertTimestampToString(String timestamp) { + if (StrUtil.isNotEmpty(timestamp) && NumberUtil.isNumber(timestamp)){ + // 创建SimpleDateFormat对象,指定日期时间格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 将时间戳转换为Date对象 + Date date = new Date(Long.valueOf(timestamp)); + + // 使用SimpleDateFormat格式化Date对象,得到字符串表示 + return sdf.format(date); + } + return null; + } + + /** + * 签名 + * @param requestData + * @return + */ + public static String sign(String requestData){ + long timestamp = System.currentTimeMillis(); + return sign(requestData,timestamp); + } + + /** + * 签名 + * @param requestData + * @param timestamp + * @return + */ + public static String sign(String requestData,long timestamp){ + + // 请求数据拼接: 报文体+时间戳 + byte[] requestDataBytes = requestData.getBytes(StandardCharsets.UTF_8); + byte[] timestampBytes = ("×tamp=" + timestamp).getBytes(StandardCharsets.UTF_8); + byte[] newBytes = new byte[requestDataBytes.length + timestampBytes.length]; + System.arraycopy(requestDataBytes, 0, newBytes, 0, requestDataBytes.length); + System.arraycopy(timestampBytes, 0, newBytes, requestDataBytes.length, timestampBytes.length); + + // 生成签名 + byte[] signature = SM2Util.sign(signEncryptionPrivateKey, newBytes); + String sign = Base64.encodeBase64String(SM2Util.encodeDERSignature(signature)); + logger.info("签名:{}", sign); + return sign; + } + + /** + * 加密 + * @param requestData + * @return + */ + public static byte[] encrypt(String requestData){ + byte[] encrypt = SM2Util.encrypt(bodyEncryptionKey, requestData.getBytes(StandardCharsets.UTF_8)); + return encrypt; + } + + public static String decrypt(byte[] cipherData){ + try { + byte[] decrypt = SM2Util.decrypt(bodyDecryptionKey, cipherData); + String text = new String(decrypt); + return text; + }catch (Exception e){ + logger.error("解密失败",e); + e.printStackTrace(); + } + return null; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CbsAccessToken.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CbsAccessToken.java new file mode 100644 index 00000000..341af450 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CbsAccessToken.java @@ -0,0 +1,140 @@ +package com.hzya.frame.cbs8.util; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.web.action.ApplicationContextUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.relational.core.sql.In; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.HashMap; +import java.util.Map; + +/** + * @Description cbs token + * @Author xiangerlin + * @Date 2024/6/7 15:56 + **/ +@Component +public class CbsAccessToken { + + private static final Logger logger = LoggerFactory.getLogger(CbsAccessToken.class); + @Value("${cbs8.appId:}") + private String app_id; + @Value("${cbs8.appSecret:}") + private String app_secret; + @Value("${cbs8.url:}") + private String app_url; + + private static String appId; + private static String appSecret; + private static String url; + @PostConstruct + public void init() { + appId = app_id; + appSecret = app_secret; + url = app_url; + } + //刷新token用 + private static final String BEARER = "Bearer "; + /** + * 过期时间 + */ + private Long expiryTime ; + private String token; + + private CbsAccessToken(){ + + } + private static CbsAccessToken cbsAccessToken = new CbsAccessToken(); + + + public static CbsAccessToken getInstance() { + if (null == cbsAccessToken.token){ + initToken(); + }else { + //判断token有没有过期 + if (System.currentTimeMillis() >= cbsAccessToken.expiryTime){ + initToken(); + }else { + refreshToken(); + } + } + return cbsAccessToken; + } + + public static String getToken(){ + return getInstance().token; + } + /** + * 获取token + */ + private static void initToken(){ + CbsAccessToken ct = (CbsAccessToken) ApplicationContextUtil.getBeanByName("cbsAccessToken"); + logger.info("开始获取cbstoken"); + Map param = new HashMap<>(); + param.put("app_id",ct.appId); + param.put("app_secret",ct.appSecret); + param.put("grant_type","client_credentials"); + String res = HttpRequest.post(ct.url+"/openapi/app/v1/app/token").body(JSONObject.toJSONString(param)).execute().body(); + logger.info("获取cbstoken结果",res); + if (StrUtil.isNotEmpty(res) && JSONUtil.isTypeJSON(res)){ + JSONObject tokenObject = JSONObject.parseObject(res); + String code = tokenObject.getString("code");//0表示成功 + if ("0".equals(code)){ + JSONObject dataObj = tokenObject.getJSONObject("data"); + if (null != dataObj){ + String token = dataObj.getString("token"); + //过期时间 单位是秒 30分钟有效 + Integer expires = dataObj.getInteger("expires"); + cbsAccessToken.token = token; + //提前5分钟让token失效 所以这里设置成过期时间为当前时间+25分钟 + cbsAccessToken.expiryTime = System.currentTimeMillis()+1000*60*25L; + } + } + } + } + + /** + * 刷新token + */ + private static void refreshToken(){ + CbsAccessToken ct = (CbsAccessToken) ApplicationContextUtil.getBeanByName("cbsAccessToken"); + //token不为空,并且没过期 刷新token + if (null != cbsAccessToken.token && System.currentTimeMillis() < cbsAccessToken.expiryTime ){ + String res = HttpRequest.get(ct.url + "/openapi/app/v1/app/refresh-token").header("Authorization", BEARER + cbsAccessToken.token).execute().body(); + logger.info("刷新cbstoken结果",res); + if (StrUtil.isNotEmpty(res) && JSONUtil.isTypeJSON(res)){ + JSONObject tokenObject = JSONObject.parseObject(res); + String code = tokenObject.getString("code");//0表示成功 + if ("0".equals(code)){ + JSONObject dataObj = tokenObject.getJSONObject("data"); + if (null != dataObj){ + //续期的token + String token = dataObj.getString("token"); + //新token过期时间 单位是秒 30分钟有效 + Integer expires = dataObj.getInteger("expires"); + cbsAccessToken.token = token; + //提前5分钟让token失效 所以这里设置成过期时间为当前时间+25分钟 + cbsAccessToken.expiryTime = System.currentTimeMillis()+1000*60*25L; + } + }else { + initToken(); + } + } + }else { + initToken(); + } + } + + public static void main(String[] args) { + System.out.println("第1次取token:"+getToken()); + System.out.println("第2次取token:"+getToken()); + System.out.println("第3次取token:"+getToken()); + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CurrencyEnum.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CurrencyEnum.java new file mode 100644 index 00000000..abde767c --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/CurrencyEnum.java @@ -0,0 +1,137 @@ +package com.hzya.frame.cbs8.util; + +/** + * @Description 币种枚举表 + * @Author xiangerlin + * @Date 2024/6/25 10:20 + **/ +public enum CurrencyEnum { + + CNY("10", "人民币", "CNY", "¥"), + ASF("11", "记帐瑞士法朗", "ASF", "ASF"), + BRL("12", "巴西里亚尔", "BRL", "BRL"), + IDR("13", "印度尼西亚卢比", "IDR", "rps"), + INR("14", "印度卢比", "INR", "rs"), + IRR("15", "伊朗里亚尔", "IRR", "ri"), + JOD("16", "约旦第纳尔", "JOD", "jdr"), + KRW("17", "韩国圆", "KRW", "$"), + KWD("18", "科威特第纳尔", "KWD", "kd"), + MOP("19", "澳门元", "MOP", "pat"), + MXN("20", "墨西哥比索", "MXN", "mex$"), + HKD("21", "港币", "HKD", "HK$"), + MYR("22", "马来西亚林吉特", "MYR", "m$"), + NPR("23", "尼泊尔卢比", "NPR", "nrs"), + NZD("24", "新西兰元", "NZD", "$nz"), + PHP("25", "菲律宾比索", "PHP", "phil"), + PKR("26", "巴基斯坦卢比", "PKR", "prs"), + RUB("27", "俄罗斯卢布", "RUB", "RUB"), + AUD("29", "澳元", "AUD", "A$"), + THB("30", "泰国铢", "THB", "bt"), + TWD("31", "台湾元", "TWD", "$"), + USD("32", "美元", "USD", "US$"), + TZS("33", "坦桑尼亚先令", "TZS", "tsh"), + EUR("35", "欧元", "EUR", "EUR"), + CAD("39", "加拿大元", "CAD", "CAN$"), + GBP("43", "英镑", "GBP", "£"), + JPY("65", "日元", "JPY", "J"), + SGD("69", "新加坡元", "SGD", "S$"), + NOK("83", "挪威克朗", "NOK", "nkr"), + DKK("85", "丹麦克朗", "DKK", "DKr"), + AED("86", "阿联酋迪拉姆", "AED", "AED"), + CHF("87", "瑞士法朗", "CHF", "SF"), + SEK("88", "瑞典克朗", "SEK", "SKR"), + ZAR("89", "南非兰特", "ZAR", "ZAR"), + AOA("71", "安哥拉宽扎", "AOA", "kz"), + DZD("72", "阿尔及利亚第纳尔", "DZD", "AD."), + GHS("73", "塞地", "GHS", "¢"), + KES("74", "肯尼亚先令", "KES", "K.Sh"), + NGN("75", "奈拉", "NGN", "N"), + QAR("76", "卡塔尔里亚尔", "QAR", "QR."), + VND("77", "越南盾", "VND", "D."), + PES("78", "新索尔", "PES", "S/."), + PLZ("79", "兹罗提", "PLZ", "ZL."), + TRY("80", "土耳其镑", "TRY", "£T."), + SAR("81", "亚尔", "SAR", "SAR."), + KZT("82", "哈萨克斯坦腾格", "KZT", "〒"), + CDF("90", "刚果法郎", "CDF", "FC"), + LYD("91", "利比亚第纳尔", "LYD", "LD."), + EGP("92", "埃及镑", "EGP", "£E."), + VEF("93", "委内瑞拉玻利瓦尔", "VEF", "B"), + OMR("94", "阿曼里尔", "OMR", "RO."), + PLN("95", "波兰兹罗提", "PLN", "Zl"), + HUF("96", "匈牙利福林", "HUF", "Ft"), + BDT("97", "孟加拉塔卡", "BDT", "TK"), + LAK("98", "老挝基普", "LAK", "K"), + ZMW("37", "赞比亚克瓦查", "ZMW", "ZM"), + ETB("28", "埃塞俄比亚比尔", "ETB", "Br"), + PRK("34", "巴基斯坦卢比", "PRK", "Rs."), + BND("36", "文莱元", "BND", "B$"), + XOF("38", "西非法郎", "XOF", "XOF"), + PGK("41", "巴布亚新几内亚基纳", "PGK", "PGK"), + LKR("40", "斯里兰卡卢比", "LKR", "LK"), + GNF("46", "几内亚法郎", "GNF", "GNF"), + TND("42", "突尼斯第纳尔", "TND", "TN"), + UZS("44", "乌兹别克斯坦苏姆", "UZS", "UZ"), + XAF("45", "中非法郎", "XAF", "XA"), + SDG("49", "苏丹磅", "SDG", "£S"), + GE("47", "格鲁吉亚拉里", "GEL", "GE"), + MN("48", "蒙图", "MNT", "MN"), + TJS("50", "塔吉克索莫尼", "TJS", "TJS"), + UGX("51", "乌干达先令", "UGX", "UGX"), + CLP("52", "智利比索", "CLP", "CLP"), + MMK("53", "缅元", "MMK", "MMK"), + KHR("54", "柬埔寨瑞尔", "KHR", "KHR"), + BHD("55", "巴林第纳尔", "BHD", "BHD"), + RSD("56", "塞尔维亚第纳尔", "RSD", "RSD"), + KGS("57", "吉尔吉斯斯坦索姆", "KGS", "KGS"), + COP("58", "哥伦比亚比索", "COP", "COP"), + GYD("59", "圭亚那元", "GYD", "GYD"), + ARS("60", "阿根廷比索", "ARS", "ARS"), + CZK("61", "捷克克朗", "CZK", "CZK"), + PEN("62", "秘鲁索尔", "PEN", "PEN"), + RON("63", "罗马尼亚列伊", "RON", "RON"), + UAH("64", "乌克兰格里夫纳", "UAH", "UAH"), + ILS("66", "以色列新谢克尔", "ILS", "ILS"), + IQD("67", "伊拉克第纳尔", "IQD", "IQD"), + ERN("68", "厄立特里亚纳克法", "ERN", "ERN"), + CNH("84", "离岸人民币", "CNH", "CNH"), + MKD("99", "马其顿第纳尔", "MKD", "MKD"); + + private final String code; + private final String chineseName; + private final String internationalCode; + private final String symbol; + + CurrencyEnum(String code, String chineseName, String internationalCode, String symbol) { + this.code = code; + this.chineseName = chineseName; + this.internationalCode = internationalCode; + this.symbol = symbol; + } + + public String getCode() { + return code; + } + + public String getChineseName() { + return chineseName; + } + + public String getInternationalCode() { + return internationalCode; + } + + public String getSymbol() { + return symbol; + } + + //根据币种code获取币种中文名 + public static String getChineseNameByCode(String code) { + for (CurrencyEnum currency : values()) { + if (currency.code.equals(code)) { + return currency.chineseName; + } + } + return null; // 或者抛出异常,表示找不到对应的币种 + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/PayState.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/PayState.java new file mode 100644 index 00000000..0ab494c7 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/PayState.java @@ -0,0 +1,73 @@ +package com.hzya.frame.cbs8.util; + +/** + * @Author:hecan + * @Description:支付类型(支付状态) + * @params: + * @return: + * @Date: 2023/3/14 15:05 + */ +public enum PayState { + a("a","待提交直联"), + b("b","已提交直联"), + c("c","银行已受理"), + d("d","银行未受理"), + e("e","可疑"), + f("f","待人工确认"), + g("g","支付成功"), + h("h","支付失败"), + i("i","部分成功"), + j("j","退票"), + k("k","取消支付"), + n("n","其他"), + p("p","支付中"), + q("q","待支付"), + one("1","待处理"), + two("2","审批中"), + three("3","处理失败"), + four("4","审批完成"), + five("5","审批撤销"), + six("6","审批拒绝"), + seven("7","待发送审批"), + eight("8","集中受理中"), + nine("9","审批退回"), + ten("10","预处理中"), + eleven("11","预处理拒绝"), + twelve("12","资金监控审批中"); + + + //类型 + private String type; + //值 + private String value; + + PayState(String type, String value){ + this.type=type; + this.value=value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static String payStateGetValue(String type){ + for (PayState payState : PayState.values()){ + if(payState.getType()==type||payState.getType().equals(type)){ + return payState.getValue().toString(); + } + } + return null; + } +} diff --git a/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/SM2Util.java b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/SM2Util.java new file mode 100644 index 00000000..46b20936 --- /dev/null +++ b/fw-cbs/src/main/java/com/hzya/frame/cbs8/util/SM2Util.java @@ -0,0 +1,237 @@ +package com.hzya.frame.cbs8.util; + +import org.bouncycastle.asn1.*; +import org.bouncycastle.crypto.engines.SM2Engine; +import org.bouncycastle.crypto.params.*; +import org.bouncycastle.crypto.signers.SM2Signer; +import org.bouncycastle.jce.ECNamedCurveTable; +import org.bouncycastle.jce.spec.ECParameterSpec; +import org.bouncycastle.math.ec.ECCurve; +import org.bouncycastle.math.ec.ECPoint; +import org.bouncycastle.util.encoders.Hex; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.ByteArrayInputStream; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.Base64; +import java.util.Enumeration; + +/** + * @author: xiang2lin + * @time: 2024/6/14 + * @description: SM2加解密工具类 + */ + +public class SM2Util { + static Logger logger = LoggerFactory.getLogger(SM2Util.class); + private SM2Util() { + throw new IllegalStateException("Utility class"); + } + + private static final String STD_NAME = "sm2p256v1"; + + /** + * SM2加密算法 + * + * @param publicKey 公钥 + * @param data 明文数据 + * @return + */ + public static byte[] encrypt(String publicKey, byte[] data) { + ECPublicKeyParameters ecPublicKeyParameters = encodePublicKey(Hex.decode(publicKey)); + SM2Engine engine = new SM2Engine(); + engine.init(true, new ParametersWithRandom(ecPublicKeyParameters, new SecureRandom())); + + byte[] bytes = null; + try { + byte[] cipherText = engine.processBlock(data, 0, data.length); + bytes = C1C2C3ToC1C3C2(cipherText); + } catch (Exception e) { + logger.warn("SM2加密时出现异常:" + e.getMessage()); + } + return bytes; + } + + /** + * SM2解密算法 + * + * @param privateKey 私钥 + * @param cipherData 密文数据 + * @return + */ + public static byte[] decrypt(String privateKey, byte[] cipherData) { + ECPrivateKeyParameters ecPrivateKeyParameters = encodePrivateKey(Hex.decode(privateKey)); + SM2Engine engine = new SM2Engine(); + engine.init(false, ecPrivateKeyParameters); + + byte[] bytes = null; + try { + cipherData = C1C3C2ToC1C2C3(cipherData); + bytes = engine.processBlock(cipherData, 0, cipherData.length); + } catch (Exception e) { + logger.warn("SM2解密时出现异常:" + e.getMessage()); + } + return bytes; + } + + /** + * 签名算法 + * + * @param privateKey 私钥 + * @param data 明文数据 + * @return + */ + public static byte[] sign(String privateKey, byte[] data) { + ECPrivateKeyParameters ecPrivateKeyParameters = encodePrivateKey(hexToByte(privateKey)); + SM2Signer signer = new SM2Signer(); + ParametersWithID parameters = new ParametersWithID(ecPrivateKeyParameters, "1234567812345678".getBytes()); + signer.init(true, parameters); + signer.update(data, 0, data.length); + + byte[] signature = null; + try { + signature = decodeDERSignature(signer.generateSignature()); + } catch (Exception e) { + logger.warn("SM2签名时出现异常:" + e.getMessage()); + } + return signature; + } + + private static byte[] hexToByte(String hex) + throws IllegalArgumentException { + if (hex.length() % 2 != 0) { + throw new IllegalArgumentException(); + } + char[] arr = hex.toCharArray(); + byte[] b = new byte[hex.length() / 2]; + for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) { + String swap = "" + arr[i++] + arr[i]; + int byteInt = Integer.parseInt(swap, 16) & 0xFF; + b[j] = BigInteger.valueOf(byteInt).byteValue(); + } + return b; + } + + private static byte[] C1C2C3ToC1C3C2(byte[] cipherText) throws Exception { + if (cipherText != null && cipherText.length >= 97) { + byte[] bytes = new byte[cipherText.length]; + System.arraycopy(cipherText, 0, bytes, 0, 65); + System.arraycopy(cipherText, cipherText.length - 32, bytes, 65, 32); + System.arraycopy(cipherText, 65, bytes, 97, cipherText.length - 97); + return bytes; + } else { + throw new Exception("SM2 cipher text error, must be more than 96 bytes and in the format C1||C3||C2."); + } + } + + private static byte[] C1C3C2ToC1C2C3(byte[] cipherText) throws Exception { + if (cipherText != null && cipherText.length >= 97) { + byte[] bytes = new byte[cipherText.length]; + System.arraycopy(cipherText, 0, bytes, 0, 65); + System.arraycopy(cipherText, 97, bytes, 65, cipherText.length - 97); + System.arraycopy(cipherText, 65, bytes, cipherText.length - 32, 32); + return bytes; + } else { + throw new Exception("SM2 cipher text error, must be more than 96 bytes and in the format C1||C3||C2."); + } + } + + private static ECPublicKeyParameters encodePublicKey(byte[] value) { + byte[] x = new byte[32]; + byte[] y = new byte[32]; + System.arraycopy(value, 1, x, 0, 32); + System.arraycopy(value, 33, y, 0, 32); + BigInteger X = new BigInteger(1, x); + BigInteger Y = new BigInteger(1, y); + ECPoint Q = getSM2Curve().createPoint(X, Y); + return new ECPublicKeyParameters(Q, getECDomainParameters()); + } + + private static ECCurve getSM2Curve() { + ECParameterSpec spec = ECNamedCurveTable.getParameterSpec(STD_NAME); + return spec.getCurve(); + } + + private static ECPrivateKeyParameters encodePrivateKey(byte[] value) { + BigInteger d = new BigInteger(1, value); + return new ECPrivateKeyParameters(d, getECDomainParameters()); + } + + private static ECDomainParameters getECDomainParameters() { + ECParameterSpec spec = ECNamedCurveTable.getParameterSpec(STD_NAME); + return new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN(), spec.getH(), spec.getSeed()); + } + + private static byte[] decodeDERSignature(byte[] signature) { + ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(signature)); + + byte[] bytes = new byte[64]; + try { + ASN1Sequence primitive = (ASN1Sequence) stream.readObject(); + Enumeration enumeration = primitive.getObjects(); + BigInteger R = ((ASN1Integer) enumeration.nextElement()).getValue(); + BigInteger S = ((ASN1Integer) enumeration.nextElement()).getValue(); + byte[] r = format(R.toByteArray()); + byte[] s = format(S.toByteArray()); + System.arraycopy(r, 0, bytes, 0, 32); + System.arraycopy(s, 0, bytes, 32, 32); + } catch (Exception e) { + logger.warn("decodeDERSignature时出现异常:" + e.getMessage()); + } + return bytes; + } + + public static byte[] encodeDERSignature(byte[] signature) { + byte[] r = new byte[32]; + byte[] s = new byte[32]; + System.arraycopy(signature, 0, r, 0, 32); + System.arraycopy(signature, 32, s, 0, 32); + ASN1EncodableVector vector = new ASN1EncodableVector(); + vector.add(new ASN1Integer(new BigInteger(1, r))); + vector.add(new ASN1Integer(new BigInteger(1, s))); + + byte[] encoded = null; + try { + encoded = (new DERSequence(vector)).getEncoded(); + } catch (Exception e) { + logger.warn("encodeDERSignature时出现异常:" + e.getMessage()); + } + return encoded; + } + + private static byte[] format(byte[] value) { + if (value.length == 32) { + return value; + } else { + byte[] bytes = new byte[32]; + if (value.length > 32) { + System.arraycopy(value, value.length - 32, bytes, 0, 32); + } else { + System.arraycopy(value, 0, bytes, 32 - value.length, value.length); + } + return bytes; + } + } + + + public static void main(String[] args) { + String requestData = "hello啊"; + byte[] encrypt = encrypt("0452d60e72f6a3050d2f8e8f4505f874ef345e15da38fda8dd64b9e756b7231c056dff1674c4826ada424cc78ea36fd58afc50bcefb5d721bf25b179efac2ebb17", requestData.getBytes(StandardCharsets.UTF_8)); + String temp = new String(encrypt); + byte[] decrypt = decrypt("c3509b6df8bdaf84c464daa1b6fa11a8fca77b0e4a6f076ee68487f288278a85", encrypt); + System.out.println("解密完成"+new String(decrypt)); + + String encodeToString = Base64.getEncoder().encodeToString(encrypt); + byte[] decode = Base64.getDecoder().decode(encodeToString); + byte[] decrypt1 = decrypt("c3509b6df8bdaf84c464daa1b6fa11a8fca77b0e4a6f076ee68487f288278a85", decode); + System.out.println("解密完成1"+new String(decrypt1)); + + String base64 = "eyJtc2ciOiLns7vnu5/lvILluLjvvIzor7fnqI3lkI7lho3or5UiLCJkYXRhIjpudWxsLCJjb2RlIjoiNTAwIn0="; + byte[] decode1 = Base64.getDecoder().decode(base64); + String decode2 = new String(decode1); + byte[] decryptbyte = decrypt("83BA7EC821D35F4CB31FF9A51C1EFA520FC52AF828C2337F88E91CF119B07F44", decode1); + System.out.println("解密完成"+new String(decryptbyte)); + } +} diff --git a/fw-cbs/src/main/webapp/WEB-INF/web.xml b/fw-cbs/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..d80081d1 --- /dev/null +++ b/fw-cbs/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index fc53bd54..e6a78b18 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ base-webapp base-core - + fw-cbs