终端则
(一) 基础知识
1byte = 8bit
1byte = 2个16进制数
BCD码:用4位二进制数来表示1位十进制数中的0~9这10个数码,即1bcd码=4bit
(二) 报文结构
报文长度 |
TPDU头 |
报文头 |
应用数据 |
2字节16进制表示的报文长度(不包括本身) |
5字节 |
12字节 |
交易数据(不定长度) |
TPDU头 = ID(60H) + 目的地址(N4) + 源地址(N4),长度为10字节,压缩时用BCD码表示为5个字节长度的数值。
报文头 = 应用类别定义(N2 )+软件总版本号(N2) + 终端状态(N1) + 处理要求 (N1)+ 软件分版本号(N6),总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。
上面的参数值大家只需知道有这回事就行了,具体开发时参见开发文档对号入座
(三) 报文域属性和数据格式(以消费报文为例)
================================
[F002]type=[ LLVAR] len=[016]value=[6225561620345170]
[F003]type=[NUMERIC] len=[006] value=[280000]
[F004]type=[ AMOUNT] len=[012] value=[0.02]
[F011]type=[NUMERIC] len=[006] value=[7]
[F022]type=[NUMERIC] len=[003] value=[22]
[F025]type=[NUMERIC] len=[002] value=[82]
[F035]type=[ LLVAR] len=[037]value=[6225561620345170=17061010000015500000]
[F036]type=[ LLLVAR] len=[104] value=[996225561620345170=1561562915590002
170013300000010101017061=000000000000=00000=0000000622556155000004000]
[F037]type=[ ALPHA] len=[012]value=[110153000006]
[F041]type=[ ALPHA] len=[008] value=[05740001]
[F042]type=[ ALPHA] len=[015]value=[000000000000001]
[F049]type=[ ALPHA] len=[003] value=[156]
[F053]type=[NUMERIC] len=[016] value=[600000000000000]
[F064]type=[ BINARY] len=[064] value=[A99E90F8B08FEE85]
================================
16进制报文:
0173600003000060310031100402007020048038C08801166225561620345170280000000000000002000007022082376225561620345170D
1706101000001550000000104996225561620345170D1561562915590002170013300000010101017061D000000000000D00000D00000006
2255615500000400031313031353330303030303630353734303030313030303030303030303030303030313135360600000000000000
A99E90F8B08FEE85
青色背景:报文长度
黄色背景:TUDU头
红色背景:报文头
灰色背景:消息类型
绿色背景:bitmap位图,转成bit显示,
0111000000100000000001001000000000111000110000001000100000000001
“1”代表包含该位置的域
“0”代表不包含该位置的域
首位如果为0表示只有64bit,为1表示有128bit
如下解析图:
(四) 密钥简介
略
(五) PIN的加密与解密
略
(六) MAC的加密
POS终端采用ECB的加密方式,简述如下:
A) 将欲发送给POS中心的消息中,从消息类型(MIT)到63域之间的部分构成MAC ELEMENT BLOCK(MAB)。
B) 使用ECB算法做加密,取前8个字节作为MAC值