CEB8583报文接口说明
报文模拟测试(含8583)工具介绍

回归测试工具用户手册目录目录 (1)工具描述 (2)功能特点 (3)适用范围 (3)文件目录结构说明 (3)case目录 (3)file目录 (4)ini目录 (4)log目录 (4)report目录 (4)主界面 (4)使用说明 (4)密钥配置界面 (4)通讯参数配置界面 (5)修改案例界面 (5)文本模式修改界面 (6)设置案例集界面 (6)报文属性设置 (6)常量设置界面 (6)发送案例 (6)发送次数 (6)清空 (6)终止发送 (6)清空日志 (7)文件格式说明 (7)config.ini 例子 (7)Case.ini 例子 (8)iso.ini 例子 (8)交易文件的配置 (9)正交易配置 (9)反交易配置 (10)可选配置 (10)支持函数列表 (11)String (11)time (11)Req (11)Rev (11)Def (12)Tlv (12)Tlvasc (12)更新计划 (12)修改记录 (13)工具描述系统用Visual C++软件开发而成,数据存储采用文本文件进行保存,便于开发测试人员修改、共享测试案例。
本软件可以模拟不同类型的交易报文,可以对交易测试案例进行统一管理,并可以进行简单时间统计和成功率统计。
使用本软件可以减轻传统测试过程中的修改-编译-测试-的循环等待时间,在测试过程中可以根据需要随时更改报文内容。
本软件支持任意格式的报文,可以模拟不同格式的报文,如定长,变长,XML,8583等报文。
每个域的内容可以是常量,也可以支持约定的表达式。
本软件可以根据需要设置对应答相关域进行合法性检查,可以校验应答报文和请求报文的匹配关系,可以校验域的长度,校验域的内容等。
本软件支持MAC的生成、校验以及PIN加密处理,同时可以根据需要调整是否需要进行MAC和PIN加密。
本软件运行程序无需安装,只需将相关程序和测试案例文件拷贝到相应的文件夹下即可执行。
本系统目前局限性如下:目前仅对8583格式报文进行了解包处理,显示应答报文的各个域和内容;而对于其他非8583的报文仅仅列出发送报文和接收报文的实际内容。
8583报文及各域详解

