一、专题讨论
hi大家好!之前看到群里分享了很多关于账务、会计、清算、对账的干货。我这次跟大家分享线下支付受理终端—POS的基本工作原理。近年来POS也不断更新换代,这里针对通用的能力做分享,有不准确的地方请大家指正。
POS(point of sale)算是一种终端,附属于计算机的一种设备。终端本身并不怎么处理程序和信息,而是将收集的信息发送给主机,由主机处理,然后将主机处理的结果反映出来。
1.POS交易
这是一个过程性的概念,描述了如过程:
在POS上选择一种交易(消费,取现,改密等等),然后刷卡\插卡,再输入交易金额,持卡人密码等由POS提示要求输入的信息,POS将这些数据集中(打包)以某种方式发送给主机。
主机接收到此信息后,将它分解成原来各自独立的信息(解包),交给帐务处理程序处理,然后将处理结果(主要是一个返回码,有时可能有手续费,授权码等附加信息)再打包,发回给POS;
POS接收到返回信息后,解包进行相应处理(显示,打印,记POS流水等)
上面这三部分是紧密结合的,任何一部分未顺利完成,则不能算是一次完整的交易。可能是“通讯失败”、“POS出错”、“主机出错”或“数据库出错”。
2.交易成功
主机返回“成功”的返回码(一般是“00”),可能还有一些附加信息。例如:查询要返回余额;授权要返回授权码,有时还有“部分批准金额”(比如想取10000元,但卡上余额5000元,透支额度2000元,这7000元就是“部分批准金额”);有时消费或取款也会返回授权码。
3. 交易失败
主机返回码不是“00”,返回码代表交易失败的原因。例如:“55”–持卡人密码不符,“03”–商户号错,“23”–余额不足等等。
4. 账务处理程序
银行主机内,对账户数据库操作的程序。这部分程序将POS送上来的数据进行实际的处理:检查信用卡是否过期,卡密码是否符合,将钱从持卡人账户中扣除,进入清算流程。
5. 前置机
在老的银行系统中,交易数据送到银行后,直接到主机,所有的处理(判断个人密码合法性,判断POS合法性,账务处理等)都在主机处理。新架构中,在银行主机之前搭建前置机,主要处理判断合法性等内容,以保证送到银行主机的数据是合法的,减轻主机负担,并担负管理终端设备(POS、ATM)的程序运行。
6. 自动冲正
当POS发送的数据被主机接收,主机已作相应的处理,但返回码因为各种原因(断电,线路故障)使POS没收到返回信息。这样POS无法知道主机的结果,于是会发冲正给主机,主机将相应交易置为无效,并返回信息告诉POS完成冲正。具体有两种实现:1. 一笔交易未收到返回信息,则一直发冲正,直到成功为止。2. 未收到返回信息,可按“取消”键退回主菜单,这时可作一些脱机交易(比如IC卡),因此后者有较多的优势。
7. POS流水
即“POS流水账”。POS完成一笔成功的交易(即引起银行帐户内金额改变,比如:消费,取款,存款,转帐),这种交易必须确保不出错。为此在POS内将这笔交易的内容(卡号,金额等等)记录下来,以备在结算时再与主机核对,或者供人工查询。
8. POS结算
一般是在“日终”进行,主要目的是将POS在这一天所做过的转账类交易与主机上的记录核对一次,然后把POS流水中的记录删掉,供第二天使用。结算时一般核对该POS交易的总金额和总笔数,若POS总金额和总笔数中的某一个与主机不同,主机返回“核对不平”,POS就必须进行“批上送”,虽然这样不能检查出所有的错误,但是在自动冲正等安全措施保证下,结算时出错的概率已相当低,正好总金额和总笔数还相同,这种概率更低。 大家可能觉得每日POS结算时全部进行交易批上送比较安全,但这种方法实操性不强,POS一日的交易量会很大,一次批上送时间很长体验会较差。
9. 批上送
结算核对不平时,POS将流水逐条送到主机,主机逐条核对,作相应处理,然后POS才能删掉POS流水。在批上送结束之前不能作联机交易。一般来说,POS记录的金额就是实际的交易金额,人为修改也不可能,而主机上的数据虽有各种措施尽量保证数据的正确性,但不可能绝对正确,数据库也可能被人为修改,所以在核对数据和批上送时,大多以POS数据为准。但更保险的做法,是将POS与主机对不上的交易另外记录到一个数据库中,然后等待商户将打印票据送回,再由人工核对。
10. 通讯协议
同步通讯协议与 异步通讯协议 通常说的POS可以走同步、走异步就是指可以使用这两种通讯协议。 我们知道数据通讯就是两个通讯者之间发送、接收数字信号。假设发送以下一串数据: 12,23,34,45,56,67,78,89接收方要正确的接收这些数据,就必须知道数据什么时候开始,什么时候结束。否则会将信号收错。对于同步通讯协议,发送方在发送数据之前先发送一特殊的电信号,让接收方准备好接收数据,然后发送方就将以上数据连续发出,全发送完毕,再发送另一特殊的电信号表示结束。对于异步通讯协议,发送方每发送一个数值之前都发一“开始”标志,每个数值发送结束都发送一个“结束”标志。
11. 8583数据格式
发送方发来的串数据,接收方如何能知道哪部分是卡号,哪部分是交易金额。因此通讯双方必须约定,比如:前16个数据是卡号,然后8个数值是密码••••••,当然8583数据格式没有这么简单,它是一种复杂的数据组合。8583数据格式是一种国际标准,它规定了金融交易的某些数据是必须在数据包中出现,但有些数据可出现也可不出现;数据包中某些部分被规定给某种数据使用,但还有很多部分的用途可以自己定义。
12. 打包和解包
各种数据(卡号,密码等)原来是分散存放的,在发送之前,必须按数据格式的规定,将这些分散的数据联成一串连续的数据串,这就是打包。接收到连续的数据后,要使用某一数据,必须按照数据格式的规定从数据包中将这一数据分离出来,这就是解包。
13.网控器NAC
网控器主要有两个厂家:澳大利亚的Hypercom;香港的“瑞伯科技”。瑞伯科技的网控器类似Modem,每一块板都对应一个下行口(用电话线与POS相连)、一个上行口(用串口与主机相连),这种网控器市场上使用较少。 市场上主要使用Hypercom公司的NAC6/16,它的上行线路(与主机相连)一般只有一条(一块上行板),最多扩充到两块上行板足够用了,而可以管理十几个下行板(用电话线与POS相连)。这样能节省主机的端口,而又能同时允许十几台POS与下行板通讯,不致拨号老是占线,提高POS系统的使用效率。
14. 持卡人密码
通常是6位数字(明文)。密码要送到银行主机内核对,在密码的传送过程中不能被其他人获得密码明文,因此在密码明文输入后就必须一直以密文的形式存在,就算是银行核对密码也是核对密码密文。 POS使用银行卡,持卡人在密码键盘上输入密码明文,从密码键盘出来的数据就是加密过的密码密文数据,这样在密码传输过程中就算被截取,也无法获知密码明文。
15. 加密和密钥
密码明文转化为密文的方法就是秘钥。保护密钥不被他人获知,POS一般将密钥放在密码键盘里,密码键盘具有开机自毁功能,当企图获取密钥的人打开密码键盘机壳时,密钥将自动丢失。