跨平台银行代收水费通信接口软件的开发及运行

时间:2022-10-09 02:56:50

跨平台银行代收水费通信接口软件的开发及运行

摘要:利用银行(UNIX平台)许多网点为企业( 一般WINDOWS平台)提供实时、便捷的服务,必须开发接口软件将两个系统有机的联系起来,使银行各个网点完成水费的实时查询、交费、冲帐、对帐、批量处理等代收代办业务,还必须经过测试、调试、运行等环节。

关键词:通信接口软件;企业应用;银行应用;代收代办业

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c

1 引言

银行系统是独立的金融系统,网点多,可以为用户提供方便的服务,要使银行金融系统与自来水收费系统融合起来,这样就需要开发一个接口程序能使二者有机的结合起来,这样程序在此定义为“跨平台银行代收水费通信接口软件”。有了这个系统,用户在银行网点只需提供用户号,通过该系统就可以从自来水收费系统里查找对应用的各种费用包括各种水费及污水处理费,这样可以实现交费,还可以冲帐及重交,对明细帐及总帐等。借助该系统,银行端可以统计及汇总各种费用等等。

2 程序的开发

图1 网络结构示意图

2.1 程序设计思想及思路

2.1.1 设计思想

2.1.1.1 银行柜员系统:利用并修改TCP/IP协议,利用Socket封装TCP/IP包与银行端和企业端交流信息,同时修改两端计费系统的相关信息。

2.1.1.2 银行批量代扣系统:除利用并修改TCP/IP协议,利用Socket封装TCP/IP包与银行端和企业端交流信息,因批量处理耗时超过网络时限,还利用FTP协议与两端交换信息。

2.1.2 理论基础

2.1.2.1 WINDOWS的底层支持

Winsock编程:Winsock是Microsoft Windows下网络编程接口,它包含库函数及Windows的扩展库函数,以便进行编程。Windows Socket也经常被叫做套接字、插座等等,这些名字形象地描绘了WinSock工作的原理:插头和插座只要一插上,就建立了一个网络连接,之后插头和插座就可以通过这个连接交换数据了。

2.1.2.2 DELPHI6.0的技术支持

(1)对WinSock的支持:Delphi 5.0对WinSock编程支持的非常出色,它提供了大量功能强大的Internet控件方便我们进行开发工作,其中大部分控件已经为我们将通讯协议也封装了进去,我们要做的只是简单地定义控件的属性,编写事件的响应代码即可。

(2)ClientSocket与ServerSocket的使用:ClientSocket与ServerSocket是封装了Winsock函数的控件,它们有两种工作模式:阻塞和非阻塞。在阻塞模式下, Socket进行监听连接收发数据会暂时让程序挂起,等Socket操作完成后才能继续进行;在非阻塞模式下,Socket进行监听连接收发数据后会立即返回,操作成功后触发相应的事件处理程序来进行处理。

2.1.2.3 TCP/IP协议和FTP协议的修改和应用

WinSock可以将自定义的数据报文通过TCP/IP协议要求发送和接受到银行和企业的应用系统中。FTP协议通过TCP/IP及传输协议发送和接受报文。

2.1.3 设计思路

2.1.3.1 柜员交易的思路:银行柜员交易系统利用Winsock监听并接受银行端发来的报文,分析以后,确认是何种请求,如查询、交费、冲帐、对帐等,访问并修改企业端数据库,得到结果以后,生成新的报文,利用并修改TCP/IP传送到银行端。

2.1.3.2 批量代扣的思路:(1)银行先生成批量查询请求文本(每行都是1102报文格式)并通过ftp传给自来水公司,然后发送批量查询请求报文(1101)、自来水公司返回是否已经收到银行的批量查询请求文本(1101)。(2)银行查询批量查询结果文件是否生成(1103),自来水公司返回生成的结果文件名(1103),并将批量查询的户号做冻结处理。(3)银行根据查询所得的结果文件名,通过ftp方式取回来,结果文件格式每行都是1102报文格式。(4)银行向主机系通请求扣款,如一个水表号有多条欠费记录,则扣几次。(5)银行解析主机返回的结果文件,记录数据库。……

2.2 程序功能要求及数据和报文的定义

2.2.1 功能要求

银行柜员系统功能要求

(1)查询:通过输入用户号,可以查询到每个月的欠费明细,包含水费和违约金。

(2)交费:通过输入用户号、金额,按月交费。一般交到整数金额。每比对应一个流水号。

(3)冲帐:通过输入流水号冲相应帐款,并生成新的流水号。只能冲当天的帐。

(4)对总帐:通过输入年月日,计算当天的收费及下帐金额。系统返回总帐平或不平。

(5)对明细帐:如果总帐不平,自动按交易流水号对每笔明细帐,返回平或不平。

(6)自助银行交费:用户通过INTERNET网,从卡上划拨金额进行交易,冲抵水费。

银行批量代扣系统功能要求

(1)批量查询:银行通过FTP协议,根据用户号,可以查询到所有用户每个月的欠费明细,包含水费和违约金。(2)批量代扣: 银行通过FTP协议,根据用户号,所有用户每个月的欠费明细,包含水费和违约金,从对应的卡上扣款。(3)批量冲帐:银行通过FTP协议,根据交易流水号,冲掉批量代扣交易的对应水费。(4)批量对总帐:通过输入年月日,计算当天批量代扣的收费及下帐金额。系统返回总帐平或不平。(5)批量对明细帐:如果总帐不平,自动按批量代扣的交易流水号对每笔明细帐,返回平或不平。

