银行ATM系统接口.docx
- 文档编号:10810569
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:33
- 大小:30.01KB
银行ATM系统接口.docx
《银行ATM系统接口.docx》由会员分享,可在线阅读,更多相关《银行ATM系统接口.docx(33页珍藏版)》请在冰豆网上搜索。
银行ATM系统接口
ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。
8583包前面一段为位图,用来确定包的字段域组成情况。
其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础。
1、位图描述如下:
位图位置:
1
格式:
定长
类型:
B16(二进制16位,16*8=128bit)
描述:
如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。
选用条件:
如使用65到128域,需设位图域第一位为'1'
2、每个域的定义如下:
typedefstructISO8583
{
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;
ISO8583Tbl8583[128]=
{
/*FLD01*/{0,"BITMAP,EXTENDED",8,0,0,2,NULL,0},
/*FLD02*/{0,"PRIMARYACCOUNTNUMBER",22,0,2,0,NULL,0},
/*FLD03*/{0,"PROCESSINGCODE",6,0,0,0,NULL,0},
/*FLD04*/{0,"AMOUNT,TRANSACTION",12,0,0,1,NULL,0},
/*FLD05*/{0,"NOUSE",12,0,0,0,NULL,0},
/*FLD06*/{0,"NOUSE",12,0,0,0,NULL,0},
/*FLD07*/{0,"TRANSACTIONDATEANDTIME",10,0,0,0,NULL,0},
/*FLD08*/{0,"NOUSE",8,0,0,0,NULL,0},
/*FLD09*/{0,"NOUSE",8,0,0,0,NULL,0},
/*FLD10*/{0,"NOUSE",8,0,0,0,NULL,0},
/*FLD11*/{0,"SYSTEMTRACEAUDITNUMBER",6,0,0,1,NULL,0},
/*FLD12*/{0,"TIME,LOCALTRANSACTION",6,0,0,0,NULL,0},
/*FLD13*/{0,"DATE,LOCALTRANSACTION",4,0,0,0,NULL,0},
/*FLD14*/{0,"DATE,EXPIRATION",4,0,0,0,NULL,0},
/*FLD15*/{0,"DATE,SETTLEMENT",4,0,0,0,NULL,0},
/*FLD16*/{0,"NOUSE",4,0,0,0,NULL,0},
/*FLD17*/{0,"DATE,CAPTURE",4,0,0,0,NULL,0},
/*FLD18*/{0,"MERCHANT'STYPE",4,0,0,0,NULL,0},
/*FLD19*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD20*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD21*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD22*/{0,"POINTOFSERVICEENTRYMODE",3,0,0,0,NULL,0},
/*FLD23*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD24*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD25*/{0,"POINTOFSERVICECONDITIONCODE",2,0,0,0,NULL,0},
/*FLD26*/{0,"NOUSE",2,0,0,0,NULL,0},
/*FLD27*/{0,"NOUSE",1,0,0,0,NULL,0},
/*FLD28*/{0,"field27",6,0,0,0,NULL,0},
/*FLD29*/{0,"NOUSE",8,0,1,0,NULL,0},
/*FLD30*/{0,"NOUSE",8,0,1,0,NULL,0},
/*FLD31*/{0,"NOUSE",8,0,1,0,NULL,0},
/*FLD32*/{0,"ACQUIRERINSTITUTIONID.CODE",11,0,2,0,NULL,0},
/*FLD33*/{0,"FORWARDINGINSTITUTIONID.CODE",11,0,2,0,NULL,0},
/*FLD34*/{0,"NOUSE",28,0,2,0,NULL,0},
/*FLD35*/{0,"TRACK2DATA",37,0,2,0,NULL,0},
/*FLD36*/{0,"TRACK3DATA",104,0,3,0,NULL,0},
/*FLD37*/{0,"RETRIEVALREFERENCENUMBER",12,0,0,0,NULL,0},
/*FLD38*/{0,"AUTH.IDENTIFICATIONRESPONSE",6,0,0,0,NULL,0},
/*FLD39*/{0,"RESPONSECODE",2,0,0,0,NULL,0},
/*FLD40*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD41*/{0,"CARDACCEPTORTERMINALID.",8,0,0,0,NULL,0},
/*FLD42*/{0,"CARDACCEPTORIDENTIFICATIONCODE",15,0,0,0,NULL,0},
/*FLD43*/{0,"CARDACCEPTORNAMELOCATION",40,0,0,0,NULL,0},
/*FLD44*/{0,"ADDITIONALRESPONSEDATA",25,0,2,0,NULL,0},
/*FLD45*/{0,"NOUSE",76,0,2,0,NULL,0},
/*FLD46*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD47*/{0,"field47",999,0,3,0,NULL,0},
/*FLD48*/{0,"ADDITIONALDATA---PRIVATE",999,0,3,0,NULL,0},
/*FLD49*/{0,"CURRENCYCODE,TRANSACTION",3,0,0,0,NULL,0},
/*FLD50*/{0,"CURRENCYCODE,SETTLEMENT",3,0,0,0,NULL,0},
/*FLD51*/{0,"NOUSE",3,0,0,0,NULL,0},
/*FLD52*/{0,"PERSONALIDENTIFICATIONNUMBERDATA",8,0,0,2,NULL,0},
/*FLD53*/{0,"SECURITYRELATEDCONTROLINformATION",16,0,0,0,NULL,0},
/*FLD54*/{0,"ADDITIONALAMOUNTS",120,0,3,0,NULL,0},
/*FLD55*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD56*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD57*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD58*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD59*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD60*/{0,"NOUSE",5,0,3,0,NULL,0},
/*FLD61*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD62*/{0,"NOUSE",11,0,3,0,NULL,0},
/*FLD63*/{0,"NOUSE",11,0,3,0,NULL,0},
/*FLD64*/{0,"MESSAGEAUTHENTICATIONCODEFIELD",8,0,0,2,NULL,0},
/*FLD65*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD66*/{0,"NOUSE",1,0,0,0,NULL,0},
/*FLD67*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD68*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD69*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD70*/{0,"SYSTEMMANAGEMENTINformATIONCODE",3,0,0,0,NULL,0},
/*FLD71*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD72*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD73*/{0,"NOUSE",6,0,0,0,NULL,0},
/*FLD74*/{0,"NUMBEROFCREDITS",10,0,0,0,NULL,0},
/*FLD75*/{0,"REVERSALNUMBEROFCREDITS",10,0,0,0,NULL,0},
/*FLD76*/{0,"NUMBEROFDEBITS",10,0,0,0,NULL,0},
/*FLD77*/{0,"REVERSALNUMBEROFDEBITS",10,0,0,0,NULL,0},
/*FLD78*/{0,"NUMBEROFTRANSFER",10,0,0,0,NULL,0},
/*FLD79*/{0,"REVERSALNUMBEROFTRANSFER",10,0,0,0,NULL,0},
/*FLD80*/{0,"NUMBEROFINQUIRS",10,0,0,0,NULL,0},
/*FLD81*/{0,"AUTHORIZATIONNUMBER",10,0,0,0,NULL,0},
/*FLD82*/{0,"NOUSE",12,0,0,0,NULL,0},
/*FLD83*/{0,"CREDITS,TRANSCATIONFEEAMOUNT",12,0,0,0,NULL,0},
/*FLD84*/{0,"NOUSE",12,0,0,0,NULL,0},
/*FLD85*/{0,"DEBITS,TRANSCATIONFEEAMOUNT",12,0,0,0,NULL,0},
/*FLD86*/{0,"AMOUNTOFCREDITS",16,0,0,0,NULL,0},
/*FLD87*/{0,"REVERSALAMOUNTOFCREDITS",16,0,0,0,NULL,0},
/*FLD88*/{0,"AMOUNTOFDEBITS",16,0,0,0,NULL,0},
/*FLD89*/{0,"REVERSALAMOUNTOFDEBITS",16,0,0,0,NULL,0},
/*FLD90*/{0,"ORIGINALDATAELEMENTS",42,0,0,0,NULL,0},
/*FLD91*/{0,"FILEUPDATECODE",1,0,0,0,NULL,0},
/*FLD92*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD93*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD94*/{0,"SERVICEINDICATOR",7,0,0,0,NULL,0},
/*FLD95*/{0,"REPLACEMENTAMOUNTS",42,0,0,0,NULL,0},
/*FLD96*/{0,"NOUSE",8,0,0,0,NULL,0},
/*FLD97*/{0,"AMOUNTOFNETSETTLEMENT",16,0,0,0,NULL,0},
/*FLD98*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD99*/{0,"SETTLEMENTINSTITUTIONID",11,0,2,0,NULL,0},
/*FLD100*/{0,"RECVEINGINSTITUTIONID",11,0,2,0,NULL,0},
/*FLD101*/{0,"FILENAME",17,0,2,0,NULL,0},
/*FLD102*/{0,"ACCOUNTIDENTIFICATION1",28,0,2,0,NULL,0},
/*FLD103*/{0,"ACCOUNTIDENTIFICATION2",28,0,2,0,NULL,0},
/*FLD104*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD105*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD106*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD107*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD108*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD109*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD110*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD111*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD112*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD113*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD114*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD115*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD116*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD117*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD118*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD119*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD120*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD121*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD122*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD123*/{0,"NEWPINDATA",8,0,3,2,NULL,0},
/*FLD124*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD125*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD126*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD127*/{0,"NOUSE",999,0,3,0,NULL,0},
/*FLD128*/{0,"MESSAGEAUTHENTICATIONCODEFIELD",8,0,0,2,NULL,0},
};
3、变长,定长域说明
如第二域:
域名为主帐号,
数据类型为string
长度为22(是长长度不得超过此数)
是个2位变长域
由于是2位变长,在打包时需在数据域前加上数据的实际长度,如为19位,则表示为:
19+数据值(即前两位为长度)
如第三域:
域名为处理码,
数据类型为string
长度为6
是个定长域
必须填满6位。
附A:
ISO8583各域段的说明
1,信息类型(messagetype)定义
位图位置:
-
格式:
定长
类型:
N4
描述:
数据包的第一部分,定义数据包的类型。
数据类型由数据包的发起者设定,应遵循以下要求:
数据包开始部分必须是信息类型;
对不支持的信息类型能给出拒绝应答。
0100授权交易
0110授权交易答复
0200金融交易
0210金融交易答复
0240查询交易
0250查询交易答复
0400冲正交易
0410冲正交易答复
0800管理交易
0810管理交易答复
2,位图(BitMap)-基本位图和扩展位图
位图位置:
1
格式:
定长
类型:
B16
描述:
如将位图的第一位设为'1',表示使用扩展位图,否则表示只使用基本位图。
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。
选用条件:
如使用65到128域,需设位图域为'1'
3,Bit02主帐号(PrimaryAccountNumber)
位图位置:
02
格式:
变长,LLVAR
类型:
N..22
描述:
唯一的确认一个用户交易的基本帐号。
由于银行电子服务系统涉及多个应用系统,而帐号长度最多为22位,故将原标准的19长度改为22位。
Bit03处理代码(ProcessingCode)
位图位置:
03
格式:
定长
类型:
N6
描述:
用于描述交易对客户帐户造成何种影响的代码。
处理代码和信息码一起可唯一定义一种交易的类型。
处理代码由以下三部分组成:
位置描述
1-2交易动作码
3-4付出帐户类型,用于借记类,如查询、代收费、转场交易。
5-6收入帐户类型,用于代收费、转帐等。
其中:
ff:
付出帐户
tt:
收入帐户
*视主机而定
5,Bit04交易金额(Amount,Transaction)
位图位置:
04
格式:
定长
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 ATM 系统 接口