Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangxinjiang
yifu-mvp
Commits
23ca7aa0
Commit
23ca7aa0
authored
Dec 02, 2025
by
huyuchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
huych-对公转账接口和支付指令查询接口提交
parent
7af29fe5
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
208 additions
and
2 deletions
+208
-2
IcbcTransactionFlowQueryController.java
...v1/ekp/controller/IcbcTransactionFlowQueryController.java
+28
-2
IcbcTransactionFlowQueryService.java
.../plus/v1/ekp/service/IcbcTransactionFlowQueryService.java
+4
-0
IcbcTransactionFlowQueryServiceImpl.java
...ekp/service/impl/IcbcTransactionFlowQueryServiceImpl.java
+176
-0
No files found.
yifu-ekp/yifu-ekp-biz/src/main/java/com/yifu/cloud/plus/v1/ekp/controller/IcbcTransactionFlowQueryController.java
View file @
23ca7aa0
...
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
...
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
/**
/**
*
聚富通到账通知交易流水查询
*
银企互联相关功能
*
*
* @author huyc
* @author huyc
* @date 2024-05-23 10:24:12
* @date 2024-05-23 10:24:12
...
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RestController
@RequiredArgsConstructor
@RequiredArgsConstructor
@RequestMapping
(
"/icbcQuery"
)
@RequestMapping
(
"/icbcQuery"
)
@Tag
(
name
=
"
聚富通到账通知交易流水查询
"
)
@Tag
(
name
=
"
银企互联相关功能
"
)
public
class
IcbcTransactionFlowQueryController
{
public
class
IcbcTransactionFlowQueryController
{
private
final
IcbcTransactionFlowQueryService
icbcTransactionFlowQueryService
;
private
final
IcbcTransactionFlowQueryService
icbcTransactionFlowQueryService
;
...
@@ -134,4 +134,30 @@ public class IcbcTransactionFlowQueryController {
...
@@ -134,4 +134,30 @@ public class IcbcTransactionFlowQueryController {
public
R
getMeatebillreceive
()
{
public
R
getMeatebillreceive
()
{
return
icbcTransactionFlowQueryService
.
getMeatebillreceive
();
return
icbcTransactionFlowQueryService
.
getMeatebillreceive
();
}
}
/**
* @param
* @Description: 支付指令提交
* @Author: huyc
* @Date: 2025/12/1
* @return:
**/
@Operation
(
summary
=
"支付指令提交"
,
description
=
"支付指令提交"
)
@PostMapping
(
"/submit"
)
public
R
submitPayment
()
{
return
icbcTransactionFlowQueryService
.
executePayment
();
}
/**
* @param
* @Description: 支付指令查询
* @Author: huyc
* @Date: 2025/12/1
* @return:
**/
@Operation
(
summary
=
"支付指令查询"
,
description
=
"支付指令查询"
)
@PostMapping
(
"/submitSearch"
)
public
R
submitSearch
()
{
return
icbcTransactionFlowQueryService
.
submitSearch
();
}
}
}
yifu-ekp/yifu-ekp-biz/src/main/java/com/yifu/cloud/plus/v1/ekp/service/IcbcTransactionFlowQueryService.java
View file @
23ca7aa0
...
@@ -46,4 +46,8 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo>
...
@@ -46,4 +46,8 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo>
**/
**/
R
getMeatebillreceive
();
R
getMeatebillreceive
();
R
executePayment
();
R
submitSearch
();
}
}
yifu-ekp/yifu-ekp-biz/src/main/java/com/yifu/cloud/plus/v1/ekp/service/impl/IcbcTransactionFlowQueryServiceImpl.java
View file @
23ca7aa0
...
@@ -38,6 +38,7 @@ import java.util.ArrayList;
...
@@ -38,6 +38,7 @@ import java.util.ArrayList;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.concurrent.ThreadLocalRandom
;
/**
/**
* 聚富通到账通知交易流水查询
* 聚富通到账通知交易流水查询
...
@@ -599,6 +600,181 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
...
@@ -599,6 +600,181 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
return
R
.
ok
();
return
R
.
ok
();
}
}
@Override
public
R
executePayment
()
{
// 获取当前时间
LocalTime
currentTime
=
LocalTime
.
now
();
// 使用DateTimeFormatter格式化
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"HHmmssSSS"
);
String
formattedTime
=
currentTime
.
format
(
formatter
);
DefaultIcbcClient
client
=
new
DefaultIcbcClient
(
icbcConfigProperties
.
getAppId
(),
IcbcConstants
.
SIGN_TYPE_CA_SM_ICBC
,
icbcConfigProperties
.
getAppPrivateKey
(),
IcbcConstants
.
CHARSET_UTF8
,
IcbcConstants
.
FORMAT_JSON
,
null
,
null
,
null
,
icbcConfigProperties
.
getCaSm
(),
null
);
client
.
setIcbc_ca
(
icbcConfigProperties
.
getCaSmIcbc
());
try
{
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestBizV2
bizContent
=
new
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestBizV2
();
MybankEnterprisePayPayentRequestV2
request
=
new
MybankEnterprisePayPayentRequestV2
();
// 数据进行赋值
String
seqNo
=
"AHWX"
+
System
.
currentTimeMillis
();
//交易代码
bizContent
.
setTransCode
(
"QHISD"
);
bizContent
.
setTranDate
(
DateUtil
.
getThisDay
());
bizContent
.
setTranTime
(
formattedTime
);
bizContent
.
setLanguage
(
"zh_CN"
);
//指令包序列号:系统产生,一个集团永远不能重复
bizContent
.
setfSeqNo
(
seqNo
);
bizContent
.
setZipFlag
(
"0"
);
//入账方式:0:逐笔记账;2:并笔记账
bizContent
.
setSettleMode
(
"2"
);
//总笔数
bizContent
.
setInstrCount
(
1
);
//总金额:以分为单位
bizContent
.
setTotalAmount
(
1L
);
bizContent
.
setZip
(
""
);
List
<
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestRdV2
>
rd
=
new
ArrayList
<>();
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestRdV2
rdV2
=
buildPayRecord
(
seqNo
);
rd
.
add
(
rdV2
);
bizContent
.
setRd
(
rd
);
request
.
setServiceUrl
(
"https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/payent/V2"
);
request
.
setBizContent
(
bizContent
);
MybankEnterprisePayPayentResponseV2
response
=
client
.
execute
(
request
);
//huych-注意response中有发送成功的指令号。需保存
//result 指令状态:0:提交成功,等待银行处理 1:授权成功,等待银行处理 2:等待授权 3:等待二次授权 4:等待银行答复 5:主机返回待处理
// 6:被银行拒绝 7:处理成功 8:指令被拒绝授权 9:银行正在处理 10:预约指令 11:预约取消 12:等待监管审批
// 13:监管审批成功,等待银行处理 14:指令被监管审批拒绝 40:待确认 41:客户取消 42:等待华商审批 43:华商审批成功
if
(
response
.
isSuccess
())
{
// 业务成功处理
return
R
.
ok
();
}
else
{
// 失败
return
R
.
failed
(
"工行支付指令提交失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"工行支付指令提交失败"
,
e
);
throw
new
RuntimeException
(
"支付指令提交失败"
,
e
);
}
}
@Override
public
R
submitSearch
()
{
// 获取当前时间
LocalTime
currentTime
=
LocalTime
.
now
();
// 使用DateTimeFormatter格式化
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"HHmmssSSS"
);
DefaultIcbcClient
client
=
new
DefaultIcbcClient
(
icbcConfigProperties
.
getAppId
(),
IcbcConstants
.
SIGN_TYPE_CA_SM_ICBC
,
icbcConfigProperties
.
getAppPrivateKey
(),
IcbcConstants
.
CHARSET_UTF8
,
IcbcConstants
.
FORMAT_JSON
,
null
,
null
,
null
,
icbcConfigProperties
.
getCaSm
(),
null
);
client
.
setIcbc_ca
(
icbcConfigProperties
.
getCaSmIcbc
());
try
{
MybankEnterprisePayQpayentRequestV1
.
MybankEnterprisePayQpayentRequestBizV1
bizContent
=
new
MybankEnterprisePayQpayentRequestV1
.
MybankEnterprisePayQpayentRequestBizV1
();
MybankEnterprisePayQpayentRequestV1
request
=
new
MybankEnterprisePayQpayentRequestV1
();
String
seqNo
=
"AHWX"
+
System
.
currentTimeMillis
();
bizContent
.
setTransCode
(
"QHISD"
);
bizContent
.
setTranDate
(
"20251201"
);
bizContent
.
setTranTime
(
"103231001"
);
bizContent
.
setLanguage
(
"zh_CN"
);
bizContent
.
setfSeqNo
(
seqNo
);
bizContent
.
setQryfSeqno
(
"null"
);
//待查平台交易序列号
bizContent
.
setQrySerialNo
(
"KRJ113228907767190"
);
request
.
setServiceUrl
(
"https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/qpayent/V1"
);
request
.
setBizContent
(
bizContent
);
MybankEnterprisePayQpayentResponseV1
response
=
client
.
execute
(
request
);
if
(
response
.
isSuccess
())
{
// 业务成功处理
return
R
.
ok
();
}
else
{
// 失败
return
R
.
failed
(
"查询失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"工行支付指令查询失败"
,
e
);
throw
new
RuntimeException
(
"支付指令查询失败"
,
e
);
}
}
private
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestRdV2
buildPayRecord
(
String
seqNo
)
{
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestRdV2
payRecord
=
new
MybankEnterprisePayPayentRequestV2
.
MybankEnterprisePayPayentRequestRdV2
();
//业务唯一编号:相同指令不重复
payRecord
.
setUniBusiId
(
generateUniBusiId
());
//指令顺序号:每笔指令的序号,本包内不重复
payRecord
.
setiSeqNo
(
seqNo
);
//预约日期
// payRecord.setScheduleDate("20251126");
//对公对私标志:0:对公;1:个人
payRecord
.
setPayeeType
(
"0"
);
//币种:ISO币种,仅支持人民币
payRecord
.
setCurrency
(
"CNY"
);
//记账处理方式:1:加急;2:普通;3:跨行快汇
payRecord
.
setPayType
(
"1"
);
//付款方账户名称
payRecord
.
setPayerCnname
(
"安徽皖信人力资源管理有限公司"
);
payRecord
.
setPayerAccount
(
"1302010109024596014"
);
//付款方账户英文名称:账号付款时,中文名称、英文名称至少输入一项
payRecord
.
setPayerEnname
(
""
);
//收款方账号:收方不支持NRA账号
payRecord
.
setPayeeAccount
(
"1302015209250019444"
);
//收款方账户名称
payRecord
.
setPayeeCnname
(
"安徽易服智享信息科技有限公司"
);
//收款方账户英文名称
// payRecord.setPayeeEnname("");
//收款方系统内外标志:1:工行;2:他行
payRecord
.
setIoFlag
(
"1"
);
//同城异地标志:1:同城;2:异地
payRecord
.
setSameCityFlag
(
"1"
);
//收款方所在城市名称
// payRecord.setPayeeCity("合肥市");
//收款方行号:跨行指令要求对方行行号和行名上送正确
// payRecord.setPayeeBankNo("102100099996");
//收款方行名
// payRecord.setPayeeBankName("");
//金额:以分为单位
payRecord
.
setAmount
(
1L
);
//用途代码
// payRecord.setPurposeCode(record.getPurposeCode());
//用途中文描述:用途代码和用途中文描述二选一上送
payRecord
.
setPurpose
(
"转账"
);
//摘要
payRecord
.
setSummary
(
"测试转账"
);
//英文备注
// payRecord.setSummaryEn(record.getSummaryEn());
//附言:不得有非法字符,包括 ' " : %
// payRecord.setPostscript(record.getPostscript());
//业务编号(业务参考号)
// payRecord.setRefNo(record.getRefNo());
//相关业务编号
// payRecord.setRelatedRefNo(record.getRelatedRefNo());
//ERP流水号
// payRecord.setErpSerialNo(record.getErpSerialNo());
//ERP支票号
// payRecord.setErpCheckNo(record.getErpCheckNo());
//业务代码
// payRecord.setBusiCode(record.getBusiCode());
//原始凭证种类
// payRecord.setOriVoucherType(record.getOriVoucherType());
//原始凭证号
// payRecord.setOriVoucherNo(record.getOriVoucherNo());
//原始凭证名称
// payRecord.setOriVoucherName(record.getOriVoucherName());
//预先审批编号
// payRecord.setPreApprovalNo(record.getPreApprovalNo());
//监管用途代码:0:无用途 1:工资及退休金 2:贷款 3:采购款 4:借款 5:拨款 6:还款 7:交款 8:差旅费 9:运费 10:保证金 11:投资 99:其他
// payRecord.setRegulationPurposeCode(record.getRegulationPurposeCode());
return
payRecord
;
}
private
String
generateUniBusiId
()
{
return
"UNI"
+
System
.
currentTimeMillis
()
+
ThreadLocalRandom
.
current
().
nextInt
(
1000
,
9999
);
}
private
void
initValue
(
MybankEnterpriseTradeQhisdResponseV1
.
MybankEnterpriseTradeQhisdResponseRdV1
entry
,
private
void
initValue
(
MybankEnterpriseTradeQhisdResponseV1
.
MybankEnterpriseTradeQhisdResponseRdV1
entry
,
EKPEntryPushParam
pushParam
,
String
bankName
,
String
bankNo
)
throws
ParseException
{
EKPEntryPushParam
pushParam
,
String
bankName
,
String
bankNo
)
throws
ParseException
{
pushParam
.
setFd_recipName
(
entry
.
getRecipName
());
pushParam
.
setFd_recipName
(
entry
.
getRecipName
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment