POS流程解析(二)

POS规范--重点解析 2016/11/08

域的具体分析


1.域解析

消息类型

  • 0100/0110授权类请求/应答消息:
  • 0200/0210金融类请求/应答消息:
  • 0220/0230金融通知类请求/应答消息:
  • 0320/0330 批上送消息请求/应答:
  • 0400/0410冲正类消息请求/应答:
  • 0500/0510对账类消息请求/应答:
  • 0620/0630基于PBOC借/贷记卡标准的IC 卡脚本处理结果通知消息请求/应答:
  • 0800/0810网络业务管理类消息请求/应答:
  • 0820/0830网络业务管理类消息请求/应答:

位图

终端上送一般8个字节对应后续的64域,如果域存在就置位1.根据位图来解包


2域:主账号

没有第二磁道跟第三磁道信息,需要填入2域,可以是手输卡号,或者从IC卡信息中读取(TAG:57)

3域:交易处理码

压缩后有3个字节,一般用第1跟第2位,
第3和第4位表示受借记和查询,以及转出账户的账户类型。第5和第6位表示受贷记以及转入账户的账户类型。
在银联交易中,后面4位一般都为0。默认为未选卡种.
这里前两位还有一个用途,在PBOC流程中,TAG:9C的取值根据这里的交易类型来设置。比如消费是00,退货是20.

4域:交易金额

  • 人民币/美元 货币代码是0156,如果消费1000元,交易金额是000000100000(同样PBOC流程中的TAG:9F02标签也是这个);

  • 韩币/日元 货币代码是0410,如果消费1000元,交易金额是000000001000.

11域:受卡方系统跟踪号

POS终端的流水号,每一次联机交易加1.(原交易的冲正交易填入的是原交易的流水号)

撤销类的交易是新的流水号,不过在61.2域需要加上原交易的流水号

12域:受卡方所在地时间

格式为hhmmss,其中hh为小时,mm为分,ss为秒

13域:受卡方所在地日期

格式:MMDD

14域:卡有效期

格式为YYMM,其中YY为年份,MM为月份

15域:清算日期

POS中心和发卡方之间的交易结算日期(返回的报文中)。

格式为MMDD,其中MM为月份,DD为日

22域:服务点输入方式码

前两位指明用卡方式: 第3位指明是否有PIN。 常用如: 021:刷卡,有PIN

23域:卡序列号

25域:服务点条件码

  • 00: 正常提交
  • 06: 预授权类交易
  • 02: 自助终端(POS里面用不到)

26域:服务点PIN服务码

个人密码明文的最大长度(银联的密码一般都是6位)

32域:受理方标识码

目前用八位数字来标识一个机构,故若此域的长度值不等于8则被认为消息格式出错,详细编码需要查看规范。

35域:二磁道数据

压缩时用BCD码表示的1个字节的长度值+用左靠BCD码表示的最大19个字节的第二磁道数据,外卡只读二磁道

36域:三磁道数据

压缩时用右靠BCD码表示的2个字节的长度值+用左靠BCD码表示的最大52个字节的第三磁道数据

37域:检索参考号

  • POS中心赋予每笔从POS终端收到的预授权/金融/冲正交易的、在每个清算日内唯一的系统流水号。
  • POS中心用该流水号与消息类型、12域(受卡方所在地时间)和13域(受卡方所在地日期)的组合唯一地标识该笔交易(重复发送的冲正交易将被认为是一笔交易)

38域:授权标识应答码

在预授权交易中,发卡方将在成功的应答消息中返回一个有效的授权号,以供后续交易使用。
在预授权完成(请求)交易的请求消息中,POS终端将预授权交易中得到的授权号放入本域,传给发卡方。由发卡方去匹配原始预授权交易;
对于冲正、撤销和退货交易的应答报文的值同原始交易请求(如果原交易有返回的时候需要上送)

39域:应答码

返回00表示成功,冲正交易需要上送冲正原因码 比如A0 表示校验mac错误导致

41域:受卡机终端标识码

42域:受卡方的标识码

44域:附加响应数据

  • 接收机构标识码 AN11 表示发卡行标识码(左靠,右部多余部分填空格)
  • 收单机构标识码 AN11 表示商户结算行标识码(左靠,右部多余部分填空格)

48域:附加数据-私有

  • 用法一:结算总额
  • 用法二:磁条卡交易明细
  • 用法三:交易明细总笔数
  • 用法四:小费金额
  • 具体用法查看文档规范

49域:货币交易代码

人民币的货币代码为156。所有预授权/金融类交易消息中用本域标识交易币种

52域:个人标识码数据

53域:安全控制信息

前面3位表示安全控制信息
第一位: PIN加密方法  0:PIN不出现,未知
           	1:ANSI X9.8 Format(不带主账号信息)
			2:ANSI X9.8 Format(带主账号信息)