2.2.2 数据定义

各种字段的定义如下:

2.2.3 报文定义

(1)柜员交易格式的定义

①包结构(交易包均为定长包,由以下结构构成。)

②交易包定义:

包括查询、交费、冲帐、对总帐、对明细帐等,下面以查询为例详细说明(长度=4+2+4+7=17)。

欠费查询试验数据

③ 对帐:对帐流程根据具体要求进行定义,建议每天下午定时对帐。

6100对总帐申请;如对帐成功,退出;如对帐不成功,发7100明细对帐包。

④ 交易码定义:1100查询类2100缴款类 3100冲帐类 4100补打发票类 6100对帐。

⑤ 返回码定义(可讨论):00成功 01无欠费02交易资料不存在。

⑥ 地区码定义: 0566池州市…。

⑦ 银行代码定义:01中国银行 …。

⑧ 数据填写规范:用户号、用户名、发票号等非数值类数据左对齐右补空格。

如:2658688

(2) 批量报文格式以及文本内容包括:批量查询请求报文 、批量查询文件(通过ftp传给自来水公司)内容、批量查询返回文件(通过ftp)内容、银行查询批量查询结果文件名、批量入帐文件内容(每行的格式一样)、批量销帐请求报文等。下面以批量查询文件(通过ftp传给自来水公司)内容为例说明。

批量查询返回文件(通过ftp)内容

2.3开发工具的选择:Windwos 2000、MSSQL2000(或ORACLE)、DELPHI6.0、JAVA 。

2.4软件的开发过程及内容

2.4.1程序主要流程

监听接收分析请求 访问数据库 修改计费信息 打包 封装 发送

2.4.2主要程序介绍

2.4.2.1主要过程介绍

查询返回字符串;交费返回字符串;交费返回字符串;冲帐返回字符串;补票;对总帐返回字符串;对明细帐返回字符串;增加字符串; 除去空格符;汉字增加空格字符;尾部加零;交费返回字符串;批量查询请求返回字符串;批量查询请求返回字符串;批量查询结果;批量销帐返回字符串;批量销帐返回字符串。

4.2.2主程序介绍

procedure TForm1.SocketServerClientRead(Sender: TObject; Socket: TCustomWinSocket);

begin

brxx:=socket.ReceiveText;

jym:=brxx[5]+brxx[6]+brxx[7]+brxx[8];

case strtoint(jym) of

1100:

if length(brxx)=21 then //判断字符是否收全

begin

brjymcx:=jym; //保留拨入信息

bryhdmcx:=copy(brxx,9,2);//保留拨入信息

brdqdmcx:=copy(brxx,11,4); //保留拨入信息

bryhhcx:=copy(brxx,15,7); //保留拨入信息

cxfh();//拼查询返回字符串

Socket.sendText(cxhfz);

end

else

begin

wxzfcx:='0006051100';

socket.SendText(wxzfcx);

end;

1101:

if length(brxx)=64 then //判断字符是否收全

......

End.

3 网络及相关软件配制

3.1 局域网的网络配置:网关路由器的配置: 172.252.25.1,前置通信机:网关地址:172.252.25.1,内网IP:192.168.1.*,外网IP:172.252.25.*,端口号:3330,协议TCP/IP,数据库服务器IP:192.168.1.1,WEB服务器IP:192.168.1.2 。

3.2 相关软件的配置及工作过程:网关路由器的配置:通过厂家提供的驱动程序调试修改。前置通信机: 安装WindowsXP等操作系统、SQL2000客户端、 银行代收水费通信系统、端口:3330。数据库服务器: 安装Windows Server 2000、 SQL Server 2000,包含客户端和服务器端软件的安装。

4 测试及运行

4.1 测试过程(分查询、交费、冲帐、对总帐、批量等)

例如柜台查询:

发送:001711000105661001001

返回:01570011001001009池口轧花厂宿舍 000001-0090000086.010000000.000000000.00022003090000083.510000069.2600000000152006050000002.500000000.000000000002

4.2 运行过程出现问题的分析:(1) 由于服务器端SOCKETSERVER没有释放,而客户端强制占用服务器时(包含银行端),服务器端提示错务:10063。(2) 由于通信线路故障或通信设备通信中数据丢失时,导致客户端与用服务器端不同步时(包含银行端),服务器端提示错务:10053。

5 结束语

本文重点分析了如何定义银行和企业的通信协议,以及通过该协议如何编写通信程序的内容,同时本文还分析了如何建立该通信网络使通信程序正常运转。

主要的结论:通过通信程序使银行端客户程序只能按规定动作访问企业服务器,从而服务于用户。

参考文献:

[1]张晓林,侯宝稳,吴宝江.Oracle DBA数据库系统管理与应用[M].北京:清华大学出版社,2007.

[2]张志强.Windows编程技术[M].北京:机械工业出版社,2003.

[3]史彦军.DElPHI5.0开发大全[M].北京:水利水电出版社, 2000.354-359.

[4]刘啸,汪启伟.Delphi 高级编程[M].北京:人民邮电出版社,2002.312-326.

上一篇:低成本构建校园网格 下一篇:使用XML基于Web的数据挖掘及其应用