本系统由24个子系统构成,各系统间通过SOA治理平台通信,采用面向服务的体系架构,涉及WebService(UDDI、WSDL、SOAP)相关技术。开发环境为Jboss+Oracle,UAT、SIT、生产环境为weblogic集群、分布式、Linux系统。从开发环境移植到生产环境时出现EL表达式不兼容情况、以及请求银行系统时被weblogic代理的情况、降低了处理交易的效率,需要修改weblogic参数。以下详细介绍银企直连子系统。

银企直连主要是与银行系统、其它子系统交互和为其它子系统提供接口的系统,自身包含两个子系统MS管理系统和SERVER服务系统。

MS管理系统

银行机构管理:维护全国各个银行网点的基本信息,可从Excel导入由财务公司提供的模板,支持页面变更,同时对外提供接口,由其它子系统增量更新。

财银关系管理:维护财务公司和成员单位银行账户上下级的关系,只有维护过的账户才能通过银企直连正常连接银行做交易。

定时任务设置:使用Quartz框架,设置定时任务时需指定类型,存入数据库后有SERVER系统加载执行,系统运行期间修改定时任务时调用SERVER系统进行同步。

归集策略设置:按设定的策略将成员单位的资金归集到财务公司

基础策略:绑定相关类型的定时任务、金额、归集类型(指定金额、按比例、保留余额),每个策略都可以绑定多个成员单位,绑定后即为归集策略。

临时策略:和归集策略为多对一的关系,有生效日期、失效日期,如果生效日期是 当天,冻结相应的归集策略,否则有SERVER系统每日00:05处理。

生效归集策略时临时策略会失效,删除和失效临时策略时归集策略会生效,所有策略的删除都为物理删除,只改变数据库状态,页面不再显示,导出 EXCEL时显示所有。

SERVER系统的定时任务每日00:05会根据临时策略的有效期切换归集策略和临时策略。

weblogic集群环境下,Quartz框架定时任务会出现不执行的情况,需要先启动其它相关的系统,再启动银企直连。存在定时任务的系统上线后,重启时要避开定时任务执行的时间,以免重启后影响相关业务的执行。

  除此之外,MS还包含下拨策略设置、手动归集、支付状态修改、支付失败处理、归集业务入账、归集资金抹账,手工解冻、查余额、查状态、刷明细、查明细、查账户信息等功能。管理系统中部分功能需要走流程,用户角色由用户管理系统管理,本系统只需要提供流程中间表,处理提交、批准、驳回、重申等情况。

SERVER服务系统(目前交互的银行系统有中国银行、工商银行、交通银行、建设银行、农业银行,接口文档分别由各银行研发中心提供)

  登录银行,使用QuickServer开源Java库快速创建多线程、多客户端TCP服务器应用程序,设置服务端口port,启动QuickServer,其中包含登录银行的服务SignCommandProcessor。

从.propertiies配置文件读取(ResourceBundle)需要登录的银行(工商银行系统),读取系统支持的银行,通过Socket(127.0.0.1,port)请求登录银行的服务,轮询登录系统支持且需要登录的银行并获取Token。

和银行交互时每个银行都有对应的Client类,通过动态容器(蝴蝶容器)从.bcs文件创建各个银行的客户端,通过前置机和银行系统进行交互。

交易状态刷新轮询任务:归集状态刷新、支付状态刷新,循环刷新各个银行。判断银行客户端是否存在,按银行将库中状态为交易待查的交易向银行查询,因为各银行系统对外部系统请求时间间隔都有限制,所以需要在.propertiies文件中保存刷新时间间隔,根据银行编号、重发类型计算重发时间间隔,若new Date().getTime()>System.currentTimeMills(),则发送 银行。

组装报文,每个银行每种交易都需要配置相应的报文模板,每个.ftl模板文件都由bankCode+transCode命名,本系统采用的FreeMarker模板引擎;同理,每个银行系统返回的报文都需要不同的类解析,实现同一个接口,根据bankCode判断。

每个管理器都是轮询任务,重发部分放到run()方法的while循环中,需要定义volatile(原子变量)变量控制线程状态

lock = new ReentrantLock();

c = lock.newCondition();

c.wait(st,TimeUnit. MILLISECONDS);过st时间执行一次

每个支持银行一个线程,启动线程

ExecutorService es = Executor. newSingleThreadExecutor();

Future f = es.submit(new Runnable ());

如果在执行期间出现了失败而终止了此线程,那么如果需要,一个新的线程会代替它执行后续任务。

除此之外,还有交易重发轮询任务(将库中待发送银行的交易发送银行),银行接口状态刷新任务(检查各个银行的前置机是否联通),入账管理任务(轮询查询待入账的数据和调核心通讯异常的数据重发核心记账)。

必须有的定时任务

银行当日明细刷新:循环去银行获取该账号的当日交易明细,解析后进行分类入库,

代理收款的需要掉核心冻结金额,银行端归集的需要掉核心记账,指令归集和支付的需要对比是否有已抹账的数据分别入库或更新状态。

还有账户当日余额刷新、银行历史明细刷新、归集策略切换定时任务,这些都需要在

数据库添加基础数据。

定时任务监控:当部署为集群环境时,为保证只有一台服务器跑定时任务,管理端与服务端的同步接口关闭,管理端有变动定时任务时,修改数据库状态,此类实时监控数据库状态,根据修改的状态来同步服务端的定时任务。

