《中国银联银联卡受理终端应用规范》笔记(1)银联8583报文解析

时间:2024-03-25 08:20:49

0. 前言

    阅读的规范版本为20140404修订版

1. 报文格式说明

    POS终端上送POS中心的消息报文结构包括TPDU、报文头和应用数据三部分:

TPDU

报文头

应用数据

ISO8583 Msg

ID

目的

地址

源地址

应用类别定义

软件

总版本号

终端

状态

处理

要求

软件分版本号

交易数据

60H

NN NN

NN NN

N2

N2

N1

N1

N6

不定长度

注:在TPDU之前是报文的长度(2字节)和表示数据开始的标记符“02”。

1.1. TPDU

   TPDU(Transport Protocol Data Unit,传输协议数据单元)是POS报文的一个特定域,由三项共五个字节的信息组成。


    ID(Identifies TPDU Type)项为一个字节,用于标识报文类型(一般情况正确报文的类型为0x60,错误报文类型为0x68);

    Destination Address(即Network International Identifier,简称NII)项为两个字节,标识该报文的目的地址,一般情况下,这两个字节用来标识不同银行的前置机;

    Originator Address 项为两个字节,标识该报文从哪一个POS接入端口收到的报文。

    TPDU是一串10位的数字,跟网控器有关,网控器是这样的一台设备。它里头有很多张卡,有些卡负责接受终端通过电话或者别的途径传送上来的数据包,叫做下联卡,有些卡负责把下联卡的数据通过串口或者网线转发给后台前置机,叫做上联卡,tpdu的特定位定义了下联卡收到数据以后,转发到哪一块上联卡。上联卡根据tpdu相关信息把数据转发给特定的主机(因为现在的上联卡比如LET61可以指向很多台主机的),tpdu一般银行都是6000000000,也有6000060000或者其他。

1.2. 报文头

    报文头总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。 
    在POS上送的请求/通知报文中,该数值由POS终端应用程序在打包上送时根据POS终端参数和当前状态填入应用类别、软件总版本号、终端状态和软件分版本号(具体指各厂商的程序版本号),用于POS中心根据数值进行相应的处理。 

    在POS中心返回的应答报文中,由POS中心填入处理要求,其他域保持原值返回,POS将根据收到报文头中的处理要求进行相应处理。

2.举例

2.1. 原始报文

02 00 91 60 00 03 00 00 60 31 00 31 10 04 08 00 00 20 00 00 00 C0 00 16 00 00 33 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00 11 00 00 00 01 00 40 00 29 53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 32 31 32 4A 36 33 42 30 31 34 33 38 31 32 38 00 03 30 31 20 03 16

2.2. 报文分拆

02                                                                  表示数据开始

00 91                                                             表示后面数据长度为91个字节(在91到结束符03之间,不包括03字符,即8583包)

60 00 03 00 00 60                                         报文头

31 00 31 10 04                                              TPDU

08 00                                                             8583报文类型,这里表示网络管理请求,其回应类型应该是0810

00 20 00 00 00 C0 00 16                           8583数据包的位图,8字节,64位,其中首位表示是否有辅助位图,0的二进制0000,首位为0,没有辅助位图。位图展开后解析得如下域存在信息:11,41, 42, 60, 62, 63,对照规范,与pos签到请求报文所需域相同。

注:各个域的定义及说明详见《中国银联银联卡受理终端应用规范》第1部分 销售点终端(POS)应用规范 8.3章节:数据元名称及定义

00 00 33 31 32 33 34 35 36 37 36 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00 11 00 00 00 01 00 40 00 29 53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 32 31 32 4A 36 33 42 30 31 34 33 38 31 32 38 00 03 30 31 20 03 16

《中国银联银联卡受理终端应用规范》笔记(1)银联8583报文解析

11域:00 00 33
41域:31 32 33 34 35 36 37 36
42域:31 32 33 34 35 36 37 38 39 30 31 32 33 34 35
60域:00 11 00 00 00 01 00 40
        长度:    00 11 
        数据:    00 00 00 01 00 40
62域:00 29 53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 32 31 32 4A 36 33 42 30 31 34 33 38 31 32 38
        长度:00 29
        数据:53 65 71 75 65 6E 63 65 20 4E 6F 31 36 33 32 31 32 4A 36 33 42 30 31 34 33 38 31 32 38
     

63域:00 03 30 31 20

        长度:00 03

        数据:30 31 20

03        数据结束

16        CRC校验码:02(数据开始)后面开始,即从00开始到03之间字节(包括03)异或的结果。