您的位置:首页 > 其它

关于银联则及终端则iso8583报文规范的理解

2014-04-10 22:16 302 查看



面对标准iso8583,相信有很多的人知道,也看过相关的文档。初学者面对iso8583接口文档,首先需要弄清楚,是关于终端则的还是关于银联平台则的。

如果你是针对终端的则一般是《销售点终端(POS)应用规范(QCUP 009.1-2010).pdf》会含有POS二个字样。

如果是针对银联则的则一般是《中国银联银行卡联网联合技术规范V2.1(境内卷)(QCUP 006-2011)》会含银联银行卡等字样。

终端则的报文组成:

报文长度(2字节表示)+TPDU(11字节)+报文类型(4字节,2字节BCD表示)+位图(8字节)+报文内容。

报文长度不好理解,可以参看“关于报文长度的理解”。

报文内容会涉及的类型(不一定与文档里的一样,但是需要它们归集总结):

1)纯数字类型: 基本上BCD表示。(如处理码)

2)字母类型:基本上ASCII表示。(如商户号、终端号)

3)2或3位长域,在表示方式上有区别:

长度域BCD表示,数据域ASCII表示。(如F44、F54等域)

长度域BCD表示,数据域也BCD表示。(如卡号、二磁道)

需要注意的是,可能会认为F64: 64bit如何表示呢?其实这就是一个8字节的字母类型来处理即可。

以下是一个请求报文实例:

01
0000h:
60
00
14
00
00
60
31
00
31
10
02
02
00
30
20
04
;
`....`
1.1
....
0
.
02
0010h:
80
20
C0
88
11
00
00
00
00
00
00
00
00
05
00
16
;
. ..............
03
0020h:
52
02
20
00
29
62
25
00
00
00
00
00
14
D3
01
02
;
R. .)b%.........
04
0030h:
01
00
00
00
30
30
30
30
30
31
39
33
38
30
31
31
;
....
000001938011
05
0040h:
31
30
30
35
30
39
34
30
31
30
32
31
35
36
06
00
;
10050940102156
..
06
0050h:
00
00
00
00
00
00
00
14
22
00
00
01
00
05
00
38
;
........"......
8
07
0060h:
46
37
41
45
35
34
39
;
F7AE549
08
09
10
Bit[
000
]
= [
004
]
[
0200
]
11
Bit[
003
]
= [
006
]
[
000000
]
12
Bit[
004
]
= [
012
]
[
000000000005
]
13
Bit[
011
]
= [
006
]
[
001652
]
14
Bit[
022
]
= [
003
]
[
022
]
15
Bit[
025
]
= [
002
]
[
00
]
16
Bit[
035
]
= [
029
]
[6225000000000014D301020100000]
17
Bit[
041
]
= [
008
]
[
00000193
]
18
Bit[
042
]
= [
015
]
[
801110050940102
]
19
Bit[
049
]
= [
003
]
[
156
]
20
Bit[
053
]
= [
016
]
[
0600000000000000
]
21
Bit[
060
]
= [
014
]
[
22000001000500
]
22
Bit[
064
]
= [
008
]
[8F7AE549]
---------------------------------------------------------------------------------------------------------------

银联即平台则的报文组成部分:

报文长度(4字节ASCII)+TPDU(46字节)++报文类型(4字节ASCII)+位图(16字节)+报文内容。

所有涉及到的数据类型都不需要BCD,即全用ASCII表示即可。

以下是一个请求报文实例。

01
Bit[000]
= [004] [0200]
02
Bit[002]
= [016] [6225000000000014]
03
Bit[003]
= [006] [000000]
04
Bit[004]
= [012] [000000000090]
05
Bit[007]
= [010] [1014114446]
06
Bit[011]
= [006] [348507]
07
Bit[012]
= [006] [114446]
08
Bit[013]
= [004] [1014]
09
Bit[018]
= [004] [7531]
10
Bit[022]
= [003] [022]
11
Bit[025]
= [002] [00]
12
Bit[032]
= [008] [48011000]
13
Bit[033]
= [008] [48010000]
14
Bit[035]
= [029] [6225000000000014=301020100000]
15
Bit[037]
= [012] [101400004941]
16
Bit[041]
= [008] [00000191]
17
Bit[042]
= [015] [801110075310001]
18
Bit[043]
= [040] [测试商户Z0001                           ]
19
Bit[049]
= [003] [156]
20
Bit[060]
= [027] [000002000300000000000011000]
21
Bit[128]
= [008] [CFAFF1C6]
22
23
0000h:
2E 02 30 33 30 34 30 30 30 31 30 30 30 30 20 20 ;..030400010000
24
0010h:
20 34 38 30 31 30 30 30 30 20 20 20 30 30 30 30 ; 48010000 0000
25
0020h:
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 ;0000000000000002
26
0030h:
30 30 F2 38 44 81 A8 E0 80 10 00 00 00 00 00 00 ;00.8D...........
27
0040h:
00 01 31 36 36 32 32 35 30 30 30 30 30 30 30 30 ;..16622500000000
28
0050h:
30 30 31 34 30 30 30 30 30 30 30 30 30 30 30 30 ;0014000000000000
29
0060h:
30 30 30 30 39 30 31 30 31 34 31 31 34 34 34 36 ;0000901014114446
30
0070h:
33 34 38 35 30 37 31 31 34 34 34 36 31 30 31 34 ;3485071144461014
31
0080h:
37 35 33 31 30 32 32 30 30 30 38 34 38 30 31 31 ;7531022000848011
32
0090h:
30 30 30 30 38 34 38 30 31 30 30 30 30 32 39 36 ;0000848010000296
33
00A0h:
32 32 35 30 30 30 30 30 30 30 30 30 30 31 34 3D ;225000000000014=
34
00B0h:
33 30 31 30 32 30 31 30 30 30 30 30 31 30 31 34 ;3010201000001014
35
00C0h:
30 30 30 30 34 39 34 31 30 30 30 30 30 31 39 31 ;0000494100000191
36
00D0h:
38 30 31 31 31 30 30 37 35 33 31 30 30 30 31 B2 ;801110075310001.
37
00E0h:
E2 CA D4 C9 CC BB A7 5A 30 30 30 31 20 20 20 20 ;.......Z0001
38
00F0h:
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;
39
0100h:
20 20 20 20 20 20 20 31 35 36 30 32 37 30 30 30 ; 156027000
40
0110h:
30 30 32 30 30 30 33 30 30 30 30 30 30 30 30 30 ;0020003000000000
41
0120h:
30 30 30 31 31 30 30 30 43 46 41 46 46 31 43 36 ;00011000CFAFF1C6
总结:相对终端则,平台则在组包、解析较为容易。

一般解析iso8583的开源代码,没有全部实现上面的类型,可能需要自己对源代码进行修改。本人在参考j8583开源代码,对其进行修改,基本实现上述功能,有感兴趣可以给我留言。

源代码:

iso8583_cups:平台则

iso8583_term:终端则

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: