ISO8583协议

背景介绍

在银行卡支付领域,经常提到“8583”, 他是金融机构中银行卡交易使用的一种内部协议。使用场景主要是终端如POS, ATM等金融终端到银行收单系统, 以及银行卡系统间。协议出现时期, 网络主要还是PSTN网络,电话拨号方式接入方式。考虑到带宽限制以及交易实时性要求,所以结构设计很紧凑,报文长度是1K左右,一般不会大于2K, 涉及数字的域还会采用BCD编码,从而减少报文长度。当然后续由于芯片卡应用,报文长度也有所增加。

银行卡的一些事

国际上最早的通用信用卡产生于20世纪50年代,1949年9月一天,纽约金融金融家麦克纳马拉与其好友布卢明代尔,在一家高档餐馆就餐,结账时发现现金不够,只好请其妻子来付款。这件事情给了麦克纳马拉重要启示,他和布卢明代尔一起策划了餐馆赊账网络, 发行一种可以记账的卡片,这就是大莱卡的开端。

受大莱卡的启发, 美国市场上出现了各种旅游娱乐卡, 美国运通公司凭借其遍布全球的旅行俱乐部及旅行者服务,后来居上最终成为旅游娱乐卡的领先者。

1951年,富兰克林银行在纽约长岛开始发行其首张信用卡,银行的主要收入来源是向零售商收取的5-7%的商户扣率, 持卡人无须支付任何直接费用。

1958年,美洲银行发行一种蓝、白、金三色组成,并带有飞鸽图案的银行卡,1976年,美洲银行卡公司更名为维萨(VISA)。

1966年, 一批银行家汇聚在美国的水牛城,召开了具有历史意义的第一次会议。并联合建立“同业银行卡协会”, 1979年银行卡协会更名为万事达卡国际组织,商标“MasterCard”。

1961年,日本信用卡株式会社(JCB)发行行用卡, 1981年开展国际业务。

2002年3月26日, 由国内80多家金融机构共同发起涉及的股份金融机构—中国银联成立。 注册资金16.5亿元人民币,总部设立在上海。

 

第一张人民币信用卡

1985年,中国银行珠海分行发行中国第一张人民币信用卡。

ISO 8583报文中包含信息

 

ISO8583报文格式

ISO 8583银行卡交换报文规范,目前的三个版本:

  • IS08583:1987
  • IS08583:1993
  • IS08583:2003

3 个版本之间没有大的区别,主要字段长度和数据元素的变化

ISO 8583 做为通用标准被采用,同时存在一些保留字段可用于存放自定义字段。

ISO8583报文格式

  • 各个域包含卡片信息,商户信息,交易信息
  • 每个域都有自己的含义和语法
  • 各个字段格式包括:数字、字母数字、固定或者可变长

ISO8583报文样例

一笔银行卡消费为例:MTI 0100 + 第三域的 000000 初步判断为一笔银行卡授权交易,一般是信用卡消费,当让根据这两个域的有多种组合,可以代表多种交易。

01 00 30 20 05 00 20 C0 10 1C 00 00 00 00 00 00 00 99 80 00 00 01 00 21 00 03 37 62 14 02 10 00 07 41 50 78 d1
56 07 12 20 10 00 00 00 00 31 32 33 34 35 36 37 38 30 34 33 20 20 20 20 20 20 20 20 20 20 20 20 c5 8e b2 00 18
03 1e 9a 00 06 30 30 30 30 30 31 00 06 30 30 30 30 30 30 00 06 30 30 30 30 30 31

01 00 
报文类型标识符
格式:n4 
内容:0100


位图:根据位图按照每个域指定的格式进行解析即可

30 20 05 00 20 C0 10 1C

第3域定长域:

00 00 00 
第3域:交易处理码
格式:n6
内容:000000

第4域定长,当然要配合币种49域一起,当然这个演示报文还是有些问题

第4域:金额
格式:n12
内容: 000000009980  

35域变长字段:

37 62 14 02 10 00 07 41 50 78 d1 56 07 12 20 10 00 00 00 00 
第35域:磁道信息
格式:z ..37 
内容:37 62 14 02 10 00 07 41 50 78 d1 56 07 12 20 10 00 00 00 00

可以看到这种协议由较强的专用性, 各个域均为银行卡交易设计, 各个银行和卡组也可以他通过一些域存放一些特殊字段。但是由于其协议长度限制,扩展非常不方便。

针对各类编码类型和长度类型都有定义,按照规则解析即可。另外,各个机构间有自定域或者长度格式有所不同,还要根据实际情况进行处理。

图片来源 https://en.wikipedia.org/wiki/ISO_8583

 

ISO8583通讯方式

协议并没有定义通讯协议, 一般都由系统自己定义或者网络设备进行约定。早期的POS通过网控器接入系统, 网控器一般会要求终端配置TPDU,通过TPDU用来进行路由判断,将终端交易转发到后端指定系统。

报文格式采用:报文长度+报文内容形式,

通讯协议早期还有X.25协议,串口等方式进行通讯的,后续大多使用TCP/IP协议。

下面是H3C方案里的一个图片, 基本上描述了当时的网络环境。

图片来源: http://www.h3c.com/cn/d_201003/665952_30008_0.htm

 

第三方支付

随着互联网发展,第三方支付公司异军突起,1998年,第三方支付公司PayPal 成立, 线上支付逐渐走进人们的生活, 后来国内第三方支付公司也逐步发展壮大,当时有一大批第三方支付公司和银行对接, 大部分用的都是ISO8583协议的接口。

智能手机普及,移动支付更加方便,大家更多使用移动支付,条码支付,这给传统银行卡的收单业务带来很大竞争压力,  传统银行收单市场逐渐被蚕食,当然后续发展大家也知道, 第三方支付公司逐步被纳入监管,通过网联完成到银行对接。这时通讯协议逐渐转向使用 http/https  报文使用XML,json这种更容易扩展的接口。

做为一种传统金融交易协议ISO8583 目前卡组和银行还有在使用,他将继续在金融组织内部发挥他的作用。

 

参考及引用

JCB  https://zh.wikipedia.org/wiki/JCB

Diners Club  https://en.wikipedia.org/wiki/Diners_Club_International

国际信用卡组织 图片来自 百度百科

Learn Payments 做了一些视频,有兴趣的可以去看下。

封面图片 陳恩安

 

Comments are closed.