金融信息传输8583协议

    技术2025-09-18  19

    8583协议

      ISO8583报文(简称8583包)又称8583报文是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。

      8583包前面一段为位图,用来确定包的字段域组成情况。

      其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。在POS机的开发上是经常要用到,例如回头客会员管理系统在POS机上的应用就是采用8583报文。

      1、位图描述如下:

      位图位置:1

      格式:定长

      类型:B16(二进制16位,16*8=128bit

      描述:

      如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。

      如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'

      选用条件:如使用65128域,需设位图域第一位为'1'

      2、每个域的定义如下:

      typedef struct ISO8583

      {

      int bit_flag;

      char *data_name;

      int length;

      int length_in_byte;

      int variable_flag;

      int datatyp;

      char *data;

      int attribute;

      } ISO8583;

      ISO8583 Tbl8583[128] =

      {

       {0,"BIT MAP,EXTENDED ", 8, 0, 0, 2, NULL,0},

       {0,"PRIMARY ACCOUNT NUMBER ", 22, 0, 2, 0, NULL,0},

       {0,"PROCESSING CODE ", 6, 0, 0, 0, NULL,0},

       {0,"AMOUNT, TRANSACTION ", 12, 0, 0, 1, NULL,0},

       {0,"NO USE ", 12, 0, 0, 0, NULL,0},

       {0,"NO USE ", 12, 0, 0, 0, NULL,0},

       {0,"TRANSACTION DATE AND TIME ", 10, 0, 0, 0, NULL,0},

       {0,"NO USE ", 8, 0, 0, 0, NULL,0},

       {0,"NO USE ", 8, 0, 0, 0, NULL,0},

       {0,"NO USE ", 8, 0, 0, 0, NULL,0},

       {0,"SYSTEM TRACE AUDIT NUMBER ", 6, 0, 0, 1, NULL,0},

       {0,"TIME, LOCAL TRANSACTION ", 6, 0, 0, 0, NULL,0},

       {0,"DATE, LOCAL TRANSACTION ", 4, 0, 0, 0, NULL,0},

       {0,"DATE, EXPIRATION ", 4, 0, 0, 0, NULL,0},

       {0,"DATE, SETTLEMENT ", 4, 0, 0, 0, NULL,0},

       {0,"NO USE ", 4, 0, 0, 0, NULL,0},

       {0,"DATE, CAPTURE ", 4, 0, 0, 0, NULL,0},

       {0,"MERCHANT'S TYPE ", 4, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"POINT OF SERVICE ENTRY MODE ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"POINT OF SERVICE CONDITION CODE ", 2, 0, 0, 0, NULL,0},

       {0,"NO USE ", 2, 0, 0, 0, NULL,0},

       {0,"NO USE ", 1, 0, 0, 0, NULL,0},

       {0,"field27 ", 6, 0, 0, 0, NULL,0},

       {0,"NO USE ", 8, 0, 1, 0, NULL,0},

       {0,"NO USE ", 8, 0, 1, 0, NULL,0},

       {0,"NO USE ", 8, 0, 1, 0, NULL,0},

       {0,"ACQUIRER INSTITUTION ID. CODE ", 11, 0, 2, 0, NULL,0},

       {0,"FORWARDING INSTITUTION ID. CODE ", 11, 0, 2, 0, NULL,0},

       {0,"NO USE ", 28, 0, 2, 0, NULL,0},

       {0,"TRACK 2 DATA ", 37, 0, 2, 0, NULL,0},

       {0,"TRACK 3 DATA ",104, 0, 3, 0, NULL,0},

       {0,"RETRIEVAL REFERENCE NUMBER ", 12, 0, 0, 0, NULL,0},

       {0,"AUTH. IDENTIFICATION RESPONSE ", 6, 0, 0, 0, NULL,0},

       {0,"RESPONSE CODE ", 2, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"CARD ACCEPTOR TERMINAL ID. ", 8, 0, 0, 0, NULL,0},

       {0,"CARD ACCEPTOR IDENTIFICATION CODE ", 15, 0, 0, 0, NULL,0},

       {0,"CARD ACCEPTOR NAME LOCATION ", 40, 0, 0, 0, NULL,0},

       {0,"ADDITIONAL RESPONSE DATA ", 25, 0, 2, 0, NULL,0},

       {0,"NO USE ", 76, 0, 2, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"field47 ",999, 0, 3, 0, NULL,0},

       {0,"ADDITIONAL DATA --- PRIVATE ",999, 0, 3, 0, NULL,0},

       {0,"CURRENCY CODE,TRANSACTION ", 3, 0, 0, 0, NULL,0},

       {0,"CURRENCY CODE,SETTLEMENT ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ", 3, 0, 0, 0, NULL,0},

       {0,"PERSONAL IDENTIFICATION NUMBER DATA ", 8, 0, 0, 2, NULL,0},

       {0,"SECURITY RELATED CONTROL INformATION", 16, 0, 0, 0, NULL,0},

       {0,"ADDITIONAL AMOUNTS ",120, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ", 5, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ", 11, 0, 3, 0, NULL,0},

       {0,"NO USE ", 11, 0, 3, 0, NULL,0},

       {0,"MESSAGE AUTHENTICATION CODE FIELD ", 8, 0, 0, 2, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ", 1, 0, 0, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"SYSTEM MANAGEMENT INformATION CODE ", 3, 0, 0, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ", 6, 0, 0, 0, NULL,0},

       {0,"NUMBER OF CREDITS ", 10, 0, 0, 0, NULL,0},

       {0,"REVERSAL NUMBER OF CREDITS ", 10, 0, 0, 0, NULL,0},

       {0,"NUMBER OF DEBITS ", 10, 0, 0, 0, NULL,0},

       {0,"REVERSAL NUMBER OF DEBITS ", 10, 0, 0, 0, NULL,0},

       {0,"NUMBER OF TRANSFER ", 10, 0, 0, 0, NULL,0},

       {0,"REVERSAL NUMBER OF TRANSFER ", 10, 0, 0, 0, NULL,0},

       {0,"NUMBER OF INQUIRS ", 10, 0, 0, 0, NULL,0},

       {0,"AUTHORIZATION NUMBER ", 10, 0, 0, 0, NULL,0},

       {0,"NO USE ", 12, 0, 0, 0, NULL,0},

       {0,"CREDITS,TRANSCATION FEEAMOUNT ", 12, 0, 0, 0, NULL,0},

       {0,"NO USE ", 12, 0, 0, 0, NULL,0},

       {0,"DEBITS,TRANSCATION FEEAMOUNT ", 12, 0, 0, 0, NULL,0},

       {0,"AMOUNT OF CREDITS ", 16, 0, 0, 0, NULL,0},

       {0,"REVERSAL AMOUNT OF CREDITS ", 16, 0, 0, 0, NULL,0},

       {0,"AMOUNT OF DEBITS ", 16, 0, 0, 0, NULL,0},

       {0,"REVERSAL AMOUNT OF DEBITS ", 16, 0, 0, 0, NULL,0},

       {0,"ORIGINAL DATA ELEMENTS ", 42, 0, 0, 0, NULL,0},

       {0,"FILE UPDATE CODE ", 1, 0, 0, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"SERVICE INDICATOR ", 7, 0, 0, 0, NULL,0},

       {0,"REPLACEMENT AMOUNTS ", 42, 0, 0, 0, NULL,0},

       {0,"NO USE ", 8, 0, 0, 0, NULL,0},

       {0,"AMOUNT OF NET SETTLEMENT ", 16, 0, 0, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"SETTLEMENT INSTITUTION ID ", 11, 0, 2, 0, NULL,0},

       {0,"RECVEING INSTITUTION ID ", 11, 0, 2, 0, NULL,0},

       {0,"FILENAME ", 17, 0, 2, 0, NULL,0},

       {0,"ACCOUNT IDENTIFICATION1 ", 28, 0, 2, 0, NULL,0},

       {0,"ACCOUNT IDENTIFICATION2 ", 28, 0, 2, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NEW PIN DATA ", 8, 0, 3, 2, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"NO USE ",999, 0, 3, 0, NULL,0},

       {0,"MESSAGE AUTHENTICATION CODE FIELD ", 8, 0, 0, 2, NULL,0},

      };

      3、变长,定长域说明

      如第二域:域名为主帐号,

      数据类型为string

      长度为22(是长长度不得超过此数)

      是个2位变长域

      由于是2位变长,在打包时需在数据域前加上数据的实际长度,如为19位,则表示为:

      19+数据值(即前两位为长度)

      如第三域:域名为处理码,

      数据类型为string

      长度为6

      是个定长域

      必须填满6位。

      附A:ISO8583各域段的说明

      1,信息类型(message type)定义

      位图位置:-

      格式:定长

      类型:N4

      描述:

      数据包的第一部分,定义数据包的类型。

      数据类型由数据包的发起者设定,应遵循以下要求:

      数据包开始部分必须是信息类型;

      对不支持的信息类型能给出拒绝应答。

      0100授权交易

      0110授权交易答复

      0200金融交易

      0210金融交易答复

      0240查询交易

      0250查询交易答复

      0400冲正交易

      0410冲正交易答复

      0800管理交易

      0810管理交易答复

      2,位图(Bit Map) - 基本位图和扩展位图

      位图位置:1

      格式:定长

      类型:B16

      描述:

      如将位图的第一位设为'1',表示使用扩展位图,否则表示只使用基本位图。

      如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'

      选用条件:如使用65128域,需设位图域为'1'

      3Bit02主帐号(Primary Account Number)

      位图位置:02

      格式:变长,LLVAR

      类型:N..22

      描述:

      唯一的确认一个用户交易的基本帐号。

      由于银行电子服务系统涉及多个应用系统,而帐号长度最多为22位,故将原标准的19长度改为22位。

      4Bit03 处理代码 (Processing Code

      位图位置:03

      格式:定长

      类型:N6

      描述:用于描述交易对客户帐户造成何种影响的代码。

      处理代码和信息码一起可唯一定义一种交易的类型。

      处理代码由以下三部分组成:

      位置描述

      12交易动作码

      34付出帐户类型,用于借记类,如查询、代收费、转场交易。

      56收入帐户类型,用于代收费、转帐等。

      其中:

      ff : 付出帐户

      tt: 收入帐户

      * 视主机而定

      5Bit04 交易金额 (Amount, Transaction

      位图位置:04

      格式:定长

      类型:N12

      描述:帐户人要求交易的交易金额,不含任何处理和交易费用。

      金额的表示和货币代码有关,应能表示相应货币的最小单位。参ISO4217有关货币代码定义。

      如“000000000100”用于表示美元,表示1.00元;如用于表示意大利货币,则表示100里拉。

      对于查询等交易,应设交易金额为“000000000000”

      6Bit06交易日期和时间(Transmission Date and Time

      位图位置:07

      格式:定长,MMDDhhmmss

      类型:N10

      描述:本地交易日期和时间

      7Bit11系统跟踪号(Systems Trace Audit Number)

      位图位置:11

      格式:定长

      类型:N6

      描述:终端交易的跟踪号码。

      交易发起终端填写,和交易日期、时间、信息类型等合在一起可唯一定义某一个终端的唯一一笔交易。即是说,在同一天,对一终端,同一类交易的系统跟踪号应保证不同。系统跟踪号在交易过程中不能修改。使用此域来匹配请求和通知类交易的返回。

      应用系统使用此域来检查收到的授权、金融、自动冲正、结算、管理和网管等类交易的应答包是否是其请求包的应答。

      系统跟踪号不用于匹配自动冲正交易,也不用于在预授权消费时匹配前面的预授权交易。参90域。

      对于银行电子服务系统,其系统跟踪号是交易流水号。

      8Bit12本地交易时间(Time ,Local Transaction

      位图位置:12

      格式:定长,hhmmss

      类型:N6

      描述:交易在终端上发生的时间。

      本地交易时间在交易处理过程中不能改变。在自动冲正,存贮转发时,本地交易时间不能改变。

      9Bit13本地交易日期(Date ,Local Transaction)

      位图位置:13

      格式:定长,MMDD

      类型:N4

      描述:交易在终端上发生的时间。

      本地交易时间不能改变,在自动冲正、存储转发交易时,本地交易时间也不能改变。

      10Bit14有效期(Date ,Expiration)

      位图位置:14

      格式:定长,YYMM

      类型:N4

      描述:卡的有效期,年年月月

      由于卡类写磁格式不同,收单行可能提不出卡的有效期,授权机构从卡的二磁道中提取卡的有效期。如卡无二磁道,收单行应要求手工录入卡的有效期。

      选用条件:100200400等交易如没有23磁道时,一定要有此域。

      11Bit15结算日期(Date ,Settlement)

      位图位置:15

      格式:定长,MMDD

      类型:N4

      描述:

      银行电子服务系统和主机结算的时间,格式月月日日。

      结帐日期前发生的交易参加当天结算。

      在结算时,结帐日期也用于计算处理、交易费用。

      12Bit17获取日期(Date ,Capture)

      位图位置:17

      格式:定长,MMDD

      类型:N4

      描述:从主机获取交易的记帐日期。通常用于主机和商户清算。

      13Bit18商户类型(Merchant's Type

      位图位置:18

      格式:定长

      类型:N4

      描述:定义商户产品和服务类型的代码

      商户类型用于金融、授权交易,用于指定服务点的类型。它主要有以下用途:

      决定预授权交易得到确认的最长时间;

      控制合法限额;

      为交易授权处理,控制网络操作规则;

      欺诈检测;

      用于商户分类报表;

      交易费用处理。

      根据ISO8583标准,应使用相应的国家标准。

      商户类型代码表如下:

      商户类型代码行业类型说明

      4215邮递服务

      4511民航

      4722旅游

      4782过桥费

      4789其他运输服务

      4614电信服务

      5542加油站

      5812餐馆

      5999购物

      6010金融机构-人工现金支付

      6011金融机构-自动现金支付

      6012金融机构-各类服务

      7011酒店、旅馆

      7299各类个人服务:洗衣、美容、

      7399各类商业服务:停车场、租车、广告、其他服务

      7699各类维修服务:维修、洗车、拖车

      7996娱乐:电影、剧院、体育、游戏

      8099医疗服务

      8111法律服务

      8999各类专业服务:会计、教育、装修、工程

      选用条件:服务点终端发起的交易一定要有此域。

      14Bit22服务点输入方式(Point-of-Service Entry Mode)

      位图位置:22

      格式:定长

      类型:N3

      描述:在服务终端上定义PINPAN的输入方式。

      服务点输入方式包含以下两个方面组合而成:

      位置描述

      12在服务终端上PAN有效期输入方式

      33在服务终端上PIN的输入方式

      PAN的输入方式编码如下:

      PAN输入方式描述

      00不知

      01手工

      02读磁卡

      03条码扫描仪(BAR

      04光学符号阅读器(OCR

      05集成电路卡(IC卡)

      PIN的输入方式编码如下:

      PIN输入方式描述

      0不知

      1终端能接收PIN

      2终端不能接收PIN

      选用条件:服务点终端发起的交易一定要有此域。

      15Bit25服务点类型代码(Point-of-Service Condition Code)

      位图位置:25

      格式:定长

      类型:N2

      描述:定义交易发生的服务点类型

      用法说明:下面是CYBERBANK支持的服务点条件代码。

      服务点条件代码服务点终端类型

      2自动柜员机(ATM

      10银行终端(10

      14POS

      20电话银行

      16Bit32收单机构标识码(Acquirer institution Identification)

      位图位置:32

      格式:LLVAR

      类型:N..11

      描述:在金融交易中此域表示交易发生的银行机构的标识码

      应答数据包必须和请求数据包此域相同。

      17,Bit3向前机构标识码(Forwarding Institution Identification Code)

      位图位置:33

      格式:LLVAR

      类型:N..11

      描述:在金融交易中此域表示帐户所在的银行机构的标识码

      在网管交易800/810中,本域含有交易发起机构的代码。

      应答数据包必须和请求数据包此域相同。

      18Bit35二磁道数据(Track 2 Data)

      位图位置:35

      格式:LLVAR

      类型:Z..37

      描述:写在卡二磁道的数据。数据组成遵循ISO78111985标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。

      收卡行应检测卡的二磁道是否符合国际标准。

      为支持国际交换收单行应将二磁道中的分隔符换为。除此外不能对二磁道数据进行任何修改,如修改PAN的校验字、有效期、服务码等。

      19Bit36三磁道数据(Track 3 Data)

      位图位置:36

      格式:LLLVAR

      类型:Z...104

      描述:写在卡三磁道的数据。数据应组成遵循ISO4909标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。

      注意:长度说明为3位数字长。

      20Bit37检索索引号(Retrieval Reference Number)

      位图位置:37

      格式:定长

      类型:AN12

      描述:检索索引号用来在任何时间标识一个金融、授权、自动冲正交易。

      检索索引号不要求打印在持卡人的帐单上。它的主要目的是在收单行和授权行之间定义一个数据项用于跟踪和检索交易。授权机构可以将检索索引号打印在客户的对帐单上。

      检索索引号由收单行分配。

      选用条件:可包含在收单机构的交易请求中。如在交易请求中有,则应答数据中一定应原样返回。

      21Bit38授权码(Authorization Identification)

      位图位置:38

      格式:定长

      类型:AN6

      描述:交易授权机构返回的返回代码。

      授权码用于在服务点终端上信用卡授权;

      授权机构按网络操作规定,可选使用本域。

      22Bit39返回码(Response Code)

      位图位置:39

      格式:定长

      类型:AN2

      描述:对一交易定义其处理结果的编码。

      返回码用于说明授权机构对金融(授权)交易的处理状态;也用来指明自动冲正交易的冲正原因;还用来指出目标主机已接收到文件修改、结算、管理、网管等交易请求。

      返回码应尽可能准确,应尽可能描述清楚所遇到的问题和状态。网络交换主机、收单行主机有可能会按不同的返回码收取不同的交易处理费用,并执行不同的处理过程。

     

    转自:http://blog.sina.com.cn/s/blog_4a3cd7ec0100g69e.html

     

    最新回复(0)