[精彩] 8583问题 作者:lcunix发表于:2006-02-19 00:03:51【发表评论】【查看原文】【C/C++讨论区】【关闭】各位高手能否详细的解释一下8583协议htldm回复于:2003-08-31 22:15:18ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。
8583包前面一段为位图,用来确定包的字段域组成情况。
其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础,1、位图描述如下:位图位置:1格式:定长类型:B16(二进制16位,16*8=128bit)描述:如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。
选用条件:如使用65到128域,需设位图域第一位为'1'2、每个域的定义如下:typedef struct ISO8583{int bit_flag; /*域数据类型0 -- string, 1 -- int, 2 -- binary*/char *data_name; /*域名*/int length; /*数据域长度*/int length_in_byte;/*实际长度(如果是变长)*/int variable_flag; /*是否变长标志0:否2:2位变长,3:3位变长*/int datatyp; /*0 -- string, 1 -- int, 2 -- binary*/char *data; /*存放具体值*/int attribute; /*保留*/} ISO8583;ISO8583 Tbl8583[128] ={/* FLD 1 */ {0,"BIT MAP,EXTENDED ", 8, 0, 0, 2, NULL,0},/* FLD 2 */ {0,"PRIMARY ACCOUNT NUMBER ", 22, 0, 2, 0, NULL,0},/* FLD 3 */ {0,"PROCESSING CODE ", 6, 0, 0, 0, NULL,0},/* FLD 4 */ {0,"AMOUNT, TRANSACTION ", 12, 0, 0, 1, NULL,0},/* FLD 5 */ {0,"NO USE ", 12, 0, 0, 0, NULL,0},/* FLD 6 */ {0,"NO USE ", 12, 0, 0, 0, NULL,0},/* FLD 7 */ {0,"TRANSACTION DATE AND TIME ", 10, 0, 0, 0, NULL,0},/* FLD 8 */ {0,"NO USE ", 8, 0, 0, 0, NULL,0},/* FLD 9 */ {0,"NO USE ", 8, 0, 0, 0, NULL,0},/* FLD 10 */ {0,"NO USE ", 8, 0, 0, 0, NULL,0},/* FLD 11 */ {0,"SYSTEM TRACE AUDIT NUMBER ", 6, 0, 0, 1, NULL,0},/* FLD 12 */ {0,"TIME, LOCAL TRANSACTION ", 6, 0, 0, 0, NULL,0}, /* FLD 13 */ {0,"DATE, LOCAL TRANSACTION ", 4, 0, 0, 0, NULL,0}, /* FLD 14 */ {0,"DATE, EXPIRATION ", 4, 0, 0, 0, NULL,0},/* FLD 15 */ {0,"DATE, SETTLEMENT ", 4, 0, 0, 0, NULL,0},/* FLD 16 */ {0,"NO USE ", 4, 0, 0, 0, NULL,0},/* FLD 17 */ {0,"DATE, CAPTURE ", 4, 0, 0, 0, NULL,0},/* FLD 18 */ {0,"MERCHANT'S TYPE ", 4, 0, 0, 0, NULL,0},/* FLD 19 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 20 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 21 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 22 */ {0,"POINT OF SERVICE ENTRY MODE ", 3, 0, 0, 0, NULL, 0},/* FLD 23 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 24 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 25 */ {0,"POINT OF SERVICE CONDITION CODE ", 2, 0, 0, 0, N ULL,0},/* FLD 26 */ {0,"NO USE ", 2, 0, 0, 0, NULL,0},/* FLD 27 */ {0,"NO USE ", 1, 0, 0, 0, NULL,0},/* FLD 28 */ {0,"field27 ", 6, 0, 0, 0, NULL,0},/* FLD 29 */ {0,"NO USE ", 8, 0, 1, 0, NULL,0},/* FLD 30 */ {0,"NO USE ", 8, 0, 1, 0, NULL,0},/* FLD 31 */ {0,"NO USE ", 8, 0, 1, 0, NULL,0},/* FLD 32 */ {0,"ACQUIRER INSTITUTION ID. CODE ", 11, 0, 2, 0, NUL L,0},/* FLD 33 */ {0,"FORWARDING INSTITUTION ID. CODE ", 11, 0, 2, 0, N ULL,0},/* FLD 34 */ {0,"NO USE ", 28, 0, 2, 0, NULL,0},/* FLD 35 */ {0,"TRACK 2 DATA ", 37, 0, 2, 0, NULL,0},/* FLD 36 */ {0,"TRACK 3 DATA ",104, 0, 3, 0, NULL,0},/* FLD 37 */ {0,"RETRIEVAL REFERENCE NUMBER ", 12, 0, 0, 0, NULL,0} ,/* FLD 38 */ {0,"AUTH. IDENTIFICATION RESPONSE ", 6, 0, 0, 0, NULL,0},/* FLD 39 */ {0,"RESPONSE CODE ", 2, 0, 0, 0, NULL,0},/* FLD 40 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 41 */ {0,"CARD ACCEPTOR TERMINAL ID. ", 8, 0, 0, 0, NULL,0} ,/* FLD 42 */ {0,"CARD ACCEPTOR IDENTIFICATION CODE ", 15, 0, 0, 0, NULL,0},/* FLD 43 */ {0,"CARD ACCEPTOR NAME LOCATION ", 40, 0, 0, 0, NULL, 0},/* FLD 44 */ {0,"ADDITIONAL RESPONSE DATA ", 25, 0, 2, 0, NULL,0},/* FLD 45 */ {0,"NO USE ", 76, 0, 2, 0, NULL,0},/* FLD 46 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 47 */ {0,"field47 ",999, 0, 3, 0, NULL,0},/* FLD 48 */ {0,"ADDITIONAL DATA --- PRIVATE ",999, 0, 3, 0, NULL,0 },/* FLD 49 */ {0,"CURRENCY CODE,TRANSACTION ", 3, 0, 0, 0, NULL,0}, /* FLD 50 */ {0,"CURRENCY CODE,SETTLEMENT ", 3, 0, 0, 0, NULL,0}, /* FLD 51 */ {0,"NO USE ", 3, 0, 0, 0, NULL,0},/* FLD 52 */ {0,"PERSONAL IDENTIFICATION NUMBER DATA ", 8, 0, 0, 2, NULL,0},/* FLD 53 */ {0,"SECURITY RELATED CONTROL INformATION", 16, 0, 0, 0, NULL,0},/* FLD 54 */ {0,"ADDITIONAL AMOUNTS ",120, 0, 3, 0, NULL,0},/* FLD 55 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 56 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 57 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 58 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 59 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 60 */ {0,"NO USE ", 5, 0, 3, 0, NULL,0},/* FLD 61 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 62 */ {0,"NO USE ", 11, 0, 3, 0, NULL,0},/* FLD 63 */ {0,"NO USE ", 11, 0, 3, 0, NULL,0},/* FLD 64 */ {0,"MESSAGE AUTHENTICATION CODE FIELD ", 8, 0, 0, 2, NULL,0},/* FLD 65 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 66 */ {0,"NO USE ", 1, 0, 0, 0, NULL,0},/* FLD 67 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 68 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 69 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 70 */ {0,"SYSTEM MANAGEMENT INformATION CODE ", 3, 0, 0, 0, NULL,0},/* FLD 71 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 72 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 74 */ {0,"NUMBER OF CREDITS ", 10, 0, 0, 0, NULL,0},/* FLD 75 */ {0,"REVERSAL NUMBER OF CREDITS ", 10, 0, 0, 0, NULL,0 },/* FLD 76 */ {0,"NUMBER OF DEBITS ", 10, 0, 0, 0, NULL,0},/* FLD 77 */ {0,"REVERSAL NUMBER OF DEBITS ", 10, 0, 0, 0, NULL,0} ,/* FLD 78 */ {0,"NUMBER OF TRANSFER ", 10, 0, 0, 0, NULL,0},/* FLD 79 */ {0,"REVERSAL NUMBER OF TRANSFER ", 10, 0, 0, 0, NULL, 0},/* FLD 80 */ {0,"NUMBER OF INQUIRS ", 10, 0, 0, 0, NULL,0},/* FLD 81 */ {0,"AUTHORIZATION NUMBER ", 10, 0, 0, 0, NULL,0},/* FLD 82 */ {0,"NO USE ", 12, 0, 0, 0, NULL,0},/* FLD 83 */ {0,"CREDITS,TRANSCATION FEEAMOUNT ", 12, 0, 0, 0, NULL, 0},/* FLD 84 */ {0,"NO USE ", 12, 0, 0, 0, NULL,0},/* FLD 85 */ {0,"DEBITS,TRANSCATION FEEAMOUNT ", 12, 0, 0, 0, NULL,0 },/* FLD 86 */ {0,"AMOUNT OF CREDITS ", 16, 0, 0, 0, NULL,0},/* FLD 87 */ {0,"REVERSAL AMOUNT OF CREDITS ", 16, 0, 0, 0, NULL,0 },/* FLD 88 */ {0,"AMOUNT OF DEBITS ", 16, 0, 0, 0, NULL,0},/* FLD 89 */ {0,"REVERSAL AMOUNT OF DEBITS ", 16, 0, 0, 0, NULL,0} ,/* FLD 90 */ {0,"ORIGINAL DATA ELEMENTS ", 42, 0, 0, 0, NULL,0}, /* FLD 91 */ {0,"FILE UPDATE CODE ", 1, 0, 0, 0, NULL,0},/* FLD 92 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 93 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 94 */ {0,"SERVICE INDICATOR ", 7, 0, 0, 0, NULL,0},/* FLD 95 */ {0,"REPLACEMENT AMOUNTS ", 42, 0, 0, 0, NULL,0},/* FLD 96 */ {0,"NO USE ", 8, 0, 0, 0, NULL,0},/* FLD 97 */ {0,"AMOUNT OF NET SETTLEMENT ", 16, 0, 0, 0, NULL,0},/* FLD 98 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 99 */ {0,"SETTLEMENT INSTITUTION ID ", 11, 0, 2, 0, NULL,0}, /* FLD 100 */ {0,"RECVEING INSTITUTION ID ", 11, 0, 2, 0, NULL,0},/* FLD 101 */ {0,"FILENAME ", 17, 0, 2, 0, NULL,0},/* FLD 102 */ {0,"ACCOUNT IDENTIFICATION1 ", 28, 0, 2, 0, NULL,0}, /* FLD 103 */ {0,"ACCOUNT IDENTIFICATION2 ", 28, 0, 2, 0, NULL,0}, /* FLD 104 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 105 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 106 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 108 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 109 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 110 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 111 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 112 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 113 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 114 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 115 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 116 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 117 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 118 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 119 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 120 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 121 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 122 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 123 */ {0,"NEW PIN DATA ", 8, 0, 3, 2, NULL,0},/* FLD 124 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 125 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 126 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 127 */ {0,"NO USE ",999, 0, 3, 0, NULL,0},/* FLD 128 */ {0,"MESSAGE AUTHENTICATION CODE FIELD ", 8, 0, 0, 2, NULL,0},};3、变长,定长域说明如第二域:域名为主帐号,数据类型为string长度为22(是长长度不得超过此数)是个2位变长域由于是2位变长,在打包时需在数据域前加上数据的实际长度,如为19位,则表示为:19+数据值(即前两位为长度)如第三域:域名为处理码,数据类型为string长度为6是个定长域必须填满6位。
银联8583理解