第二位: 加密算法标志     0:单倍长密钥算法
						6:双倍长密钥算法
第三位: 磁道加密标志   	0:不加密
           				1:加密

54域:余额

55域:IC卡数据域

58域:PBOC电子钱包标准的交易信息

60域:自定义域

60.1域:消息类型码

所有的POS终端向POS中心发送的交易消息中均包含60.1域和60.2域指明本交易的交易类型和清算批次。 POS的网络管理类报文中,网络管理信息码与消息类型码的组合标识不同的网络管理类消息 一般第二位为偶数 表示的交易是借记交易,为奇数,则为贷记交易。 比如消费(冲正)交易是22,撤销交易是23. 对原交易的冲正,消息类型也跟原交易是一样的

60.2域:批次号

  • 60.3域:网络管理信息码

  • 60.4域:终端读取能力

  • 60.5域:基于PBOC借/贷记标准的IC卡条件代码

  • 60.6域:支持部分扣款和返回余额标志

  • 60.7域:账户类型

61域:原始信息域

  • 61.1域:原始交易批次号

  • 61.2域:原始交易POS流水号

  • 61.3域:原始交易日期

  • 61.4域:原交易授权方式

  • 61.5域:原交易授权机构代码

62域:自定义域

64域:报文鉴别码

MAC算法一般都是银联算法,具体查看规范的附录用详细说明。


2.其他说明

2.1 TPDU的作用

网控制转发交易地址

2.2 哪些交易可以手输卡号

  1. 预授权
  2. 预授权撤销
  3. 预授权完成(请求/通知) 不包括预授权完成撤销交易

2.3 交易的一些特殊要求

  1. 消费撤销只能是当日当批次需要主管操作员输入密码,必须等于原始消费的金额,可根据POS终端参数设置选择是否进行刷卡
  2. 退货不是当日当批次需要主管操作员输入密码,支持部分退货和多次退货
  3. 预授权交易不参与清算
  4. 预授权撤销需要主管操作员输入密码,在预授权有效期内上送预授权撤销交易
  5. 预授权完成请求可以不在同一POS终端,但是必须在同一商户
  6. 预授权完成撤销必须等于原始预授权完成(请求)交易的金额,需要主管操作员输入密码,必须在原交易POS上,原交易当日当批进行,可根据POS终端参数设置选择是否进行刷卡

2.4 冲正交易

  1. 余额查询和通知类交易不产生冲正。
  2. 自动冲正与原始交易保持同一流水号
  3. 自动冲正对原始交易进行全额冲正。

3.POSP关注的点

3.1 判定交易类型

收到终端上送的报文后,解析报文,需要做如下判断出交易类型

  1. 判断消息类型
  2. 判断3域
  3. 判断60.1域

3.2 收单接入平台通信接口文档

POS终端与收单接入平台的通信主要有两种实现方式:

  • 1)通过POS终端拨号到网控器(NAC),再由网控器与收单接入平台通信模块进行通信来实现;

  • 2)POS终端与一个接入前置系统联接(MIS系统等),再由接入前置系统与收单接入平台通信模块进行通信来实现。 在以上两种通信联接方式中,收单接入平台通信模块作为服务端,下联的网控设备或接入前置系统作为客户端,在物理通信线路联通的基础上,通过建立符合通信接口标准的通信协议完成信息的交换。下文将对收单接入平台通信模块对下的通信接口进行定义。

  • 双工长连接方式 收单接入平台通信模块作为服务端要求下联接入客户端发起的联机交易采用双工长连接的方式。
  • 连接数目 客户端和服务端建立的长连接数应和客户端的交易量有关。客户端应与服务端至少建立两条双工长连接的通信线路。

4.银联附录算法

4.1 Pin加密

例如:明文PIN为: 123456,
假设: 磁卡上的PAN:1234 5678 9012 3456 78
		截取下的PAN:6789 0123 4567
则用于PIN加密的PAN为:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
		PIN BLOCK为:0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF
		异或:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
		结果为:0x06 0x12 0x53 0xDF 0xFE 0xDC 0xBA 0x98

4.2 Mac加密

  • a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK (MAB)。
  • b) 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加“0X00”
  • c) 将异或运算后的最后8个字节(RESULT BLOCK)转换成16 个HEXDECIMAL:
  • d) 取前8 个字节用MAK加密:
  • e) 将加密后的结果与后8 个字节异或
  • f) 用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算。
  • g) 将运算后的结果(ENC BLOCK2)转换成16 个HEXDECIMAL:
  • h) 取前8个字节作为MAC值


扫描关注我

(转载本站文章请注明作者和出处 Undefined

Post Directory