背景介绍

在银行卡支付领域,经常提到“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 初步判断为一笔银行卡授权交易,一般是信用卡消费,当让根据这两个域的有多种组合,可以代表多种交易。

1
2
3
4
5
6
7
8
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

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

1
30 20 05 00 20 C0 10 1C

第3域定长域:

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

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

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

35域变长字段:

1
2
3
4
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 做了一些视频,有兴趣的可以去看下。

https://www.youtube.com/watch?v=SiCbF8phxhA

封面图片 陳恩安