Atitit.收银系统模块架构attilax 总结

Atitit.收银系统模块架构attilax 总结

 

 

 

1常规收银系统模块结构1

1.1. 商品管理1

1.2. 会员系统1

1.3. 报表系统1

1.4. 会员卡系统1

1.5. 库存管理1

2支持的收银硬件设备2

3核心模块收银单处理2

4ISO8583协议3

5jPOS是一个开源的电子交易Java库和框架, 5

5.1.1. jpos-1.6.4 使用JAVA编写的POS机的ISO8583协议组包和解包程序..5

6参考5

 

1. 常规收银系统模块结构

1.1. 商品管理

1.2. 会员系统

1.3. 报表系统

1.4. 会员卡系统

 

1.5. 库存管理

 

2. 支持的收银硬件设备

· 触摸屏。可配置虚拟鼠标。

· 条码扫描枪。可配置虚拟键盘。

· 小票打印机。可配置标准打印机,或支持ESC/POS协议,或支持JavaPOS。如果ESC/POS协议已经被占用了,那只能用串口或并口了。

· 税务打印机。JavaPOS支持。

· 客显设备。 或支持ESC/POS协议,或支持JavaPOS,如果ESC/POS协议已经被占用了,那只能用串口或并口了。

· 钱箱。 与小票打印机连接或支持JavaPOS的。

· 数据连接。 Metrologic Scanpal 2连到串口。

· 称。支持Samsung协议或Dialog1协议。连到收银终端的串口。

· 磁条卡读卡器(MSR)。配置虚拟标准键盘。

 

 

 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

3. 核心模块收银单处理

当前收银单与收银单列表,方便多个单子收银

 

 

 

收银单列表如下图

 

 

 

 

4. ISO8583协议

8583协议是基于ISO8583报文国际标准的包格式的通讯协议,8583包最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。8583包前面一段为位图,它是打包解包确定字段域的关键代替。8583协议多在POS机的开发上使用

 

ISO8583报文(简称8583包)又称8583报文是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。

8583包前面一段为位图,用来确定包的字段域组成情况。

其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。在POS机的开发上时经常要用到,例如回头客会员管理系统在POS机上的应用就是采用8583报文

 

 

 

开始时,金融系统只有IBM这些大的公司来提供设备,象各种主机与终端等。在各个计算机设备之间,需要交换数据。我们知道数据是通过网络来传送的,而在网络上传送的数据都是基于01这样的二进制数据,如果没有对数据进行编码,则这些数据没有人能够理解,属于没有用的数据。起初的X.25SDLC以及现在流行的TCP/IP网络协议都提供底层的通讯编码协议,它们解决了最底层的通讯问题,能够将一串字符从一个地方传送到另一个地方。但是,仅仅传送字符串是没有太大意义的,怎样来解析字符串代表什么内容是非常重要的,否则传送一些“0123abcd”的字符串也是无用的乱码。

    让我们随着时光回到几十年前的某个时刻,假设我们被推到历史的舞台上,由我们来设计一个通用报文协议,来解决金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。此时,技术是在不断的前行,当初IBM一支独秀的局面好像已经不妙了,各种大小不一的公司都进入金融行业以求能有所斩获,呈一片百花齐放的局面。我们怎样来设计一个报文协议,能够将这些如雨后春笋般出现的所有公司都纳入进来,其实也不是一件很简单的事。

    我们还是先一步步的来考虑吧。金融行业其实涉及到的数据内容并不是成千上万,无法统计,恰恰相反,是比较少的。我们都可以在心底数得过来,象交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、23磁数据、交易序列号等,把所有能够总结出来的都总结起来不过100个左右的数据。那我们可以首先简单的设计ISO8583,定义128个字段,将所有能够考虑到的类似上面提到的帐号等金融数据类型,按照一个顺序排起来,分别对应128个字段中的一个字段。每个数据类型占固定的长度,这个顺序和长度我们都事先定义好。这样就简单了,要发送一个报文时,就将128个字段按照顺序接起来,然后将接起来的整串数据包发送出去。

    任何金融软件收到ISO8583包后,直接按照我们定义的规范解包即可,因为整个报文的128个字段从哪一位到哪一位代表什么,大家都知道,只要知道你的数据包是ISO8583包即可,我们都已经定义好了。比如第1个字段是交易类型,长度为4位,第2个字段位是帐号,为19位等等。接收方就可以先取4位,再取接着的19位,依次类推,直到整个数据包128个字段都解完为止。

 

有了这个128bit的报文头,我们就可以只发送需要的5个字段了。怎样组织报文?先放上这128bit,即16个字节的头,然后在头后面放23689字段,这些字段紧挨在一起,36之间也不需要填上45这两个字段了。接收方收到这个报文,它会根据128bit的报文头来解包,它自然知道把第3个字段取出后,就直接在第3字段的后面取第6个字段,每个字段的长度在ISO8583里面都定义好了,很轻松就把数据包解出来了。

    这下好了,为了解决上面的第二问题,我们只是在报文中增加了16个字节的数据,就轻松搞定了,我们把这16个字节称为bit map,即位图,用来表示某个位是否存在。不过我们再稍微优化一下,考虑到很多时候报文不需要128个字段这么多,其一半64个字段都不一定能够用完。那我可以将报文头由128bit减到64bit,只有在需要的时候才把剩下的64bit放到报文里面,这样报文长度不又少了8个字节吗?

5. jPOS是一个开源的电子交易Java库和框架,

能够通过定制和扩展,实现任何特殊的财务交换操作,适合要求高可用性的关键性业务处理过程。 

 

5.0.1. jpos-1.6.4 使用JAVA编写的POS机的ISO8583协议组包和解包程序..

 

 

 

6. 参考

JPos 学习 - - ITeye技术网站.htm

前段时间研究的jpos的文档 日出而作兮勤于外,日落而归兮忙于内 - BlogJava.htm

posted @ 2015-12-25 19:39  attilaxAti  阅读(884)  评论(0编辑  收藏  举报