交易时卡片与终端产生的数据按照一定规律组成一个数据包,这个规律即是8583规范。
该数据包被终端用来与银行系统通信,银行与银行之间的通信。
目前国内金融用的是银联8583规范,与ISO8583稍微有些出入。
它规定了报文结构,格式,内容以及数据元的位置和数据元的值。
一些概念:1.报文:用于机构之间交换信息的数据元集合;2.报文结构:按如下顺序排列报文类型标识符| 一个或两个位元表| 数据元序列3.报文类型标识符:四位数字型数据字段,1位2位表示报文类别,当它们都在1到8之间时,3/4位表示报文传输方式和功能4.位元表:分为基本位元表和扩展位元表基本位元表的01位取值1则表示扩展位元表存在,为0则表示基本位元表;位元表结构如下:基本位元表:01 位元位置64数据元扩展位元表:01 64 128数据元举例:位元位置也叫位图20 00 38 00 00 00 00 34把它解开,排列一下20 = 1010 000000 = 0000 000038 = 0011 1000依次类推,得到一串数字0010 0000 0000 0000 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0011 0100然后从左到右数一下里头含有1的是那几位,上面的例子我们得到3 19 20 21 59 60 62 ,这几位含有1。
也就是说接下来的报文包含有这几个域。
数据元的数据存放则是按顺序依次存放,查询时按照位图的位置将数据元的数据依次对应相应的域。
数据元格式为:长度+数据(该长度不包含长度字节,仅仅是数据的长度)V AR:表示可变字段的长度LL:表示长度小于100LLL:表示长度小于1000做一个简单的例子比如消费交易,需要上送交易类型,卡号等等,定义如下卡号第2域LLV AR BCD 5309987876545342交易类型第3域长度6 BCD 900000金额第4域长度12 BCD 100分时间第7域长度8 BCD 200308022磁道信息第35域LLV AR ASCII 1234563磁道信息第36域LLLV AR BCD 123456001商户号第41域LLVAR ASCII 98765432现在开始打包,首先按照长度和类型把上面的数据处理一下卡号165309987876545342交易类型900000金额000000000100时间200308022磁道063132333435363磁道0009123456001商户号083938373635343332接下来按照域信息生成位图因为有第2域,所以第二个位置是1,由第三域,所以第三个位置是1,。
银行卡和ISO8583要点

