1、ISO8583报文协议详情详解ISO8583报文协议详解ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。 8583包前面一段为位图,用来确定包的字段域组成情况。 其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。1、位图描述如下: 位图位置:1 格式:定长 类型:B16(二进制16位,16*8=128bit) 描述: 如将位图的第一位设为1,表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。 如使用某数据域,应在位图中将相应的位设位1,如使用41域
2、,需将位图的41位设为1。 选用条件:如使用65到128域,需设位图域第一位为12、每个域的定义如下: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 - bi
3、nary*/ char *data; /*存放具体值*/ int attribute; /*保留*/ ISO8583;ISO8583 Tbl8583128 =/* 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,/*
4、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
5、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
6、,0,/* FLD 17 */ 0,DATE, CAPTURE , 4, 0, 0, 0, NULL,0,/* FLD 18 */ 0,MERCHANTS 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,/*
7、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, NULL,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 U
8、SE , 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, NULL,0,/* FLD 33 */ 0,FORWARDING INSTITUTION ID. CODE , 11, 0, 2, 0, NULL,0,/* FLD 34 */ 0,NO USE , 28, 0, 2, 0, NULL,0,/* FLD 35
9、*/ 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,
10、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
11、, 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
12、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 U
13、SE ,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 */
14、 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 ,
15、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 73 */ 0,NO USE , 6, 0, 0, 0, NULL,0,/* FLD 74 */ 0,NUMBER OF CREDITS , 10, 0, 0, 0, NULL,0,/* FLD 75 */ 0,REVERSA
16、L 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,NUMBE
17、R 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,
18、 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,
19、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, NU
20、LL,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,A
21、CCOUNT 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 107 */ 0,NO USE ,999, 0, 3, 0, NULL,0,/* FLD 108 */
22、 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,
23、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,
24、 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 */ 0,NO USE ,999, 0, 3, 0, NULL,0,/* FLD 127 */ 0,NO USE ,999, 0, 3, 0, NULL,0,/* FLD 128 *
25、/ 0,MESSAGE AUTHENTICATION CODE FIELD , 8, 0, 0, 2, NULL,0,;、变长,定长域说明如第二域:域名为主,数据类型为string长度为22(是长长度不得超过此数)是个位变长域由于是位变长,在打包时需在数据域前加上数据的实际长度,如为位,则表示为:数据值(即前两位为长度)如第三域:域名为处理码,数据类型为string长度为是个定长域必须填满位。附A:ISO8583各域段的说明1,信息类型(message type)定义位图位置: 格式:定长 类型:N4 描述: 数据包的第一部分,定义数据包的类型。 数据类型由数据包的发起者设定,应遵循以下要求:
26、 数据包开始部分必须是信息类型; 对不支持的信息类型能给出拒绝应答。 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
27、 Account Number)位图位置:02 格式:变长,LLVAR 类型:N.22 描述: 唯一的确认一个用户交易的基本。 由于银行电子服务系统涉及多个应用系统,而长度最多为22位,故将原标准的19长度改为22位。4、Bit03 处理代码 (Processing Code)位图位置:03 格式:定长 类型:N6 描述:用于描述交易对客户造成何种影响的代码。 处理代码和信息码一起可唯一定义一种交易的类型。 处理代码由以下三部分组成: 位置描述 12交易动作码 34付出类型,用于借记类,如查询、代收费、转场交易。 56收入类型,用于代收费、转帐等。 其中: ff : 付出 tt: 收入 * 视
28、主机而定 5,Bit04 交易金额 (Amount, Transaction)位图位置:04 格式:定长 类型:N12 描述:人要求交易的交易金额,不含任何处理和交易费用。 金额的表示和货币代码有关,应能表示相应货币的最小单位。参ISO4217有关货币代码定义。 如“000000000100”用于表示美元,表示1.00元;如用于表示意大利货币,则表示100里拉。 对于查询等交易,应设交易金额为“000000000000”。 6,Bit06交易日期和时间(Transmission Date and Time)位图位置:07 格式:定长,MMDDhhmmss 类型:N10 描述:本地交易日期和时间
29、 7,Bit11系统跟踪号(Systems Trace Audit Number)位图位置:11 格式:定长 类型:N6 描述:终端交易的跟踪。 交易发起终端填写,和“交易日期、时间”、信息类型等合在一起可唯一定义某一个终端的唯一一笔交易。即是说,在同一天,对一终端,同一类交易的系统跟踪号应保证不同。系统跟踪号在交易过程中不能修改。使用此域来匹配请求和通知类交易的返回。 应用系统使用此域来检查收到的授权、金融、自动冲正、结算、管理和网管等类交易的应答包是否是其请求包的应答。 系统跟踪号不用于匹配自动冲正交易,也不用于在预授权消费时匹配前面的预授权交易。参90域。 对于银行电子服务系统,其系统跟踪号是交易流水号。 8,Bit12本地交易时间(Time ,Local Transaction)位图位置:12 格式:定长,hhmmss 类型:N6 描述:交易在终端上发生的时间。 本地交易时间在交易处理过程中不能改变。在自动冲正,存贮转发时,本地交易时间不能改变。 9,Bit13本地交易日期(Date ,Local Transaction)位图位置:13 格式:定长,MMDD 类型:N4 描述:交易在终端上发生的时间。 本地交