相关接口

       对外提供的接口分三大类:

  1. 信息服务接口:外部系统从银企获取银企维护的基础数据或交易数据
  2. 刷新服务接口:由管理端手动出发触发调银行
  3. 交易服务交口:提供线上支付渠道,调银行接口来进行交易

调用银行接口:

1. 信息查询:主要获取账户的基本信息、余额等

2. 流水刷新:获取指定账号的当日或历史交易流水

3. 支付交易:支付转账、归集等交易接口

  银企与银行系统的通讯都需要通过前置机加密,每个银行都需要部署前置机,交易日志详情都可在前置机下查看,农行的前置机从银行刷回数据不会返回给请求的系统,会以文件的形式保存到前置机指定目录下,由于应用环境和前置机不在同一台机器,可以通过部署ftp的形式共享文件,由银企自行获取。

转载于:https://www.cnblogs.com/grow1016/p/8274411.html

金融资产管理项目-银企直连相关推荐

  1. SAP EPIC 银企直连 农业银行 Socket 接口项目实践

    SAP EPIC 银企直连大部分银行用的是Http 接口,可以直接在SM59中创建 到外部服务器的HTTP连接即可与银行前置机通信,快速进行银企直连接口开发. 少部分银行用的是Socket (农业银行 ...

  2. java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)

    关于讲解SAP中国本地化银企直连系统功能,它通过ECC和S4 HANA 1909两个不同版本的演示来讲解银企直连付款相关功能实施和应用,有兴趣的可以联系微信号:timijia进行付费获取.以下资料仅供 ...

  3. SAP本地化-银企直连

    一.发展历史 2011年,在SAP ECC6 Ehp5中,通过功能增强FIN_LOC_CI_16发布中国版的银企直连(Electronic payment integration with Chine ...

  4. SAP 银企直连 付款报文签名与长度限制处理

    前言 银企直连经常会遇到需要对报文签名,加密验证,比如齐商银行,工商银行等. 齐商银行签名字符串很长,而SAP DMEE 中付款报文字段最大长度只有 1500字符,这要怎么处理? 其实只要在发送报文之 ...

  5. 招行银企直连经验分享

    招行银企直连经验分享 一.项目背景 招投标系统,查询保证金是否缴纳(2.3账户支付信息),代退保证金(3.8支付经办),查询保证金退还状态(3.11支付结果查询) 二.主要功能 受理代付请求 对账:与 ...

  6. JAVA建行银企直连密钥传输交换接口

    建行银企直连密钥加解密传输 最近在做建行银企直连项目,给的接口文档描述的不清楚,在网上找了很久都没有一个能用的例子,在第一步密钥传输交换接口就调试了半个月才解决,下面我将加解密的代码发出来给后来人一些 ...

  7. SAP银企直连系列-1

    1.业务背景 为了减轻财务工作量,实现付款及相关查询和银行直接对接,在SAP系统中实现了与招商银行得银企直连业务. 2.业务场景 涉及到下述四类业务场景: 2-1 支付结算:直接支付(N02031). ...

  8. SAP 深入谈谈银企直连

    一.发展历史 2011年,在SAP ECC6 Ehp5中,通过功能增强FIN_LOC_CI_16发布中国版的银企直连(Electronic payment integration with Chine ...

  9. BDC录屏 EPIC_PROC,银企直连

    目的:用户希望用BDC实现,自动创建EPIC_PROC银企直连的"付款建议"按钮功能 (本想实现以下步骤,创建付款状态,但无法实现) 难点:EPIC_PROC事务码直接录屏没办法捕 ...

最新文章

  1. OpenCV alpha(权因子) 融合举例
  2. PAT——个位数统计(1021)
  3. CSS3自定义滚动条样式
  4. ElasticSearch插件demo
  5. c语言学习加强营(一):switch分支
  6. 小程序 setData 中的坑,其实好像...
  7. 办学10年,进入全国前10名!这所神奇的高校,迎来10岁生日
  8. c++ list容器获取第n给元素_Java总结之容器家族--Collection*
  9. Centos6.8下SVN安装
  10. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
  11. Recovery真的不是难事!
  12. 房屋征收管理系统高保真原型征收项目管理(项目预警)房屋测绘管理(测绘确权)协议管理测绘报表管理web端后台管理系统
  13. 论文笔记_S2D.63_2020-ICRA_LiStereo:从雷达和双目立体图像生成稠密深度图
  14. 案例 - 收藏集 - 掘金
  15. native2ascii编码转换
  16. 【信号处理】语音时域频域频谱图分析含Matlab源码
  17. 【程序员如何买基金 四】个人投资诊断和基金诊断
  18. 安卓开发之Intent使用介绍(显式Intent和隐式Intent)
  19. 解决Access数据库突然变得很大的方法
  20. 用向量求一个点到一条直线垂足的坐标

热门文章

  1. 云鲸扫拖一体机器人说明书_让做家务变的更简单:云鲸智能扫拖一体机器人测评...
  2. 1一10到时的英文单词_1到10的英文怎么写
  3. 从网上搜集的成都火锅资料
  4. Ubuntu服务器直连交换机,网口灯不亮
  5. MyEclipse 设置屏幕护眼色
  6. 浅析Nature Communications和Scientific Reports
  7. android相对于父布局居中,相对布局RelativeLayout(三)
  8. 药店app的布局html,药店列表展示说明.html
  9. Thinkphp6+Layui开源后台管理系统源码
  10. 【再回首:数据库篇】Oracle 开发雷区