– 嵌有集成电路芯片的一种便携式塑料卡片 – 通常,智能卡上包含专门的算法协处理器 – – – – 数据计算 信息处理 访问控制 存储功能
CPU
数据总线 协处理 器
•
智能卡包含有通用微处理器、 I/O接口及存储器
•
智能卡具有的功能:
ROM
安全单元
RAM
输入输出 EEPROM
•
卡片的大小、接点定义目前是由ISO规范统一
借记/贷记应用
脱机数据认证
借记/贷记应用
目的:作为终端的一个功能,用于认证来自IC卡数据的正确性 方法:采用公钥算法验证IC卡上的签名和证书 采用公钥技术: • 私钥产生加密数据(证书或签名) • 公钥解密证书或签名而用于验证和数据恢复 有三种类型的数据认证: 1. 静态数据认证 - SDA 2. 动态数据认证 - DDA 3. 复合动态数据认证/应用密文生成 – CDA
银联IC卡借贷记应用
银联芯片卡终端应支持正常的芯片卡交易和降级使用交易。终端应首先尝 试进行芯片交易,当芯片或芯片读卡器不能正常工作时方可进行降级使用 交易。 降级使用交易必须联机处理, 如果联机不能则拒绝交易。
不允许终端设备主动提示使用磁条而跳过芯片认证控制。
应正确标识芯片卡交易及降级使用交易。 发卡机构对受理机构正确标识并且经发卡机构授权的降级使用交易承担责 任。
卡片及ISO8583知识
磁条卡介绍
• 磁条
银行卡磁条的特性、编码技术及编码字符集应符合 GB/T 15120.2中的有关要求。 第1磁道的信息格式:磁道1为只读磁道,数据编码可记录数 字(0-9)、字母(A-Z)和其他一些符号(如括号、 分隔符等),最大可记录 79 个数字或字母。 第2磁道的信息格式:磁道2为只读磁道,所记录的字符只能 是数字(0-9)和“ =” ,最大可记录40 个字符。 第3磁道的信息格式:磁道3为读写磁道,所记录的字符只能 是数字(0-9),最大可记录107 个字符。
8583报文39域对照码

8583报文39域对照码对应答码的处理交易返回POS终端时都有39 域,POS终端和终端操作员根据应答码要采取相应的操作,可以把操作分为以下几类:A:交易成功B:交易失败,可重试C:交易失败,不需要重试D:交易失败, 终端操作员处理E:交易失败,系统故障,不需要重试注1:如果 39 域的内容不能在下表中找到,就显示“交易失败”注2:如果POS交易的批次号和网络中心批次号不一致时应答码会填“77”,此时POS机应当提示操作员重新签到,再作交易。
表 C.1 应答码表代码意义类别原因/采取的措施POS显示的内容00 承兑或交易成功 A 承兑或交易成功交易成功01 查发卡行 C 查发卡行交易失败,请联系发卡行02 查发卡行的特殊条件 C 可电话向发卡行查询交易失败,请联系发卡行03 无效商户 C 商户需要在银行或中心登记商户未登记04 没收卡 D 操作员没收卡没收卡,请联系收单行05 不予承兑 C 发卡不予承兑交易失败,请联系发卡行06 出错 E 发卡行故障交易失败,请联系发卡行07 特殊条件下没收卡 D 特殊条件下没收卡没收卡,请联系收单行09 请求正在处理中 B 重新提交交易请求交易失败,请重试12 无效交易 C 发卡行不支持的交易交易失败,请重试13 无效金额 B 金额为0 或太大交易金额超限,请重试14 无效卡号 B 卡种未在中心登记或读卡号有误无效卡号,请联系发卡行15 无此发卡行 C 此发卡行未与中心开通业务此卡不能受理19 重新送入交易 C 刷卡读取数据有误,可重新刷卡交易失败,请联系发卡行20 无效应答 C 无效应答交易失败,请联系发卡行21 不做任何处理 C 不做任何处理交易失败,请联系发卡行22 怀疑操作有误 C POS状态与中心不符,可重新签到操作有误,请重试23 不可接受的交易费 C 不可接受的交易费交易失败,请联系发卡行25 未能找到文件上记录 C 发卡行未能找到有关记录交易失败,请联系发卡行30 格式错误 C 格式错误交易失败,请重试31 银联不支持的银行 C 此发卡方未与中心开通业务此卡不能受理33 过期的卡 D 过期的卡,操作员可以没收过期卡,请联系发卡行34 有作弊嫌疑 D 有作弊嫌疑的卡,操作员可以没收没收卡,请联系收单行35 受卡方与安全保密部门联系 D 有作弊嫌疑的卡,操作员可以没收没收卡,请联系收单行36 受限制的卡 D 有作弊嫌疑的卡,操作员可以没收此卡有误,请换卡重试37 受卡方呼受理方安全保密部门(没收卡)D 有作弊嫌疑的卡,操作员可以没收没收卡,请联系收单行38 超过允许的PIN试输入D 密码错次数超限,操作员可以没收密码错误次数超限代码意义类别原因/采取的措施POS显示的内容39 无此信用卡账户 C 可能刷卡操作有误交易失败,请联系发卡行40 请求的功能尚不支持 C 发卡行不支持的交易类型交易失败,请联系发卡行41 丢失卡 D 挂失的卡,操作员可以没收没收卡,请联系收单行42 无此账户 B 发卡行找不到此账户交易失败,请联系发卡方43 被窃卡 D 被窃卡,操作员可以没收没收卡,请联系收单行44 无此投资账户 C 可能刷卡操作有误交易失败,请联系发卡行51 无足够的存款 C 账户内余额不足余额不足,请查询52 无此支票账户 C 无此支票账户交易失败,请联系发卡行53 无此储蓄卡账户 C 无此储蓄卡账户交易失败,请联系发卡行54 过期的卡 C 过期的卡过期卡,请联系发卡行55 不正确的PIN C 密码输错密码错,请重试56 无此卡记录 C 发卡行找不到此账户交易失败,请联系发卡行57 不允许持卡人进行的交易 C 不允许持卡人进行的交易交易失败,请联系发卡行58 不允许终端进行的交易 C 该商户不允许进行的交易终端无效,请联系收单行或银联59 有作弊嫌疑 C 交易失败,请联系发卡行60 受卡方与安全保密部门联系 C 交易失败,请联系发卡行61 超出取款金额限制 C 一次交易的金额太大金额太大62 受限制的卡 C 交易失败,请联系发卡行63 违反安全保密规定 C 违反安全保密规定交易失败,请联系发卡行64 原始金额不正确 C 原始金额不正确交易失败,请联系发卡行65 超出取款次数限制 C 超出取款次数限制超出取款次数限制66 受卡方呼受理方安全保密部门C 受卡方呼受理方安全保密部门交易失败,请联系收单行或银联67 捕捉(没收卡) C 捕捉(没收卡)没收卡68 收到的回答太迟 C 发卡行规定时间内没有回答交易超时,请重试75 允许的输入PIN次数超限 C 允许的输入PIN次数超限密码错误次数超限77 需要向网络中心签到D POS批次与网络中心不一致请向网络中心签到79 脱机交易对账不平 C POS终端上传的脱机数据对账不平POS终端重传脱机数据90 日期切换正在处理 C 日期切换正在处理交易失败,请稍后重试91 发卡行或银联不能操作 C 电话查询发卡方或银联,可重作交易失败,请稍后重试92 金融机构或中间网络设施找不到或无法达到C电话查询发卡方或网络中心,可重作交易失败,请稍后重试93 交易违法、不能完成 C 交易违法、不能完成交易失败,请联系发卡行94 重复交易 C 查询网络中心,可重新签到作交易交易失败,请稍后重试95 调节控制错 C 调节控制错交易失败,请稍后重试96 系统异常、失效 C 发卡方或网络中心出现故障交易失败,请稍后重试97 POS终端号找不到D 终端未在中心或银行登记终端未登记,请联系收单行或银联98 银联收不到发卡行应答 E 银联收不到发卡行应答交易超时,请重试99 PIN格式错 B 可重新签到作交易校验错,请重新签到A0 MAC 校验错 B 可重新签到作交易校验错,请重新签到。
8583报文解析

