• 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

  • 相关阅读:
    flutter开发dart基本数据类型与java、kotlin、oc、swift对照表
    flutter输入框TextField设置高度以及背景色等样式的正确姿势
    flutter开发tab页面嵌套滚动的最简洁实现方式
    flutter开发自定义ExpandListView分组列表组件
    RedisUtil-redisTemplate-setNX
    数据库无限层级分类设计
    魔方
    CountDownLatch在SpringBoot中配合@Async使用
    会话刷新Token校验流程
    Mybatis 夺命十八问,顶不住了!
  • 原文地址:https://www.cnblogs.com/attilax/p/15198819.html
Copyright © 2020-2023  润新知