衫德8583报文实例
报文模拟测试(含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报文39域对照码
银联不支持的银行
C
此发卡方未与中心开通业务
此卡不能受理
33
过期的卡
D
过期的卡
有作弊嫌疑
D
有作弊嫌疑的卡,操作员可以没收
没收卡,请联系收单行
35
受卡方与安全保密部门联系
D
有作弊嫌疑的卡,操作员可以没收
没收卡,请联系收单行
36
受限制的卡
D
有作弊嫌疑的卡,操作员可以没收
65
超出取款次数限制
C
超出取款次数限制
超出取款次数限制
66
受卡方呼受理方安全保密部门
C
受卡方呼受理方安全保密部门
交易失败,请联系收单行或银联
67
捕捉(没收卡)
C
捕捉(没收卡)
没收卡
68
收到的回答太迟
C
发卡行规定时间内没有回答
交易超时,请重试
75
允许的输入PIN次数超限
C
允许的输入PIN次数超限
密码错误次数超限
41
丢失卡
D
挂失的卡,操作员可以没收
没收卡,请联系收单行
42
无此账户
B
发卡行找不到此账户
交易失败,请联系发卡方
43
被窃卡
D
被窃卡,操作员可以没收
没收卡,请联系收单行
44
无此投资账户
C
可能刷卡操作有误
交易失败,请联系发卡行
51
无足够的存款
C
账户内余额不足
余额不足,请查询
52
无此支票账户
C
无此支票账户
交易失败,请联系发卡行
2注2:如果POS交易的批次号和网络中心批次号不一致时应答码会填 “77”,此时POS机应当提示操作员重新签到,再作交易。
CEB8583报文接口说明
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类消息用于在服务器和终端之间传送文件更新数据。
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位。
tongxunxieyi-8583协议
公共支付系统报文接口第四部分商户报文接口V3.0中国银联股份有限公司海南国际金融网络有限公司2004.10版本控制信息目录目录 (3)1、简介 (5)1.1、概述 (5)1.2、适用范围 (5)1.3、引用标准 (5)2、接入方式 (5)3、格式符号说明 (6)4、报文结构说明 (7)5、交易应用说明 (7)5.1、商户发起的交易 (8)5.1.1、连接测试 (8)5.1.2、申请重置密钥 (8)5.1.3、银行卡余额查询 (9)5.1.4、帐单当前费用查询 (12)5.1.5、消费(兼容) (13)5.1.6、消费/单笔代收 (13)5.1.7、接入代理 (14)5.1.8、消费/单笔代收冲正 (16)5.1.9、传定制用户资料请求 (17)5.1.10、传明细请求 (18)5.1.11、取消缴费号码定制关系 (20)5.1.12、取缴费号码销户文件请求 (22)5.2、银联发起的交易 (27)5.2.1、重置密钥请求 (27)5.2.2、查询费用 (27)5.2.3、缴费/充值 (29)5.2.4、缴费/充值冲正 (33)5.2.5、用户定制及定制取消通知 (34)6、补充说明 (41)6.1、商户类型 (41)6.2、受理机构代码 (42)6.3、发送机构代码 (42)6.4、对帐标准 (42)6.5、系统跟踪号(请求流水号)说明 (42)6.6、商户号、终端号分配原则 (42)6.7、批量代扣类信息文件说明 (43)6.7.1、数据交换说明 (43)6.7.2、批量代扣类信息文件 (43)7、附录 (55)7.1、密码加密算法 (55)7.2、MAC算法 (55)1、简介1.1、概述本接口定义了公共支付系统与商户系统之间的应用接口,主要是对接入方式、交易报文的结构、格式,报文域的定义。
1.2、适用范围此接口适用于服务提供商(包括商户计费系统)和接入渠道商系统与公共支付系统。
1.3、引用标准ISO8583标准(1993-12-15)。
8583报文英文资料
4
mmdd
Date of settlement
TRUE
16
Date, conversion
n
4
mmdd
TRUE
17
Date, capture
n
4
mmdd
TRUE
18
Merchant type
n
4
Category code of merchant acquirer. Auth transactions only.
TRUE
11
Systems trace audit number
n
6
Sequence number assigned by message originator. Stays Unchanged through txnlife.
TRUE
12
Time, Local transaction
n
6
hhmmss
0521
Acquirer reconciliation advice repeat
0522
Card issuer reconciliation advice
0523
Card issuer reconciliation advice repeat
0530
Acquirer reconciliation advice response
0302
Card issuer file update request
0310
Acquirer file update request response
0312
Card issuer file update request response
ISO8583各域详解--整理版..
ISO8583各域详解8583协议的报文域编码格式分为:BINARY、CHAR、NUMERIC、LLVAR、LLLVAR、LLLVAR_NUMERIC这几种格式。
BINARY采用二进制编码(8位二进制数编码为一个字节)。
CHAR、LLVAR、LLLVAR为ASC(即正常的getBytes(Encoding))编码。
NUMERIC、LLLVAR_NUMERIC采用BCD(半个字节表示一个10进制数,每两位编码为一个字节)编码。
CHAR、BINARY、NUMERIC都需要指定长度。
CHAR类型左对齐、右补空格。
NUMERIC右对齐、左补零。
LLVAR域前加一个字节的字节长度(采用bcd编码)。
LLLVAR域前加两个字节的字节长度(采用bcd编码)。
LLLVAR_NUMERIC域前加两个字节的长度(注:非字节长度,而是数字的长度,即字节长度的两倍)(采用bcd编码)。
代码中会在IsoField setValue时进行格式化,组装报文时计算LLVAR等域长。
ISO8583域说明ATM、前置机间通讯采用ISO8583 包格式。
以下是位元、报文等的定义。
位元定义: (注:带*号的本行没用)位元数据元名称格式属性会晤报文头An8报文类型an4- (主位图) B641 (扩展位图) B642 主帐号LLVAR n..193 处理代码n64 交易金额n125 清算金额n126* 持卡人签单金额n127 传输日期和时间MMDDhhmmss n108* 持卡人签单手续金额n89 清算兑换率n810* 持卡人签单兑换率n811 系统跟踪审计号n812 本地交易日期和时间YYMMDDhhmmss n613 本地交易日期YYMM n414* 截止日期YYMM n415 结算日期YYMMDD n616* 兑换日期MMDD n417* 受理日期MMDD n418 商户类型n419* 代理机构国家代码n320* 主帐号国家代码n321* 发送机构国家代码n322* 服务点输入方式an1223 卡顺序号n324 卡种类n325 服务点条件代码n426* 受卡方业务代码n427* 批准代码长度n128 交易手续费X+n 829 地区代码N830* 原始金额n24 31* 代理方参考数据LLVAR Ans..9932 受理行标识代码LLVAR n..1133 发送方标识代码LLVAR n..11 34* 扩展的主帐号LLVAR ns..2835 第二磁道数据LLVAR z..3736 第三磁道数据LLLVAR z..104 37* 检索参考号Anp1238 授权代码Anp639 响应代码An2 40* 服务代码n341 终端代码Ans1542 终端标识Ans1543 受卡方名称/地点Ans..4044 附加响应数据LLVAR Ans..25 45* 第一磁道数据LLVAR Ans..76 46* 手续费金额LLLVAR Ans..204 47* 附加数据——国家LLLVAR Ans..99948 附加数据LLLVAR Ans..99949 交易贷币代码n350 结算贷币代码n351* 持卡人签单贷币代码a3或n3 52 个人识别号(PIN)B6453* 安全控制信息LLVAR b..48 54 附加金额LLLVAR An..120 55* 集成电路卡系统数据LLLVAR b..48 56* 原始数据元LLVAR n..35 57* 授权生命周期代码n358* 授权代理机构标识代码LLVAR n..11 59* 传输数据LLLVAR Ans..99960 附加数据LLLVAR Ans..99961 附加数据LLLVAR Ans..99962 主机交易检索号LLLVAR Ans..99963 附加数据LLLVAR Ans..99964 报文鉴别代码字段B6465* 保留给ISO使用b866* 原始手续费金额LLLVAR Ans..204 67* 扩展的付款数据n268* 接收机构国家代码n369* 清算机构国家代码n370 网络管理信息代码n371 报文编号N472* 数据记录LLLVAR Ans..999 73* 动作日期YYMMDD n674* 贷记笔数n1075* 撤消贷记笔数n1076* 借记笔数n1077* 撤消借记笔数n1078* 转帐笔数n1079* 撤消转帐笔数n1080* 查询笔数n1081* 授权笔数n1082* 撤消查询笔数n1083* 付款笔数n1084* 撤消付款笔数n1085* 手续费收取笔数n1086* 贷记金额n1687* 撤消贷记金额n1688* 借记金额n1689* 撤消借记金额n1690 原始交易数据N4291 文件更新代码An192* 交易发起机构国家代码n393* 交易终点机构标识代码LLVAR n..11 94* 交易发卢机构标识代码LLVAR n..11 95 替换金额an..42 96* 密钥管理数据LLLVAR b..999 97* 净对帐金额x+n16 98* 收款人Ans25 99* 清算机构标识代码LLVAR an..11 100 接收机构标识代码LLVAR n..11 101 文件名称LLVAR Ans..17 102 转出帐户帐号LLVAR Ans..28 103 转入帐户帐号LLVAR Ans..28 104 交易描述LLLVAR Ans..999 105* 反向贷记金额n16 106* 反向借记金额n16 107* 反向贷记笔数n10 108* 反向借记笔数n10 109* 手续费贷记金额LLVAR Ans..84 110* 手续费借记金额LLVAR Ans..84 111* 保留给ISO使用LLLVAR Ans..999 112* 保留给ISO使用LLLVAR Ans..999 113* 保留给ISO使用LLLVAR Ans..999 114* 保留给ISO使用LLLVAR Ans..999 115* 保留给ISO使用LLLVAR Ans..999 116* 保留给国家使用LLLVAR Ans..999 117* 保留给国家使用LLLVAR Ans..999 118* 保留给国家使用LLLVAR Ans..999 119* 保留给国家使用LLLVAR Ans..999 120* 保留给国家使用LLLVAR Ans..999 121* 保留给国家使用LLLVAR Ans..999 122* 保留给国家使用LLLVAR Ans..999 123* 保留给民间使用LLVAR Ans..999 124* 保留给民间使用LLVAR Ans..999 125 新个人标识号B64 126* 保留给民间使用LLVAR ans..999 127* 保留给民间使用LLVAR ans..999128 报文鉴别代码字段B641、信息类型(message type)定义位图位置:-格式:定长类型:N4描述:数据包的第一部分,定义数据包的类型。
ISO8583简介
ISO8583简介一、定义与说明二、报文类型1、报文的分类与标识2、报文重复3、报文类型的说明三、位元表和数据元目录四、数据元详解五、拆包举例说明引言金融行业的业务包括有关金融交易的电子信息交换。
应用规范的约定通常局限在专业级别上。
ISO8583国际标准设计了一个保证在采用不同应用规范的系统间能够进行信息交换的界面规范。
各应用规范可保持在专用级别上。
在信息可以转换成能够进行国际交换的界面格式这一总的约束条件下,各应用系统的设计者可享有完全的灵活性。
ISO8583标准使用一个称为“比特图”的概念,在此,对每个数据元在控制字段或比特图中分配一个位置标记。
在一个具体信息中,数据元存在则在指定的位置上用“1”标明,数据元不存在则用“0”标明。
各个系统所采用的信息格式取决于个系统签约双方的商务关系。
ISO8583标准定义的数据格式能构保证符合标准的个系统总是兼容的。
一、定义与说明本节给出简介中涉及的部分术语的解释和定义。
1、版本版本是对交换报文格式的说明,用于区别根据不同标准或同一标准的不同版本所定义的报文格式,如GB/T 15150-94或ISO8583-1993。
报文定义所依据的规范不同,其数据元的含义、组成和数据格式也不尽相同。
本规范的蓝本是国际标准ISO8583-1993《产生报文的银行卡交换报文规范金融交易内容》,并根据国家金卡网络的实际业务需求做了相应的裁剪和补充完善。
与全国银行卡中心连接的各节点机应统一采用本规范所定义的报文格式。
2、位元表用来标识报文中各数据元存在(用1表示)或不存在(用0表示)的一个64比特位序列,包括基本位元表和扩展位元表。
3、报文用于机构或其代理之间交换信息的一个数据元集合,不包括任何用于通信控制或其它目的的标识数据。
4、报文前缀指交换信息包中位于报文之前的一段固定长度和格式的数据序列,用于通信控制、报文流向控制等用途。
5、报文类别指一组报文的集合,描述被执行的一种特定活动。
8583报文基本信息
8583报⽂基本信息域2 主账号Primary Account Number(PAN)域3 交易处理码Processing Code域4 交易⾦额Amount,Transaction域5 清算⾦额Amount,Settlement域6 持卡⼈扣账⾦额Amount,Cardholder Billing域7 交易传输时间Transmission Date/Time域9 清算汇率Conversion Rate,Settlement域10 持卡⼈扣账费率Conversioni Rate,Cardholder Billing域11 系统跟踪号System Trace Audit Number域12 受卡⽅所在地时间Time,Local Transaction域13 受卡⽅所在地⽇期Date,Local Transaction域14 卡有效期Date,Expiration域15 清算⽇期Date,Settlement域16 兑换⽇期Date,Conversion域18 商户类型Merchant's Type域19 商户国家代码Acquiring Institution Country Code域22 服务点输⼊⽅式码Point Of Service Entry Mode Code域23 卡序列号Card Sequence Number域25 服务点条件码Point Of Service域26 服务点PIN获取码Point Of Service PIN Capture Code域28 交易费Amount,Transaction Fee域32 受理机构标识码Acquiring Institution Identification Code域33 发送机构标识码Forwarding Institution Identification Code域35 第⼆磁道数据Track 2 Data域36 第三磁道数据Track 3 Data域37 检索参考号Retrieval Reference Number域38 授权标识应答码Authorization Identification Response域39 应答码Response Code域41 受卡机终端标志码Card Acceptor Terminal Identification域42 受卡⽅标识码Card Acceptor Identification Code域43 受卡⽅名称地址Card Acceptor Name/Location域44 附加响应数据Additional Response Data域45 第⼀磁道数据Track 1 data域48 附加数据-私有Additional Data Private域49 交易货币代码Currency Code,Transaction域50 清算货币代码Currency Code,Settlement域51 持卡⼈账户货币代码Currency Code,Cardholder Billing域52 个⼈标识数据Pin Data域53 安全控制信息Security Related Control Information域54 实际余额Additional Amount域55 基于UICS借贷记标准的IC卡数据域Integrated Circuit Card(ICC)System Related Data 域57 附加交易信息Additional Data Private域59 明细查询数据Detail Inquiring域60 ⾃定义域Reserved域61 持卡⼈⾝份认证信息Cardholder Authentication Information 域62 交换中⼼数据Switching Data域63 ⾦融⽹络数据Finacial Network Data。
ISO8583各域详解--整理版
ISO8583各域详解8583协议的报文域编码格式分为:BINARY、CHAR、NUMERIC、LLVAR、LLLVAR、LLLVAR_NUMERIC这几种格式。
BINARY采用二进制编码(8位二进制数编码为一个字节)。
CHAR、LLVAR、LLLVAR为ASC(即正常的getBytes(Encoding))编码。
NUMERIC、LLLVAR_NUMERIC采用BCD(半个字节表示一个10进制数,每两位编码为一个字节)编码。
CHAR、BINARY、NUMERIC都需要指定长度。
CHAR类型左对齐、右补空格。
NUMERIC右对齐、左补零。
LLVAR域前加一个字节的字节长度(采用bcd编码)。
LLLVAR域前加两个字节的字节长度(采用bcd编码)。
LLLVAR_NUMERIC域前加两个字节的长度(注:非字节长度,而是数字的长度,即字节长度的两倍)(采用bcd编码)。
代码中会在IsoField setValue时进行格式化,组装报文时计算LLVAR等域长。
ISO8583域说明ATM、前置机间通讯采用ISO8583 包格式。
以下是位元、报文等的定义。
位元定义: (注:带*号的本行没用)位元数据元名称格式属性会晤报文头An8报文类型an4- (主位图) B641 (扩展位图) B642 主帐号LLVAR n..193 处理代码n64 交易金额n125 清算金额n126* 持卡人签单金额n127 传输日期和时间MMDDhhmmss n108* 持卡人签单手续金额n89 清算兑换率n810* 持卡人签单兑换率n811 系统跟踪审计号n812 本地交易日期和时间YYMMDDhhmmss n613 本地交易日期YYMM n414* 截止日期YYMM n415 结算日期YYMMDD n616* 兑换日期MMDD n417* 受理日期MMDD n418 商户类型n419* 代理机构国家代码n320* 主帐号国家代码n321* 发送机构国家代码n322* 服务点输入方式an1223 卡顺序号n324 卡种类n325 服务点条件代码n426* 受卡方业务代码n427* 批准代码长度n128 交易手续费X+n 829 地区代码N830* 原始金额n24 31* 代理方参考数据LLVAR Ans..9932 受理行标识代码LLVAR n..1133 发送方标识代码LLVAR n..11 34* 扩展的主帐号LLVAR ns..2835 第二磁道数据LLVAR z..3736 第三磁道数据LLLVAR z..104 37* 检索参考号Anp1238 授权代码Anp639 响应代码An2 40* 服务代码n341 终端代码Ans1542 终端标识Ans1543 受卡方名称/地点Ans..4044 附加响应数据LLVAR Ans..25 45* 第一磁道数据LLVAR Ans..76 46* 手续费金额LLLVAR Ans..204 47* 附加数据——国家LLLVAR Ans..99948 附加数据LLLVAR Ans..99949 交易贷币代码n350 结算贷币代码n351* 持卡人签单贷币代码a3或n3 52 个人识别号(PIN)B6453* 安全控制信息LLVAR b..48 54 附加金额LLLVAR An..120 55* 集成电路卡系统数据LLLVAR b..48 56* 原始数据元LLVAR n..35 57* 授权生命周期代码n358* 授权代理机构标识代码LLVAR n..11 59* 传输数据LLLVAR Ans..99960 附加数据LLLVAR Ans..99961 附加数据LLLVAR Ans..99962 主机交易检索号LLLVAR Ans..99963 附加数据LLLVAR Ans..99964 报文鉴别代码字段B6465* 保留给ISO使用b866* 原始手续费金额LLLVAR Ans..204 67* 扩展的付款数据n268* 接收机构国家代码n369* 清算机构国家代码n370 网络管理信息代码n371 报文编号N472* 数据记录LLLVAR Ans..999 73* 动作日期YYMMDD n674* 贷记笔数n1075* 撤消贷记笔数n1076* 借记笔数n1077* 撤消借记笔数n1078* 转帐笔数n1079* 撤消转帐笔数n1080* 查询笔数n1081* 授权笔数n1082* 撤消查询笔数n1083* 付款笔数n1084* 撤消付款笔数n1085* 手续费收取笔数n1086* 贷记金额n1687* 撤消贷记金额n1688* 借记金额n1689* 撤消借记金额n1690 原始交易数据N4291 文件更新代码An192* 交易发起机构国家代码n393* 交易终点机构标识代码LLVAR n..11 94* 交易发卢机构标识代码LLVAR n..11 95 替换金额an..42 96* 密钥管理数据LLLVAR b..999 97* 净对帐金额x+n16 98* 收款人Ans25 99* 清算机构标识代码LLVAR an..11 100 接收机构标识代码LLVAR n..11 101 文件名称LLVAR Ans..17 102 转出帐户帐号LLVAR Ans..28 103 转入帐户帐号LLVAR Ans..28 104 交易描述LLLVAR Ans..999 105* 反向贷记金额n16 106* 反向借记金额n16 107* 反向贷记笔数n10 108* 反向借记笔数n10 109* 手续费贷记金额LLVAR Ans..84 110* 手续费借记金额LLVAR Ans..84 111* 保留给ISO使用LLLVAR Ans..999 112* 保留给ISO使用LLLVAR Ans..999 113* 保留给ISO使用LLLVAR Ans..999 114* 保留给ISO使用LLLVAR Ans..999 115* 保留给ISO使用LLLVAR Ans..999 116* 保留给国家使用LLLVAR Ans..999 117* 保留给国家使用LLLVAR Ans..999 118* 保留给国家使用LLLVAR Ans..999 119* 保留给国家使用LLLVAR Ans..999 120* 保留给国家使用LLLVAR Ans..999 121* 保留给国家使用LLLVAR Ans..999 122* 保留给国家使用LLLVAR Ans..999 123* 保留给民间使用LLVAR Ans..999 124* 保留给民间使用LLVAR Ans..999 125 新个人标识号B64 126* 保留给民间使用LLVAR ans..999 127* 保留给民间使用LLVAR ans..999128 报文鉴别代码字段B641、信息类型(message type)定义位图位置:-格式:定长类型:N4描述:数据包的第一部分,定义数据包的类型。
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问题 作者: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报文详解
全面掌握ISO8583报文最开始时,金融系统只有IBM这些大的公司来提供设备,象各种主机与终端等。
在各个计算机设备之间,需要交换数据。
我们知道数据是通过网络来传送的,而在网络上传送的数据都是基于0或1这样的二进制数据,如果没有对数据进行编码,则这些数据没有人能够理解,属于没有用的数据。
起初的X.25、SDLC以及现在流行的TCP/IP网络协议都提供底层的通讯编码协议,它们解决了最底层的通讯问题,能够将一串字符从一个地方传送到另一个地方。
但是,仅仅传送字符串是没有太大意义的,怎样来解析字符串代表什么内容是非常重要的,否则传送一些“0123abcd”的字符串也是无用的乱码。
让我们随着时光回到几十年前的某个时刻,假设我们被推到历史的舞台上,由我们来设计一个通用报文协议,来解决金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。
此时,技术是在不断的前行,当初IBM一支独秀的局面好像已经不妙了,各种大小不一的公司都进入金融行业以求能有所斩获,呈一片百花齐放的局面。
我们怎样来设计一个报文协议,能够将这些如雨后春笋般出现的所有公司都纳入进来,其实也不是一件很简单的事。
我们还是先一步步的来考虑吧。
金融行业其实涉及到的数据内容并不是成千上万,无法统计,恰恰相反,是比较少的。
我们都可以在心底数得过来,象交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁3磁数据、交易序列号等,把所有能够总结出来的都总结起来不过100个左右的数据。
那我们可以首先简单的设计ISO8583,定义128个字段,将所有能够考虑到的类似上面提到的“帐号”等金融数据类型,按照一个顺序排起来,分别对应128个字段中的一个字段。
每个数据类型占固定的长度,这个顺序和长度我们都事先定义好。
这样就简单了,要发送一个报文时,就将128个字段按照顺序接起来,然后将接起来的整串数据包发送出去。
任何金融软件收到ISO8583包后,直接按照我们定义的规范解包即可,因为整个报文的128个字段从哪一位到哪一位代表什么,大家都知道,只要知道你的数据包是ISO8583包即可,我们都已经定义好了。
[信息与通信]POS机8583接口文档
[信息与通信]POS机8583接口文档1 概述 ..................................................................... ........................................................................ . (3)2 术语和定义 ..................................................................... ........................................................................ .. (3)2.1 POS 中心 POScenter ................................................................. (3)2.2 特约商户merchant ............................................................... (3)2.3 持卡人 cardholder ................................................................. .. (3)2.4 发卡行issuer ................................................................. .......................................................................32.5 收单行acquirer ............................................................... (3)2.6 参考号 referencenumber ................................................................. . (3)2.7 交易批次号 batch number.................................................................. .. (4)2.8 主账号 primary accountnumber ................................................................. .. (4)2.9 交易处理码 processingcode ................................................................... (4)2.10 POS 流水号 tracenumber ................................................................. .. (4)2.11 服务点输入方式码 point of service entrymode ................................................................... .. (4)2.12 授权码 authorizationnumber ................................................................. (4)2.13 响应码 responsenumber ................................................................. . (4)2.14 个人标识码 personal identification number;PIN .................................................................... . (4)2.15 报文鉴别码 messang authenticationcode;MAC................................................................ .. (5)2.16 安全控制信息 security control relatedinformation ............................................................ . (5)2.17 密钥加密密钥 key encryption key;KEK .................................................................... .. (5)2.18 工作密钥 workingkey;WK ................................................................. (5)3 安全 ..................................................................... ........................................................................ . (5)3.1.1 密钥管理 ..................................................................... .. (5)4 消息域说明 ..................................................................... ........................................................................ .. (6)4.1 说明 ..................................................................... ........................................................................ . (6)4.2 数据类型 ..................................................................... ........................................................................ .. 64.3 数据元名称及其定义 ..................................................................... (7)4.3.1 位图 ..................................................................... . (7)4.3.2 消息类型 ..................................................................... .. (7)4.3.3 域2 ...................................................................... . (8)4.3.4 域3 ...................................................................... . (8)4.3.5 域4 ...................................................................... . (8)4.3.6 域11 ..................................................................... (9)4.3.7 域12 ..................................................................... . (10)4.3.8 域13 ..................................................................... . (10)4.3.9 域14 ..................................................................... .. (11)4.3.10 域15 ..................................................................... .. (11)4.3.11 域22 ..................................................................... . (12)4.3.12 域23 ..................................................................... . (12)4.3.13 域25 ..................................................................... . (13)4.3.14 域26 ..................................................................... . (13)4.3.15 域32 ..................................................................... . (14)4.3.16 域35 ..................................................................... . (14)4.3.17 域36 ..................................................................... . (15)4.3.18 域37 ..................................................................... . (15)4.3.19 域38 ..................................................................... . (16)4.3.20 域39 ..................................................................... . (16)4.3.21 域41 ..................................................................... . (17)4.3.22 域42 ..................................................................... . (17)4.3.23 域44 ..................................................................... . (18)4.3.24 域48 ..................................................................... . (18)4.3.25 域49 ..................................................................... . (19)4.3.26 域52 ..................................................................... . (20)4.3.27 域53 ..................................................................... . (20)4.3.28 域54 ..................................................................... . (21)4.3.29 域55 ..................................................................... . (22)4.3.30 域58 ..................................................................... . (23)4.3.31 域60 ..................................................................... . (25)4.3.32 域61 ..................................................................... . (26)4.3.33 域62 ..................................................................... . (27)4.3.34 域63 ..................................................................... . (29)4.3.35 域64 ..................................................................... . (30)5 终端消息交换说明 ..................................................................... .. (3)5.1 管理类 ..................................................................... ........................................................................ . (30)5.1.1 签到(900800/900810) ........................................................ ................................................ 30 5.1.2 签退(900820/900830) ........................................................ (31)5.1.3 请求黑名单(900840/900850) ........................................................ (31)5.2 消费类 ..................................................................... ........................................................................ . (32)5.2.1 余额查询(310200/310210) ........................................................ .............................................. 32 5.2.2 查询商户授信(310220/310230) ........................................................ ...................................... 33 5.2.3 查询代缴信息(310240/310250)(注意此处发送时,,,,包和其他不一样,数据包头定义如下:) ................................................................... ........................................................................ . (33)5.2.4 充值(630200/630210)(说明:在充值之前先看签到之后获得的商户充值授信额度是否足够,如果不足,不能进行充值,否则可以进行充值,后台会随时更新该额度) (34)5.2.5 充值冲正(630400/630410) ........................................................ .............................................. 35 5.2.6 消费(000201/000211)脱机情况下的检索参考号生成机制,使用MIK将以下数据计算MAC(4字节),然后转换成BCD形式;计算MAC数据包含主帐号【2域】+受卡方所在地时间【11域自己生成】+受卡方所在地日期【12域自己生成】+ Pos中心流水号【37域】+终端代码(41域)+商户代码(42域)+【60域】 ................................................................................................... 36 5.2.7 消费冲正(000400/000410) ........................................................ .............................................. 37 5.2.8 退货(200220/200230) ........................................................ (38)5.2.9 退货冲正(200400/200410) ........................................................ .............................................. 39 5.2.10 批上送(000320/000330) ........................................................ .. (40)5.3 结算类 ..................................................................... ........................................................................ . (41)5.3.1 结算(900500/900510) ........................................................ (41)1 概述2 术语和定义2.1 POS 中心 POS center接受、处理或转发POS的交易请求信息,并向POS回送交易结果信息的机构。
银行卡和ISO8583要点
银联IC卡借贷记应用
对于银联芯片卡的联机交易,收单机构应将卡片给出的应答作为交易确认的基 本信息; 对于银联芯片卡的脱机交易,收单机构应将卡片给出的交易证书(TC)作为交易 确认的基本信息。 收单机构应妥善保管TC及其参与计算TC的数据,因为交易证书(TC)是交易是 否被发卡机构认可的凭证,一旦出现差错或争议时,TC及其计算数据是重要处 理依据。
借记/贷记应用联机处理流程
联机处理
双向认证 发卡行认证数据 发卡行脚本命令 发卡行 •解密ARQC来认证卡片 •授权响应密文ARPC, 授权响应码ARC •发卡行脚本 ARC、ARPC 发卡行脚本 授权请求密文ARQC等
终端发给发卡行 • 授权请求密文ARQC • 生成ARQC的数据
银联IC卡借贷记应用
银联IC卡借贷记应用
银联芯片卡终端应支持正常的芯片卡交易和降级使用交易。终端应首先尝 试进行芯片交易,当芯片或芯片读卡器不能正常工作时方可进行降级使用 交易。 降级使用交易必须联机处理, 如果联机不能则拒绝交易。
不允许终端设备主动提示使用磁条而跳过芯片认证控制。
应正确标识芯片卡交易及降级使用交易。 发卡机构对受理机构正确标识并且经发卡机构授权的降级使用交易承担责 任。
-2-
第1磁道信息格式
%4761739001010010^VISA ACQUIRER TEST CARD 08^10122011143878089?
1 2 3 4 5 6 7 8 9 10 11 起始标志 格式代码 主账号 字段分隔符 姓名 字段分隔符 失效日期 服务代码 附加数据 结束标志 纵向冗余校验位 1 0~2 13~19 1 2~26 1 4 3 可变 1 1 %,见7.1 见7.2 4761739001010010,见7.3 ^,见7.4 VISA ACQUIRER TEST CARD 08,见7.5 ^,见7.4 1012,YYMM见7.6 见7.7 见7.8 ?,见7.9 见7.10
银联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,。
8583报文39域对照码
需要向网络中心签到
D
POS批次与网络中心不一致
请向网络中心签到
79
脱机交易对账不平
C
POS终端上传的脱机数据对账不平
POS终端重传脱机数据
90
日期切换正在处理
C
日期切换正在处理
交易失败,请稍后重试
91
发卡行或银联不能操作
C
电话查询发卡方或银联,可重作
交易失败,请稍后重试
92
金融机构或中间网络设施找不到或无法达到
65
超出取款次数限制
C
超出取款次数限制
超出取款次数限制
66
受卡方呼受理方安全保密部门
C
受卡方呼受理方安全保密部门
交易失败,请联系收单行或银联
67
捕捉(没收卡)
C
捕捉(没收卡)
没收卡
68
收到的回答太迟
C
发卡行规定时间内没有回答
交易超时,请重试
75
允许的输入PIN次数超限
C
允许的输入PIN次数超限
密码错误次数超限
交易失败,请联系发卡行
21
不做任何处理
C
不做任何处理
交易失败,请联系发卡行
22
怀疑操作有误
C
POS状态与中心不符,可重新签到
操作有误,请重试
23
不可接受的交易费
C
不可接受的交易费
交易失败,请联系发卡行
25
未能找到文件上记录
C
发卡行未能找到有关记录
交易失败,请联系发卡行
30
格式错误
C
格式错误
交易失败,请重试
53
无此储蓄卡账户
C
无此储蓄卡账户
银行卡互联ISO8583报文交易的异常处理
银行卡互联ISO8583报文交易的异常处理
刘新迂
【期刊名称】《金融科技时代》
【年(卷),期】1998(000)002
【摘要】银行卡跨行互联网络的每一笔交易,都至少跨越终端、代理行主机、交换中心和发卡行主机4个网络节点,包括交易请求和响应的6段网络路径,同时又工作在联机实时交易状态下。
因而存在着故障出现的必然性和交易要求的实时性、正确性的矛盾,处理不当将直接影响到客户的利益和银行的信誉。
这类应用系统的正常交换功能并不复杂,而网络交易异常处理的问题则十分突出。
有人说,银行卡互联网络技术的一大特点是:用5%的工作量处理95%的
【总页数】3页(P55-57)
【作者】刘新迂
【作者单位】
【正文语种】中文
【中图分类】F830.49
【相关文献】
1.用互联网方式建立银行卡跨行交易差错处理平台 [J], 张春玲;郝义泉
2.SAF技术在邮政金融联网交易异常处理中的应用 [J], 无
3.银行卡自助交易中的差错交易成因及发现方法 [J], 刘晓亮
4.开展银行卡境外交易信息采集完善银行卡跨境交易统计 [J],
5.英国银行卡月交易次数首超10亿交易额137亿英镑 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
memcpy(aucBuf,"0510",4);
ISO8583_SetBitValue(22,aucBuf,4);
break;
Байду номын сангаас default:
memset(aucBuf,0,sizeof(aucBuf));
memcpy(aucBuf,"0520",4);
case TRANS_UNSUBSCRIBEQUERY:
case TRANS_UNSUBSCRIBELOAD:
bcd_asc(aucBuf,G_NORMALTRANS_ucExpiredDate,8);
ISO8583_SetBitValue(14,aucBuf,8);
break;
case TRANS_FULLCOST:
case TRANS_UNSUBSCRIBE:
case TRANS_UNSUBSCRIBEPURCHASE:
case TRANS_UNSUBSCRIBEREGISTER:
case TRANS_UNSUBSCRIBEQUERY:
case TRANS_UNSUBSCRIBELOAD:
}
/* Set time bit 12 */
memset(aucBuf,0,sizeof(aucBuf));
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_OFFPREAUTHFINISH:
case TRANS_TIPADJUST:
ISO8583_SetBitValue(11,aucBuf,6);
break;
default:
long_asc(aucBuf,6,&G_NORMALTRANS_ulTraceNumber);
ISO8583_SetBitValue(11,aucBuf,6);
break;
case TRANS_UNSUBSCRIBEPURCHASE:
memcpy(aucBuf,"000100",6);
break;
case TRANS_UNSUBSCRIBEREGISTER:
case TRANS_UNSUBSCRIBEQUERY:
memcpy(aucBuf,"000200",6);
case TRANS_INTEGRAL:
case TRANS_INTEGRALENQURY:
bcd_asc(aucBuf,G_NORMALTRANS_aucDate,8);
ISO8583_SetBitValue(13,aucBuf,8);
Uart_Printf("Data=%s\n",aucBuf);
case TRANS_UNSUBSCRIBEREGISTER:
case TRANS_UNSUBSCRIBELOAD:
case TRANS_INTEGRAL:
case TRANS_INTEGRALENQURY:
ISO8583_SetMsgID(200);
break;
break;
case TRANS_UNSUBSCRIBELOAD:
memcpy(aucBuf,"500000",6);
break;
case TRANS_INTEGRAL:
memcpy(aucBuf,"20A000",6);
break;
case TRANS_INTEGRALENQURY:
case TRANS_UNSUBSCRIBEQUERY:
case TRANS_UNSUBSCRIBELOAD:
case TRANS_INTEGRAL:
case TRANS_INTEGRALENQURY:
bcd_asc(aucBuf,G_NORMALTRANS_aucTime,6);
break;
case TRANS_PURCHASE:
case TRANS_VOIDPURCHASE:
case TRANS_PREAUTH:
case TRANS_VOIDPREAUTH:
case TRANS_PREAUTHFINISH:
case TRANS_VOIDPREAUTHFINISH:
memcpy(aucBuf,"31A000",6);
break;
default:
return(ERR_UNKNOWNTRANTYPE);
}
ISO8583_SetBitValue(3,aucBuf,6);
/* Set Amount bit 4 */
memset(aucBuf,0,sizeof(aucBuf));
/* Set system trace audit number bit 11 */
memset(aucBuf,0,sizeof(aucBuf));
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_TIPADJUST:
long_asc(aucBuf,6,&DataSave0.ChangeParamData.ulTraceNumber);
ISO8583_SetBitValue(12,aucBuf,6);
Uart_Printf("Time=%s\n",aucBuf);
break;
default:
break;
}
/* Set data bit 13 */
memset(aucBuf,0,sizeof(aucBuf));
case TRANS_TIPADJUST:
case TRANS_VOIDPURCHASE:
case TRANS_REFUND:
case TRANS_FULLCOST:
case TRANS_UNSUBSCRIBEPURCHASE:
case TRANS_UNSUBSCRIBEREGISTER:
break;
case TRANS_INTEGRAL:
case TRANS_INTEGRALENQURY:
memset(aucBuf,0,sizeof(aucBuf));
if(G_EXTRATRANS_ucInputPINLen == 0)
memcpy(aucBuf,"0520",4);
case TRANS_VOIDPURCHASE:
case TRANS_REFUND:
case TRANS_LOADLOG:
case TRANS_FULLCOST:
case TRANS_UNSUBSCRIBE:
case TRANS_UNSUBSCRIBEPURCHASE:
case TRANS_UNSUBSCRIBEREGISTER:
break;
default:
break;
}
/* Set expire data bit 14 */
/* memset(aucBuf,0,sizeof(aucBuf));
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_OFFPREAUTHFINISH:
ISO8583_Clear();
/* Set MSGID */
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_VOIDPURCHASE:
case TRANS_FULLCOST:
case TRANS_UNSUBSCRIBEPURCHASE:
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_OFFPREAUTHFINISH:
case TRANS_TIPADJUST:
case TRANS_VOIDPURCHASE:
case TRANS_REFUND:
case TRANS_LOADLOG:
switch(G_NORMALTRANS_ucTransType)
{
case TRANS_QUERYBAL:
case TRANS_LOADLOG:
case TRANS_UNSUBSCRIBE:
case TRANS_UNSUBSCRIBEQUERY:
case TRANS_INTEGRALENQURY:
case TRANS_REFUND:
case TRANS_OFFPREAUTHFINISH:
case TRANS_FULLCOST:
case TRANS_UNSUBSCRIBEPURCHASE:
case TRANS_UNSUBSCRIBEREGISTER:
case TRANS_UNSUBSCRIBELOAD:
memcpy(aucBuf,"200000",6);
break;
case TRANS_FULLCOST:
case TRANS_LOADLOG:
memcpy(aucBuf,"400000",6);
break;
case TRANS_UNSUBSCRIBE:
ISO8583_SetMsgID(320);
break;
default:
break;
}
ISO8583_SetBitHexValue(2,G_NORMALTRANS_aucSourceAcc,G_NORMALTRANS_ucSourceAccLen/2);