8583报文解析
8583报文解析是指对银行卡交易中所使用的8583报文进行分析和解码的过程。
8583报文是一种二进制格式的结构化数据,在银行卡交易中扮演着重要的角色。
通过对8583报文的解析,可以获取交易中所包含的必要信息,如交易类型、交易金额、交易时间等,从而实现交易的成功。
8583报文由多个域(field)组成,每个域包含了特定的信息。
其中,前4个域为固定域,分别为消息类型标识符、位图、主帐号(PAN)、交易处理码。
后续的域则根据交易类型的不同而有所变化,如消费交易会包含卡有效期、商户号、终端号等域。
对于每个域,都有特定的长度和格式要求,例如主帐号域为16位数字字符,交易金额域为12位数字字符等。
在解析8583报文时,需要先解析出位图域,确定哪些域存在于该报文中。
然后根据位图的内容,按照顺序解析出各个域的信息。
在解析过程中,需要注意各个域之间的关联关系和数据类型的转换。
总之,8583报文解析是银行卡交易中必不可少的环节,对于保障交易的正确进行具有重要作用。
- 1 -。
8583报文实例
18583报文1.1数据包格式ISO 8583金融交易信息数据包由信息类型(MSG_TYPE_ID)、一个或多个位图(BIT_MAP)和按位图描述的顺序排列的数据元序列(ELEMENTS)等三段组成。
信息类型是一个4位数字的数字型字段,用来描述每一个交易信息的类别和功能,其中前两位数字标明信息类别,如授权信息、金融交易信息、管理信息,等等。
在一个金融系统中,信息类型的定义应该是唯一的,无二义性的。
网间交易具有不同的信息类型定义时应在交换报文的发送前和接收后完成类型转换处理。
位图由64位二进制比特位构成,每一位用1或0来表示与该比特位相对应的数据元存在或不存在。
位图的第一位为1时,表示64位的位图后紧接着一个扩展的64位位图。
本实施规范未使用扩展位图。
数据元指交易中一个数据项的实际内容,数据元在数据包中是否存在及存放位置由位图中的相应比特位确定。
一些数据元有固定的长度,一些数据元为变长项。
具有可变长度类型的数据元应在实际数据之前附加标明长度的前缀字节。
1.2符号定义本规范使用以下标识符来说明数据元的属性:1.2.1一般描述1.2.2长度属性1.2.3数据元值ASCII 表示该字段采用ASCII码表示,长度按字节计。
BCD 表示该字段采用BCD码表示,即每四比特位表示一数据位。
BIN 二进制数据,长度按比特位表示。
1.2.4数据属性1.2.5数据项使用规则a)所有独立的数据项按整字节计算。
b)以BCD码(Binary Code Decimal)表示的n型数据项,奇数长度(固定长度)n型数据项以字节边界右靠,左填0;例1234567表示为01234567共4个字节。
可变长度n型数据(如主帐号域)以字节边界左靠,右填0;例:1234567表示为1234570共4个字节。
c)可变长度数据项的长度域,以独立数据项n型数对待。
例LL 表示为ll一个字节,LLL表示为0lll共2字节。
d)z型数据项与n型数据项类似,为16进制数据。
8583各域详解
8583各个域详解收藏1,信息类型(message type)定义位图位置:-格式:定长类型:N4描述:数据包的第一部分,定义数据包的类型。
数据类型由数据包的发起者设定,应遵循以下要求:数据包开始部分必须是信息类型;对不支持的信息类型能给出拒绝应答。
0100授权交易0110授权交易答复0200金融交易0210金融交易答复0240查询交易0250查询交易答复0400冲正交易0410冲正交易答复0800管理交易0810管理交易答复2,位图(Bit Map) - 基本位图和扩展位图位图位置:1格式:定长类型:B16描述:如将位图的第一位设为'1',表示使用扩展位图,否则表示只使用基本位图。
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。
选用条件:如使用65到128域,需设位图域为'1'3,Bit02主帐号(Primary Account Number )位图位置:02格式:变长,LLVAR类型:N..22描述:唯一的确认一个用户交易的基本帐号。
由于银行电子服务系统涉及多个应用系统,而帐号长度最多为22位,故将原标准的19长度改为22位。
Bit03 处理代码(Processing Code )位图位置:03格式:定长类型:N6描述:用于描述交易对客户帐户造成何种影响的代码。
处理代码和信息码一起可唯一定义一种交易的类型。
处理代码由以下三部分组成:位置描述1-2交易动作码3-4付出帐户类型,用于借记类,如查询、代收费、转场交易。
5-6收入帐户类型,用于代收费、转帐等。
其中:ff : 付出帐户tt:收入帐户* 视主机而定5,Bit04 交易金额(Amount, Transaction)位图位置:04格式:定长类型:N12描述:帐户人要求交易的交易金额,不含任何处理和交易费用。
金额的表示和货币代码有关,应能表示相应货币的最小单位。
解析ISO8583报文实例
解析ISO8583报文实例(Pos应用)现在我们有ISO8583报文如下(十六进制表示法):60 00 03 00 00 60 31 00 31 07 30 02 00 30 20 04 C0 20 C0 98 11 00 00 00 00 00 00 00 00 01 00 03 49 02 10 00 12 30 62 25 82 21 12 99 63 01 5D 15 11 10 10 00 00 35 36 38 35 32 33 31 34 32 33 35 32 31 34 35 32 36 38 35 39 32 33 36 31 35 36 C6 24 83 4D 36 7E 9E 9E 20 00 00 00 00 00 00 00 00 13 22 00 00 08 00 05 00 36 37 41 32 32 39 39 41第一步POS终端上送POS中心的消息报文结构包括TPDU、报文头和应用数据三部分:——TPDU说明:长度为10个字节,压缩时用BCD码表示为5个字节长度的数值。
——报文头说明:总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。
——应用数据说明:一般长度都是4个字节,压缩时用BCD码表示为2个字节的长度的数值。
所以上述报文中前五个字节为TPDU,即60 00 03 00 00报文头占用六个字节,即60 31 00 31 07 30应用数据占用2个字节,即02 00 也就是"0200"——0200金融类请求消息:●POS查询请求。
●POS消费请求。
●POS消费撤销请求。
●POS预授权完成(请求)请求。
●POS预授权完成撤销请求。
●电子现金脱机消费请求。
●分期付款消费请求。
●分期付款消费撤销请求。
●基于PBOC电子钱包/电子现金的IC圈存类交易请求。
●磁条卡现金充值请求。
第二步分析位图:首先取第十四个字节,即0x30 ,转化为二进制为0011 0000,在该字节的第一位为0(从左往右)表示当前报文中只需包括64个域,也就是从当前字节开始连续8个字节为位图(包括当前字节),如要包括128个域,该位为1。
8583数据解析
8583数据解析1、8583为国际卡组织发明的交易报⽂传输。
加强了交易的安全性、⼀致性、失效性⼀直沿⽤⾄今。
2 、谈⼀下银⾏卡收单流程。
银⾏卡——pos机具——收单机构——银联——发卡⾏——银联——收单机构——pos机。
(完整流程完成⼀笔交易)从传统pos收单通道、再整个流程中数据是以8583形式传输。
当然现在银联也推出了全渠道、apple pay 等通道。
3 、报⽂传输都是以字节流进⾏传输。
作为开发⼈员、⾸先接触8583感觉很迷茫。
银联8583报⽂是以128域组成。
pos机具发送和传输则以64域组成。
中间转换曾则为收单机构进⾏转换。
具体⼦域有相关接⼝⽂档进⾏详细说明。
4 、8583报⽂组成报⽂头+TPDU+交易码+位图+⼦域值组成。
⾸先我们得到⼀串8583报⽂不知道如何进⾏解析。
⼀般是剔除报⽂头和TPDU开始(长度固定)下⾯举个例⼦如何⼿动拆解8583下⾯是⼀串⼿动解析出来的pos发送的8583报⽂。
0200702406C020E09A3116|622252**********0000000000005800000000432106 ----14域07100003001227|622252**********D210620603703635333433303932343833323531353539393930303030 30303120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020 31353657A893D87A857D9126000000000000000151|9F2608F4263027C03F06FC9F2701809F101307011703A00000010A0100000000007592C3559F37046B3E7A179F36020048950500000000009A031710219C01009F02060000005800005F2 ------55域特殊域----长度位单倍长计数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CEB8583报文接口说明1 概述1.1 前言目前国内各大A TM厂家提供不同的A TM接口标准。
由于缺乏规范和控制,严重地阻碍了金融电子化的实施。
为了改变这种工作方式,在此规范一个终端接口标准。
这个接口标准具有以下几个特点:1、标准化:所有交易使用国际金融标准ISO8583。
2、规范化:所有交易及控制都提供明确的流程。
3、公开性:所有的加密算法都明确规定。
为了改变终端软件的质量,减少各家用户的协调工作,任何一家终端厂家必须严格遵守此终端标准。
我们希望通过努力,使各大银行逐步具备自己的终端规范。
1.2 应用范围本文件描述服务器网络的外部报文格式和交易过程的报文流程,供入网单位开发接口程序时使用。
ISO8583是国际标准化组织推荐用于交换中心和成员行主机通讯的报文格式,本手册介绍服务器网络对ISO8583标准的解释和实现。
在阅读本文时,用户应参考ISO8583(1987)文本。
1.3 支持的通信协议TCP/IP1.4 网络构成说明主机CRS DDN/FR/X.25A TM CDM …………网络拓扑结构图2 交易术语、符号说明2.1 消息类型说明ISO8583标准定义了几类消息来确定交易类型,在服务器系统中使用的报文类型有以下几种:除03XX、08XX、90XX报文类型外的其它所有报文类型都需要MAC校验。
02XX02XX类消息用于金融请求,被批准的金融交易的请求消息可用于立即对持卡人帐户的记帐处理。
包括:ATM/柜台-- 存款、取款,余额查询,(本系统内帐户间)转帐,IC卡圈存、圈提、代交费、发卡等。
注:以上交易需要提供密码。
02XX支持的信息:0200 金融交易请求,0200消息要求对方以0210消息作为其应答。
0201 金融交易请求的重发,0201消息要求对方以0210消息作为其应答。
0210 金融交易请求应答,对0200金融交易请求必须用它来回答。
03XX03XX类消息用于在服务器和终端之间传送文件更新数据。
根据终端的不同要求,服务器接收终端的文件数据或向终端传送其需要的文件更新数据。
0300 终端上传文件或服务器下传文件的请求。
必须以0310作为对本类报文的应答。
0310 对0300的应答。
04XX04XX类信息用于执行对先前已请求进行的交易全部或部分冲正。
04XX类冲正信息是由终端发起的,而调整交易信息则由人工产生。
下列是04XX信息:0400 冲正通知,终端未在预定的时间内接到服务器发送的交易应答时,需要对未完成的交易进行冲正,此时发送0400消息。
0400要求一个0410消息作为应答。
0410 冲正通知应答。
这是对0400冲正通知消息必须的应答。
08XX08XX消息用于服务器和终端之间的文件传输通知、签到、签退和密钥更新,每个终端都要在每日交易开始前或每日日终时向服务器申请更新密钥,以保证下一个工作日交易的安全性,双方要用相同的传输密钥对这些工作密钥进行加密或解密。
08XX支持的消息种类如下:0800 文件传输开始通知、文件传输结束通知、签到、签退、密钥更新请求,要求以0810作为回答。
0810 是对0800消息必须的应答。
90XX90XX消息用于服务器和终端之间的管理报文,终端需要定时向服务器汇报自己的状态,如钞箱状态等,以提供服务器对其进行管理的依据。
服务器也向终端发送监控命令,用于查询终端设备的状态、开启、关闭某些终端,查询终端的统计数据等。
9000 终端的定时汇报报文,不需要应答。
9000 服务器向终端发送监控命令,需要9010做应答。
9010 终端对服务器的监控命令给予应答的报文。
91XX91XX消息用于卡片管理(包括修改用户个人密码、查询明细等)、商户管理、机构柜员管理等管理类交易,支持的消息种类如下:9100 交易请求,要求以9110作为应答。
9101 重发,要求以9110作为应答。
9110 服务器对9100和9101的回答。
在本规格说明书中,消息和报文都是指上述各类消息。
这二个术语可替换使用。
全二进制02.3法。
约定(字段采用属性后加上长度的方法来描述,下表定义这些属性的含义:字段类型属性(Field Type attribute)对数据字段更详细的描述可在位图定义一章中找到。
字段长度(Field Length)表示法含义-digit(s) 固定长度位数。
例如,n-10表示10位长的数字字段示例:an-10表示10位臵长的数字字符字段。
…digit(s)可变长度位数。
示例:n…4表示最长为4个数字的可变长数字字段。
示例:an…7表示最长为7个数字位的可变长数字字符字段。
LLVAR 该写法表示数据字段包括包括两个子域,第一个子域为2位长(LL),表示其后所跟数据的长度。
第二个子域的长度位LL位。
VAR表示子域中的数据部分。
注意整个字段总长度变为LL+2。
例如:an..25 LLV AR表示此字段最长可达25位。
实际位数在第一个子域中表示。
LLLVAR 除长度子域为三以外,含义和LLV AR一样。
数据表示方法●所有数据ASCII显示格式表示,字符集合的确定取决于配臵情况。
示例:ans 5 =”123AB” → 31 32 33 41 42 (HEXA)●所有数据类型为“b”(二进制)的字段按照其十六进制数值显示表示法编码。
示例:b8 = 0x34 → 34(HEXA)●数据中给出的所有长度均表示需要的逻辑位数。
示例:n-12=12个数字●所有类型为n的数字字段在8583报文中将采用BCD压码。
示例:n6=”980812” → 98 08 12 (HEXA)●所有类型为n的数字字段的数据在8583报文中均采用右对齐,前面空位补零。
示例:长度为3的数据‚156‛的数据在报文中为:n3=”156” → 01 56 (HEXA)●在8583报文中,所有类型为LLV AR的字段长度占用一个字节,类型为LLLVAR字段长度为两个字节。
示例:下面数据的长度分别为8、16、15、15,变长字段的类型分别为LLV AR和LLLV AR。
ans..16=”1234567A”→08 31 32 33 34 35 36 37 41 (HEXA)n..19=”1234567890123456”→10 12 34 56 78 90 12 34 56 (HEXA)n..19=”123456789012345”→0F 01 23 45 67 89 01 23 45 (HEXA)n…999=”123456789012345”→00 0F 01 23 45 67 89 01 23 45(HEXA)●所有其它类型的字段,若为固定长度,则采用左对齐,其后空位以空格填充。
示例:ans6=”123AB” → 31 32 33 41 42 20 (HEXA)●当某字段表示金额时,格式中不带小数点。
示例:金额23.47表示为2347。
2.4 名词解释Debit与Credit●为了避免混淆,下面给出Debit交易及Credit交易的精确定义。
这些定义是针对信用卡网络而言的,尽管它们也是行业中普遍使用的解释。
●Debit交易是指持卡人必须输入个人密码的交易,本定义与卡类型及访问帐户无关,例如,插入ATM的信用卡做的是Debit交易,本定义与带有PIN交易的处理是一致的:Debit交易可立即对其目标帐户进行借记或贷记。
●Credit交易可以不需要持卡人的个人密码,本定义与卡类型及访问帐户无关,这类交易主要是用于信用卡,虽然在某些情况下也允许用于扣款卡(与场所有关的选项)。
除非提及扣款卡或信用卡,所有用到Debit交易和Credit交易术语的都与上述定义一致。
下面定义适用于不同的卡类型:●信用卡是用于访问信用帐户(如Visa、MasterCard、Amex帐户)的磁条卡。
信用卡有效性授权是针对此类卡的交易。
信用卡交易可以不用个人密码,即可能是Debit交易的一部分。
●借记卡是用于访问持卡人银行帐户的磁条卡,只有在帐户中还有资金或发卡行授予持卡人一定的信用度的情况下,针对此类卡的交易才会被授权。
●双重性质卡(Dual Purpose Card)是既可作为信用卡交易又可作为扣款卡使用的磁条卡,具体情况由持卡人选择的帐户性质确定。
交易类型与终端类型●连到服务器的一些终端只能产生特定类型的交易,例如:如果规定ATM只能产生Debit交易,那么服务器就不允许ATM进行信用交易,另一些终端则能产生两种交易类型,例如,POS能够根据持卡人支付方式的选择产生Debit或信用交易。
3 交易功能及流程3.1 ATM交易功能及流程3.1.1 ATM签到及交换密钥过程签到密钥交换状态报告启动条件:ATM开机或重新建立链路时,需进行密钥交换及签到过程。
过程说明:ATM与服务器采用client/server结构,ATM为client端,服务器为server端。
具体步骤如下:1.ATM向服务器发送0800进行签到。
2.服务器在收到签到后,向A TM发送签到允许响应0810,并将本台ATM的签到状态登记在设备汇总信息表中。
3.ATM向服务器发送0800进行交换密钥请求。
4.服务器在收到密钥请求后,向ATM发送鉴别密钥(MAC Key)和密码密钥(PINKey)响应(0810)。
5.ATM端在收到服务器密钥后,检验密钥是否正确。
如正确则向服务器发出9000ATM状态信息表示签到,不正确则重复1、2步骤。
3.1.2 ATM联机交易过程正常交易冲正交易冲正交易失败处理重发交易处理启动条件:ATM在接收到需主机授权方能进行的交易时,启动此过程。
过程说明:正常交易:1.ATM在收到卡交易、非金融交易后,将交易请求用0200/9000报文传送给服务器。
2.服务器在收到交易请求后,进行交易处理并回响应报文0210/9010给ATM。
3.ATM收到响应后,如果为肯定响应则完成交易,如果为否定响应则拒绝交易。
冲正交易:(需要冲正的交易类型)1.ATM接收交易响应时超时,接收响应报文时,线路故障或收到肯定响应信息后处理有误时,将拒绝此笔交易并自动组成冲正报文0400发到服务器。
2.服务器在收到ATM冲正请求后,检查交易是否成功并发送冲正响应报文0410。
3.如果ATM再次收到不明信息或交易超时,ATM将停止冲正交易。
在下笔顾客插卡进行交易之前,重新冲正前笔交易。
如果冲正成功则完成下笔交易,如果冲正失败,则提示顾客‚网络故障,无法交易‛,重新开始步骤3。
重发交易:(需要重发的交易类型)1、ATM接收交易响应超时,接收响应报文时线路故障或收到肯定响应信息后处理有误时,经操作员手工确认需要重发后自动组成重发报文0201/9001发送到服务器。
2、服务器在收到A TM重发请求后,检查交易是否成功并发送重发响应报文0210/9010。