感受中国银联企业标准ISO8583+数据交换

【中国银联关于ISO8583+元数据类型定义】 (违背国际标准ISO8583的简单性原则,导致联调成本大。)

(感悟两点:1、公司在制定对外接口时,应该进行评审,设计原则应该是越简单越好,越容易理解越好。一旦复杂,会导致联调时沟通成本大,甚至严重影响项目进度。2、为什么说一流企业制定标准,谁都想挣着指定标准,容易形成技术垄断。)

10.2数据类型
POS终端与POS中心之间的交换消息中,各数据元类型 如下所列:
A字母向左靠,右部多余部分填空格。(ABC 表示字母)

N数值,右靠,首位有效数字前充零。若表示金额,则最右二位为角分。(Number)
S特殊 “符号” 。(Special char ? annotation)

AN字母和/或数字,左靠,右部多余部分填空格。(可能同时包含A和N)
ANS字母、数字和/或特殊符号,左靠,右部多余部分填空格。(可能同时包含A,N,S)
AS字母和/或特殊符号,左靠,右部多余部分填空格。

------------------

批注: 特殊在哪里,标准并没给定,特殊到什么程度,是否可显示,因为文档说的是“符号”,不是“字符”,字符可以理解成是可显的,符号是否可显?依据经验来讲一般是可显的。我们常见的是F44表示返回码描述信息:

BM #44附加响应数据(错误信息描述)
F44域说明
变量属性    ANS25(LLVAR) ,2个字节长度+25个字节的定长域    压缩使用左靠BCD码1个字节+最大25个字节的定长字发卡方的附加响应数据必须为有效字符。由发卡方在批准交易时载入应答消息。

数据值部分的元类型是:ANS25,表示可能出现字母、数字和特殊符号(大部分指的是中文了,注意:银联标准中文编码采用的是GB2312,这样有些偏僻字可能显示不了。)

小结: 银联这样无非在描述“ANS表示一般可见符”,只是把一般可见符分为三个小类: 数字字符、字母字符和可见其他字符。

------------------


B二进制位。(一般是安全信息,比如PIN的密文呀和MAC数据。属于不可见信息。)

 

------------------

YY年。

MM月。

DD日。
hh时。
mm分。
ss秒。    (批注2: 银联对账结算日期F15,数据格式N4,格式往往是MMdd,就是不带年,导致合作方要自动补个年,容易导致“跨年虫”问题。)

------------------

 

LL可变长域的长度值(二位数)。
LLL可变长域的长度值(三位数)。

            (批注3: 变长数据,分两部分:长度部分+数值部分。长度部分必然是整形数据,采用什么编码呢? 二进制、纯字母还是压缩BCD,国际标准就是纯字母。比如LL的,假如当前长度部分的值是18,那么二进制方式可以用一个字节存放0x18, 纯字母要两个字节“18”,也就是0x31 0x38; 压缩BCD得1字节,也是0x18。)

--------------------
VAR可变长域。
X借贷符号,在数值之前,D表示借,C表示贷。
Z由ISO 7811和ISO 7813制定的磁卡第二、三磁道的数据类型。(批注4: 目前还不太了解)
对可变长数据元,以下例说明:
变量XYZ的数据类型为ANS...999(LLLVAR),则表示:该变量中可含字母、数字和特殊符号,
最长不超过999个字符,长度由三位数字确定。
注:本文档中声明的压缩变量属性是针对POS终端与POS中心之间的消息,POS中心与任何金
融机构之间的消息将全部采用ASCII码且不压缩的格式。(批注4: 实际上很多第三方机构接入银联,银联就是把第三方机构当做POS机的,所以导致其他第三方机构无奈地使用这么繁琐的东西。)

你可能感兴趣的:(iso8583 中国银联)