此接口衍生于中国银联《销售点终端(POS)应用规范》,文件中相关报文域的定义和取值、对终端在受理金融IC卡的要求,请参见上述规范。
注:此接口的交易记录要素衍生于《销售点终端(POS)应用规范》中的“离线结算交易”。
2.1 文件名
此文件由POS终端、商户系统生成,文件名格式组成为“8位日期+15位商户号+8位终端号+3位批次号”(YYYYMMDD88888888888888877777777001),总共34位,其中日期为POS终端填写的脱机交易文件上传的日期,批次号需由POS终端保证在每日上传的脱机交易文件中不重复。文件中可以包含多个商户多个终端的交易,文件名中的商户号和终端号为其中之一即可。
通过银联商户服务平台上传方式,文件必须为ZIP压缩格式,文件名需带后缀.zip,文件尾的MD5为文件压缩前的MD5。
系统对接的方式,201411月底支持文件的ZIP压缩格式,文件名格式组成为“ZP+6位日期+15位商户号+8位终端号+3位批次号”(ZPYYMMDD88888888888888877777777001),总共34位,文件名不带.zip后缀,文件MD5为文件压缩前的MD5。
2.2 文件头
目前仅支持文件版本号取值为0001的情况,其它取值预计201412月底前支持。
位置 | 属性 | 类型 | 内容(I) | 备注 |
0 | ans34 | ASCII | 文件名 | 1、人工通过商户服务平台直接提交文件和采用系统对接的方式无需填写,也不留空格。 2、通过手机和PC机客户端提交文件的方式由POS终端必填,客户端删除,不参与MD5运算。 |
34 | ans4 | ASCII | 文件版本号 | 必填。 取值的含义:第1位保留使用;第2位取值代表交易中是否上送行业信息(0代表不上送;1代表上送);第3位取值代表反馈文件中要求包含的交易种类(0代表包含上送的全部交易;1代表仅包含失败交易);第4位取值代表文件的版本号,适用于对其他域的扩展,目前固定取值为1.具体取值如下: 1、 不带行业信息(63.2.4域)且要求反馈文件中包含所有上送的交易(成功和失败)填写0001 2、 不带行业信息(63.2.4域)且要求反馈文件中仅包含失败交易填写0011 3、 带行业信息(63.2.4域)且要求反馈文件中包含所有上送的交易(成功和失败)填写0101 4、 带行业信息(63.2.4域)且要求反馈文件中仅包含失败交易填写0111 |
38 | n8 | HEX | 文件体长度 | 必填。 注:长度不包括文件头和文件尾 |
46 | ans1 | ASCII | MAC校验和交易加密标志 | 必填。 取值有四种:1、验MAC、交易加密 2、不验MAC、交易加密 3、验MAC、交易不加密 4、不验MAC、交易不加密 注:由于文件体中可以包含多个商户多个终端的交易记录,因此所有商户该标志必须保持统一的取值配置,否则交易会被系统拒绝。 |
47 | ans5 | ASCII | 总交易笔数 | 必填。 单个文件中支持最大99999笔交易、最小0笔,长度不够左补0 |
52 | ans12 | ASCII | 总交易金额 | 必填。 精确到分,长度不够左补0 |
2.3 文件体中每条交易记录的格式
根据文件头中“MAC校验和交易加密标志”的取值的不同,交易记录的格式也不同
格式一、若文件头中“MAC校验和交易加密标志”取值为1(验MAC、交易加密),则交易记录的格式如下
位(域) | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
报文长度 | N4 | HEX | 2 | M | 该笔交易的报文长度(不包括报文长度) | ||
因子1 (41域) | 受卡机终端标识码 | ans8 | ASCII | 8 | M | 终端代码 | |
因子2 | 受卡方标识码 | ans15 | ASCII | 15 | M | 商户代码 | |
因子3 (11域) | 受卡方系统跟踪号 | N6 | BCD | 3 | M | POS终端交易流水 | |
因子4 (12域) | 受卡方所在地时间 | N6 | hhmmss | BCD | 3 | M | 交易发生时终端的时间 |
因子5 (13域) | 受卡方所在地日期 | N4 | MMDD | BCD | 2 | M | 交易发生时终端的日期 |
报文头 | N12 | BCD | 6 | M | |||
除分散因子外的报文域的密文 | M | 报文密文 |
交易记录中报文密文解密后的格式
位(域) | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
消息类型 | N4 | BCD | 2 | 0200 | MSG-TYPE-ID | ||
位元表 | B64 | BINARY | 8 | M | BIT MAP | ||
2域 | 主账号 | n..21 | LLVAR | BCD | 变长 | M | 当22域指明非磁条输入且可判卡号 |
3域 | 交易处理码 | N6 | BCD | 3 | M | 00xxxx | |
4域 | 交易金额 | N12 | BCD | 6 | M | ||
14域 | 卡有效期 | N4 | YYMM | BCD | 2 | C1 | C1:POS能判断时存在 C2:具有有效期的卡存在 |
22域 | 服务点输入方式码 | N3 | BCD | 2 | M | ||
23域 | 卡片序列号 | n3 | BCD | 2 | C | C:当POS能够获得该值时存在; | |
25域 | 服务点条件码 | N2 | BCD | 1 | M | 00 | |
26域 | 服务点PIN获取码 | n2 | BCD | 1 | C | 22域指明PIN可输入且持卡人输入了PIN | |
49域 | 交易货币代码 | an3 | ASCII | 3 | M | ||
55域 | IC卡数据域 | 最大255字节数据 | LLLVAR | 包含多个子域 | 2 | 以下子域中的M仅当该交易为IC卡交易时有效,长度为子域tag+子域长度+子域取值的总长 | |
9F26(tag) | 应用密文 | b64 | BINARY | 11 | M | 存放TC结果 | |
9F27(tag) | 应用信息数据 | b8 | BINARY | 4 | M | 存放TC结果 | |
9F10(tag) | 发卡行应用数据 | b…256 | VAR | BINARY | 35 | M | |
9F37(tag) | 不可预知数 | b32 | BINARY | 7 | M | ||
9F36(tag) | 应用交易计数器 | b16 | BINARY | 5 | M | C:若处理中心返回应答,则在响应中出现,并与请求中的内容一致 | |
95(tag) | 终端验证结果 | b40 | BINARY | 7 | M | ||
9A(tag) | 交易日期 | n6 | BCD | 5 | M | ||
9C(tag) | 交易类型 | n2 | BCD | 3 | M | ||
9F02(tag) | 交易金额 | n12 | BCD | 9 | M | ||
5F2A(tag) | 交易货币代码 | n3 | BCD | 5 | M | ||
82(tag) | 应用交互特征 | b16 | BINARY | 4 | M | ||
9F1A(tag) | 终端国家代码 | n3 | BCD | 5 | M | ||
9F03(tag) | 其它金额 | n12 | BCD | 9 | M | 注1 | |
9F33(tag) | 终端性能 | b24 | BINARY | 6 | M | ||
9F1E(tag) | 接口设备序列号 | an8 | ASCII | 11 | C | 如果终端标识不能隐含确定接口设备序列号,则出现 | |
84(tag) | 专用文件名称 | b…128 | VAR | BINARY | 18 | O | |
9F09(tag) | 应用版本号 | b16 | BINARY | 5 | O | ||
9F41(tag) | 交易序列计数器 | n…4 | VAR | BCD | 5 | O | |
9F34(tag) | 持卡人验证结果 | b24 | BINARY | 6 | O | ||
9F35(tag) | 终端类型 | n2 | BCD | 4 | O | ||
9F63 | 卡产品标识 | b128 | BINARY | 19 | C | 当终端能够获取卡标识信息时,本域出现;否则,本域不出现 | |
9F74 (tag) | 电子现金发卡行授权码 | a6 | ASCII | 9 | C | 小额支付应用且能获取时,必须上送该tag | |
8A (tag) | 授权响应码 | an2 | ASCII | 4 | M | 取值如下: Y1:脱机接受 Y3:不能联机(脱机接受) | |
60域 | 自定义域 | n…017 | LLLVAR | BCD | 2 | M | 包含5个子域 |
60.1 | 交易类型码 | n2 | BCD | 1 | M | 取36 | |
60.2 | 批次号 | n6 | BCD | 3 | M | ||
60.3 | 网络管理码 | n3 | BCD | 2 | C | 有后续子域存在时,本域才出现。非网络管理类交易,此处以缺省值0000填充 | |
60.4 | 终端读取能力 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
60.5 | 基于PBOC借/贷记标准的IC卡条件代码 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
63域 | 自定义域 | ans...063 | LLLVAR | ASCII | 2 | M | 包含2个子域 |
63.1 | 国际信用卡公司代码 | an3 | ASCII | 3 | M | ||
63.2.4 | 自定义域(行业信息) | ans60 | ASCII | 60 | C | 当POS终端需要传送特殊信息时出现 | |
64域 | MAC | b64 | BINARY | 8 | M | 响应消息中39域为“00”时必选 |
格式二、若文件头中“MAC校验和交易加密标志”取值为2(不验MAC、交易加密),则交易记录的格式如下
位 | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
报文长度 | N4 | HEX | 2 | M | |||
因子1 (41域) | 受卡机终端标识码 | ans8 | ASCII | 8 | M | 终端代码 | |
因子2 | 受卡方标识码 | ans15 | ASCII | 15 | M | 商户代码 | |
因子3 (11域) | 受卡方系统跟踪号 | N6 | BCD | 3 | M | POS终端交易流水 | |
因子4 (12域) | 受卡方所在地时间 | N6 | hhmmss | BCD | 3 | M | 交易发生时终端的时间 |
因子5 (13域) | 受卡方所在地日期 | N4 | MMDD | BCD | 2 | M | 交易发生时终端的日期 |
报文头 | N12 | BCD | 6 | M | |||
报文密文 | 除分散因子外的报文域的密文 | M |
交易记录中报文密文解密后的格式
位 | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
消息类型 | N4 | BCD | 2 | 0200 | MSG-TYPE-ID | ||
位元表 | B64 | BINARY | 8 | M | BIT MAP | ||
2域 | 主账号 | n..21 | LLVAR | BCD | 变长 | M | 当22域指明非磁条输入且可判卡号 |
3域 | 交易处理码 | N6 | BCD | 3 | M | 00xxxx | |
4域 | 交易金额 | N12 | BCD | 6 | M | ||
14域 | 卡有效期 | N4 | YYMM | BCD | 2 | C1 | C1:POS能判断时存在 C2:具有有效期的卡存在 |
22域 | 服务点输入方式码 | N3 | BCD | 2 | M | ||
23域 | 卡片序列号 | n3 | BCD | 2 | C | C:当POS能够获得该值时存在; | |
25域 | 服务点条件码 | N2 | BCD | 1 | M | 00 | |
26域 | 服务点PIN获取码 | n2 | BCD | 1 | C | 22域指明PIN可输入且持卡人输入了PIN | |
49域 | 交易货币代码 | an3 | ASCII | 3 | M | ||
55域 | IC卡数据域 | 最大255字节数据 | LLLVAR | 包含多个子域 | 2 | 以下子域中的M仅当该交易为IC卡交易时有效,长度为子域tag+子域长度+子域取值的总长 | |
9F26(tag) | 应用密文 | b64 | BINARY | 11 | M | 存放TC结果 | |
9F27(tag) | 应用信息数据 | b8 | BINARY | 4 | M | 存放TC结果 | |
9F10(tag) | 发卡行应用数据 | b…256 | VAR | BINARY | 35 | M | |
9F37(tag) | 不可预知数 | b32 | BINARY | 7 | M | ||
9F36(tag) | 应用交易计数器 | b16 | BINARY | 5 | M | C:若处理中心返回应答,则在响应中出现,并与请求中的内容一致 | |
95(tag) | 终端验证结果 | b40 | BINARY | 7 | M | ||
9A(tag) | 交易日期 | n6 | BCD | 5 | M | ||
9C(tag) | 交易类型 | n2 | BCD | 3 | M | ||
9F02(tag) | 交易金额 | n12 | BCD | 9 | M | ||
5F2A(tag) | 交易货币代码 | n3 | BCD | 5 | M | ||
82(tag) | 应用交互特征 | b16 | BINARY | 4 | M | ||
9F1A(tag) | 终端国家代码 | n3 | BCD | 5 | M | ||
9F03(tag) | 其它金额 | n12 | BCD | 9 | M | 注1 | |
9F33(tag) | 终端性能 | b24 | BINARY | 6 | M | ||
9F1E(tag) | 接口设备序列号 | an8 | ASCII | 11 | C | 如果终端标识不能隐含确定接口设备序列号,则出现 | |
84(tag) | 专用文件名称 | b…128 | VAR | BINARY | 18 | O | |
9F09(tag) | 应用版本号 | b16 | BINARY | 5 | O | ||
9F41(tag) | 交易序列计数器 | n…4 | VAR | BCD | 5 | O | |
9F34(tag) | 持卡人验证结果 | b24 | BINARY | 6 | O | ||
9F35(tag) | 终端类型 | n2 | BCD | 4 | O | ||
9F63 | 卡产品标识 | b128 | BINARY | 19 | C | 当终端能够获取卡标识信息时,本域出现;否则,本域不出现 | |
9F74 (tag) | 电子现金发卡行授权码 | a6 | ASCII | 9 | C | 小额支付应用且能获取时,必须上送该tag | |
8A (tag) | 授权响应码 | an2 | ASCII | 4 | M | 取值如下: Y1:脱机接受 Y3:不能联机(脱机接受) | |
60域 | 自定义域 | n…017 | LLLVAR | BCD | 2 | M | 包含5个子域 |
60.1 | 交易类型码 | n2 | BCD | 1 | M | 取36 | |
60.2 | 批次号 | n6 | BCD | 3 | M | ||
60.3 | 网络管理码 | n3 | BCD | 2 | C | 有后续子域存在时,本域才出现。非网络管理类交易,此处以缺省值0000填充 | |
60.4 | 终端读取能力 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
60.5 | 基于PBOC借/贷记标准的IC卡条件代码 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
63域 | 自定义域 | ans...063 | LLLVAR | ASCII | 2 | M | 包含2个子域 |
63.1 | 国际信用卡公司代码 | an3 | ASCII | 3 | M | ||
63.2.4 | 自定义域(行业信息) | ans60 | ASCII | 60 | C | 当POS终端需要传送特殊信息时出现 |
格式三、若文件头中“MAC校验和交易加密标志”取值为3(验MAC、交易不加密),则交易记录的格式如下
位 | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
报文长度 | N4 | HEX | 2 | M | |||
因子1 (41域) | 受卡机终端标识码 | ans8 | ASCII | 8 | M | 终端代码 | |
因子2 | 受卡方标识码 | ans15 | ASCII | 15 | M | 商户代码 | |
因子3 (11域) | 受卡方系统跟踪号 | N6 | BCD | 3 | M | POS终端交易流水 | |
因子4 (12域) | 受卡方所在地时间 | N6 | hhmmss | BCD | 3 | M | 交易发生时终端的时间 |
因子5 (13域) | 受卡方所在地日期 | N4 | MMDD | BCD | 2 | M | 交易发生时终端的日期 |
报文头 | N12 | BCD | 6 | M | |||
消息类型 | N4 | BCD | 2 | 0200 | MSG-TYPE-ID | ||
位元表 | B64 | BINARY | 8 | M | BIT MAP | ||
2域 | 主账号 | n..21 | LLVAR | BCD | 变长 | M | 当22域指明非磁条输入且可判卡号 |
3域 | 交易处理码 | N6 | BCD | 3 | M | 00xxxx | |
4域 | 交易金额 | N12 | BCD | 6 | M | ||
14域 | 卡有效期 | N4 | YYMM | BCD | 2 | C1 | C1:POS能判断时存在 C2:具有有效期的卡存在 |
22域 | 服务点输入方式码 | N3 | BCD | 2 | M | ||
23域 | 卡片序列号 | n3 | BCD | 2 | C | C:当POS能够获得该值时存在; | |
25域 | 服务点条件码 | N2 | BCD | 1 | M | 00 | |
26域 | 服务点PIN获取码 | n2 | BCD | 1 | C | 22域指明PIN可输入且持卡人输入了PIN | |
49域 | 交易货币代码 | an3 | ASCII | 3 | M | ||
55域 | IC卡数据域 | 最大255字节数据 | LLLVAR | 包含多个子域 | 2 | 以下子域中的M仅当该交易为IC卡交易时有效,长度为子域tag+子域长度+子域取值的总长 | |
9F26(tag) | 应用密文 | b64 | BINARY | 11 | M | 存放TC结果 | |
9F27(tag) | 应用信息数据 | b8 | BINARY | 4 | M | 存放TC结果 | |
9F10(tag) | 发卡行应用数据 | b…256 | VAR | BINARY | 35 | M | |
9F37(tag) | 不可预知数 | b32 | BINARY | 7 | M | ||
9F36(tag) | 应用交易计数器 | b16 | BINARY | 5 | M | C:若处理中心返回应答,则在响应中出现,并与请求中的内容一致 | |
95(tag) | 终端验证结果 | b40 | BINARY | 7 | M | ||
9A(tag) | 交易日期 | n6 | BCD | 5 | M | ||
9C(tag) | 交易类型 | n2 | BCD | 3 | M | ||
9F02(tag) | 交易金额 | n12 | BCD | 9 | M | ||
5F2A(tag) | 交易货币代码 | n3 | BCD | 5 | M | ||
82(tag) | 应用交互特征 | b16 | BINARY | 4 | M | ||
9F1A(tag) | 终端国家代码 | n3 | BCD | 5 | M | ||
9F03(tag) | 其它金额 | n12 | BCD | 9 | M | 注1 | |
9F33(tag) | 终端性能 | b24 | BINARY | 6 | M | ||
9F1E(tag) | 接口设备序列号 | an8 | ASCII | 11 | C | 如果终端标识不能隐含确定接口设备序列号,则出现 | |
84(tag) | 专用文件名称 | b…128 | VAR | BINARY | 18 | O | |
9F09(tag) | 应用版本号 | b16 | BINARY | 5 | O | ||
9F41(tag) | 交易序列计数器 | n…4 | VAR | BCD | 5 | O | |
9F34(tag) | 持卡人验证结果 | b24 | BINARY | 6 | O | ||
9F35(tag) | 终端类型 | n2 | BCD | 4 | O | ||
9F63 | 卡产品标识 | b128 | BINARY | 19 | C | 当终端能够获取卡标识信息时,本域出现;否则,本域不出现 | |
9F74 (tag) | 电子现金发卡行授权码 | a6 | ASCII | 9 | C | 小额支付应用且能获取时,必须上送该tag | |
8A (tag) | 授权响应码 | an2 | ASCII | 4 | M | 取值如下: Y1:脱机接受 Y3:不能联机(脱机接受) | |
60域 | 自定义域 | n…017 | LLLVAR | BCD | 2 | M | 包含5个子域 |
60.1 | 交易类型码 | n2 | BCD | 1 | M | 取36 | |
60.2 | 批次号 | n6 | BCD | 3 | M | ||
60.3 | 网络管理码 | n3 | BCD | 2 | C | 有后续子域存在时,本域才出现。非网络管理类交易,此处以缺省值0000填充 | |
60.4 | 终端读取能力 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
60.5 | 基于PBOC借/贷记标准的IC卡条件代码 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
63域 | 自定义域 | ans...063 | LLLVAR | ASCII | 2 | M | 包含2个子域 |
63.1 | 国际信用卡公司代码 | an3 | ASCII | 3 | M | ||
63.2.4 | 自定义域(行业信息) | ans60 | ASCII | 60 | C | 当POS终端需要传送特殊信息时出现 | |
64域 | MAC | b64 | BINARY | 8 | M | 响应消息中39域为“00”时必选 |
格式四、若文件头中“MAC校验和交易加密标志”取值为4(不验MAC、交易不加密),则交易记录的格式如下
位 | 域名定义 | 属性 | 格式 | 类型 | 长度(字节) | 请求 | 备 注 |
报文长度 | N4 | HEX | 2 | M | |||
因子1 (41域) | 受卡机终端标识码 | ans8 | ASCII | 8 | M | 终端代码 | |
因子2 | 受卡方标识码 | ans15 | ASCII | 15 | M | 商户代码 | |
因子3 (11域) | 受卡方系统跟踪号 | N6 | BCD | 3 | M | POS终端交易流水 | |
因子4 (12域) | 受卡方所在地时间 | N6 | hhmmss | BCD | 3 | M | 交易发生时终端的时间 |
因子5 (13域) | 受卡方所在地日期 | N4 | MMDD | BCD | 2 | M | 交易发生时终端的日期 |
报文头 | N12 | BCD | 6 | M | |||
消息类型 | N4 | BCD | 2 | 0200 | MSG-TYPE-ID | ||
位元表 | B64 | BINARY | 8 | M | BIT MAP | ||
2域 | 主账号 | n..21 | LLVAR | BCD | 变长 | M | 当22域指明非磁条输入且可判卡号 |
3域 | 交易处理码 | N6 | BCD | 3 | M | 00xxxx | |
4域 | 交易金额 | N12 | BCD | 6 | M | ||
14域 | 卡有效期 | N4 | YYMM | BCD | 2 | C1 | C1:POS能判断时存在 C2:具有有效期的卡存在 |
22域 | 服务点输入方式码 | N3 | BCD | 2 | M | ||
23域 | 卡片序列号 | n3 | BCD | 2 | C | C:当POS能够获得该值时存在; | |
25域 | 服务点条件码 | N2 | BCD | 1 | M | 00 | |
26域 | 服务点PIN获取码 | n2 | BCD | 1 | C | 22域指明PIN可输入且持卡人输入了PIN | |
49域 | 交易货币代码 | an3 | ASCII | 3 | M | ||
55域 | IC卡数据域 | 最大255字节数据 | LLLVAR | 包含多个子域 | 2 | 以下子域中的M仅当该交易为IC卡交易时有效,长度为子域tag+子域长度+子域取值的总长 | |
9F26(tag) | 应用密文 | b64 | BINARY | 11 | M | 存放TC结果 | |
9F27(tag) | 应用信息数据 | b8 | BINARY | 4 | M | 存放TC结果 | |
9F10(tag) | 发卡行应用数据 | b…256 | VAR | BINARY | 35 | M | |
9F37(tag) | 不可预知数 | b32 | BINARY | 7 | M | ||
9F36(tag) | 应用交易计数器 | b16 | BINARY | 5 | M | C:若处理中心返回应答,则在响应中出现,并与请求中的内容一致 | |
95(tag) | 终端验证结果 | b40 | BINARY | 7 | M | ||
9A(tag) | 交易日期 | n6 | BCD | 5 | M | ||
9C(tag) | 交易类型 | n2 | BCD | 3 | M | ||
9F02(tag) | 交易金额 | n12 | BCD | 9 | M | ||
5F2A(tag) | 交易货币代码 | n3 | BCD | 5 | M | ||
82(tag) | 应用交互特征 | b16 | BINARY | 4 | M | ||
9F1A(tag) | 终端国家代码 | n3 | BCD | 5 | M | ||
9F03(tag) | 其它金额 | n12 | BCD | 9 | M | 注1 | |
9F33(tag) | 终端性能 | b24 | BINARY | 6 | M | ||
9F1E(tag) | 接口设备序列号 | an8 | ASCII | 11 | C | 如果终端标识不能隐含确定接口设备序列号,则出现 | |
84(tag) | 专用文件名称 | b…128 | VAR | BINARY | 18 | O | |
9F09(tag) | 应用版本号 | b16 | BINARY | 5 | O | ||
9F41(tag) | 交易序列计数器 | n…4 | VAR | BCD | 5 | O | |
9F34(tag) | 持卡人验证结果 | b24 | BINARY | 6 | O | ||
9F35(tag) | 终端类型 | n2 | BCD | 4 | O | ||
9F63 | 卡产品标识 | b128 | BINARY | 19 | C | 当终端能够获取卡标识信息时,本域出现;否则,本域不出现 | |
9F74 (tag) | 电子现金发卡行授权码 | a6 | ASCII | 9 | C | 小额支付应用且能获取时,必须上送该tag | |
8A (tag) | 授权响应码 | an2 | ASCII | 4 | M | 取值如下: Y1:脱机接受 Y3:不能联机(脱机接受) | |
60域 | 自定义域 | n…017 | LLLVAR | BCD | 2 | M | 包含5个子域 |
60.1 | 交易类型码 | n2 | BCD | 1 | M | 取36 | |
60.2 | 批次号 | n6 | BCD | 3 | M | ||
60.3 | 网络管理码 | n3 | BCD | 2 | C | 有后续子域存在时,本域才出现。非网络管理类交易,此处以缺省值0000填充 | |
60.4 | 终端读取能力 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
60.5 | 基于PBOC借/贷记标准的IC卡条件代码 | n1 | BCD | 0.5 | C | 仅在IC卡交易和Fall Back情况下出现 | |
63域 | 自定义域 | ans...063 | LLLVAR | ASCII | 2 | M | 包含2个子域 |
63.1 | 国际信用卡公司代码 | an3 | ASCII | 3 | M | ||
63.2.4 | 自定义域(行业信息) | ans60 | ASCII | 60 | C | 当POS终端需要传送特殊信息时出现 |
2.4 文件尾
位置 | 属性 | 类型 | 内容(I) | 备注 |
0 | N32 | ASCII | MD5 | 1、人工通过商户服务平台直接提交文件的方式必填。未对文件压缩前的MD5。 2、系统对接、手机和PC机客户端提交文件的方式无需填写(不填空格)。 |
2.5 文件说明
1. 文件采用顺序文件的格式,顺序文件的结构如下图所示:
文件头记录 | 交易记录1 | 交易记录2 | 。。。。 | 交易记录N | 文件尾 |
顺序文件由文件头记录和文件体组成,文件体由一条或多条交易记录组成,文件头定长,每条交易记录对应一笔交易,实际上这些记录并不是独立的行,而是连续的“流”,即记录与记录之间无回车换行符等其它符号。
2. 报文密文解密后的格式与中国银联《销售点终端(POS)应用规范》中定义的“基于PBOC借/贷记标准的IC卡离线交易”报文要求基本相同,差异为: 12域、13域必须由终端上送,为终端真实的交易日期和时间。但是11域、12域、13域、41域、42域放到报文长度和报文头之间做为分散因子计算MAC秘钥和报文加密秘钥。顺序文件由文件头记录和文件体组成,文件体由一条或多条交易记录组成,文件头定长,每条交易记录对应一笔交易,实际上这些记录并不是独立的行,而是连续的“流”,即记录与记录之间无回车换行符等其它符号。
3. POS终端仅上送文件头和加密后的文件体,文件尾由客户端或商户系统补充且不参与整个文件的MD5运算。
4.通过商户服务平台上传的文件必须压缩成.zip格式,文件尾MD5取值为文件未压缩前对文件计算的MD5;通过手机或PC机客户端上传到平台的文件无需压缩,客户端计算整个文件MD5,然后放到文件尾;通过系统对接上传不能压缩文件,后续会支持.zip格式。
2.6 文件样例
以人工登入商户服务系统手工提交的文件格式说明:
1. 交易报文不加密不计算MAC;
2. 非压缩文件;
3. 文件版本号为0001;
4. 系统对接的文件格式,手工删除文件尾32字节的MD5即可。
3.1 文件名
此文件由银联收单系统生成传递商户服务系统供商户获取,如果上传文件未压缩,则文件名组成为“8位日期+15位商户号+8位终端号+3位批次号+R”(YYYYMMDD88888888888888877777777001R);如果上传文件为压缩文件,则文件名组成为“ZP+2位日期+15位商户号+8位终端号+3位批次号+R”(ZPYYMMDD88888888888888877777777001R),总共35位,前34位同上传文件的文件名,最后1位为固定取值R。
通过银联商户服务平台上传方式,反馈文件为非ZIP压缩格式,文件名不带后缀.zip。
系统对接的方式,反馈文件均为非压缩格式。
3.2 文件头
位置 | 属性 | 类型 | 内容(I) | 备注 |
0 | N4 | ASCII | 版本号 | 必填,根据上送文件的版本号返回。 取值的含义:第1位保留使用;第2位取值代表交易中是否上送行业信息(0代表不上送;1代表上送);第3位取值代表反馈文件中要求包含的交易种类(0代表包含上送的全部交易;1代表仅包含失败交易);第4位取值代表文件的版本号,适用于对其他域的扩展,目前固定取值为1.具体取值如下: 1、 不带行业信息(63.2.4域)且要求反馈文件中包含所有上送的交易(成功和失败)填写0001 2、 不带行业信息(63.2.4域)且要求反馈文件中仅包含失败交易填写0011 3、 带行业信息(63.2.4域)且要求反馈文件中包含所有上送的交易(成功和失败)填写0101 4、 带行业信息(63.2.4域)且要求反馈文件中仅包含失败交易填写0111 |
4 | N8 | HEX | 文件体长度 | 必填。 |
8 | N1 | ASCII | MAC校验和交易加密标志 | 必填。取值有四种:1、验MAC、交易加密 2、不验MAC、交易加密 3、验MAC、交易不加密 4、不验MAC、交易不加密 |
9 | N5 | ASCII | 总交易笔数 | 必填。 单个文件中支持最大99999笔交易、最小0笔,长度不够左补0 |
14 | N12 | ASCII | 总交易金额 | 必填。 精确到分,长度不够左补0 |
3.3 文件尾
位置 | 属性 | 类型 | 内容O | 备注 |
0 | N5 | ASCII | 成功记录数 | 必填 |
5 | N5 | ASCII | 失败记录数 | 必填 |
10 | N12 | ASCII | 成功交易金额 | 必填 精确到分 |
22 | N12 | ASCII | 失败交易金额 | 必填 精确到分 |
34 | N1 | ASCII | 文件装载标志 | 必填 取值有三种:1、记录全部拒绝;2、记录部分拒绝;、3、记录全部提交成功 |
3.4 文件体
为方便商户的收单机构通过银联的收单服务平台补登被银联系统拒绝的交易,文件体中交易记录所包含的交易要素均为补登操作必备的要素。
如果上传文件版本号第3位取值为0,则包括成功和拒绝的交易记录;如果取值为1,仅包含被拒绝的交易记录(应答码非00)。
位 | 域名定义 | 属性 | 类型 | 应答 | 字节 | 起始位置 |
2 | 主账号 | n21 | ASCII | M | 21 | 0 |
4 | 交易金额 | n12 | ASCII | M | 12 | 21 |
49 | 交易货币代码 | n3 | ASCII | M | 3 | 33 |
7 | 交易传输时间 | n10 | ASCII | M | 10 | 36 |
11 | 系统跟踪号 | n6 | ASCII | M | 6 | 46 |
37 | 检索参考号 | an12 | ASCII | M | 12 | 52 |
32 | 受理机构代码 | n11 | ASCII | M | 11 | 64 |
33 | 发送机构代码 | n11 | ASCII | M | 11 | 75 |
18 | 商户类型 | n4 | ASCII | M | 4 | 86 |
41 | 受卡机终端标识码 | ans8 | ASCII | M | 8 | 90 |
42 | 受卡方标识码 | an15 | ASCII | M | 15 | 98 |
43 | 受卡方名称地址 | ans40 | ASCII | M | 40 | 113 |
60.3.1 | 特殊计费标志 | n2 | ASCII | M | 2 | 153 |
60.3.2 | 特殊计费档次 | n1 | ASCII | M | 1 | 155 |
9a(tag) | 交易日期 | n6 | ASCII | M | 6 | 156 |
14 | 卡有效期 | n4 | ASCII | M | 4 | 162 |
22 | 服务点输入方式码 | n3 | ASCII | M | 3 | 166 |
23 | 卡片序列号 | n3 | ASCII | M | 3 | 169 |
9f26(tag) | 应用密文 | an16 | ASCII | M | 16 | 172 |
9f10(tag) | 发卡行应用数据 | an64 | ASCII | M | 64 | 188 |
9f37(tag) | 不可预知数 | an8 | ASCII | M | 8 | 252 |
9f36(tag) | 应用交易计数器 | an4 | ASCII | M | 4 | 260 |
95(tag) | 终端验证结果 | an10 | ASCII | M | 10 | 264 |
82(tag) | 应用交互特征 | an4 | ASCII | M | 4 | 274 |
9f1a(tag) | 终端国家代码 | n3 | ASCII | M | 3 | 278 |
9f33(tag) | 终端性能 | an6 | ASCII | M | 6 | 281 |
60.4 | 终端读取能力 | n1 | ASCII | M | 1 | 287 |
15 | 清算日期 | n8 | ASCII | M | 8 | 288 |
12 | 受卡方所在地时间 | n6 | ASCII | M | 6 | 296 |
38 | 应答码 | n2 | ASCII | M | 2 | 302 |
63.2.4 | 自定义域(行业信息) | ans60 | ASCII | C | 60 | 304 |
注:具体的应答码含义参见中国银联《销售点终端(POS)应用规范》。
3.5 文件说明
采用流水文件的格式,流水文件的结构如下:
文件头 记录1:字段1 字段2 。。。。。。。。。。 字段N 记录2:字段1 字段2 。。。。。。。。。。 字段N 记录3:字段1 字段2 。。。。。。。。。。 字段N 。。。。。。。。。。。。。。。。。。。 记录N:字段1 字段2 。。。。。。。。。。 字段N 文件尾 |
流水文件结构图
――在同一个文件中,每一行的长度相同;
――每一行是一条记录,表示一笔交易;
――每一行的最后一个域之后跟一个回车换行符(0x0D,0x0A)。
――域和域之间没有空格,如果某个字段长度不够,对于字符形式的需要左对齐,右补空格,交易金额没有小数点并以分为单位。
在本接口中,除了遵循银联直联终端规范和联网联合规范所定义的安全要求之外,其他所有对称加解密全部采用双倍长密钥的3DES算法,所有非对称加解密全部采用密钥长度为1024位的RSA算法。在终端在灌装主密钥时,建议一并把银联IC卡公钥和IC卡参数灌装到终端中,终端的IC卡公钥和IC卡参数文件可由银联分公司或商户的收单机构在“银联商户管理平台->直联商户信息维护->终端参数维护”中查询到已入网终端后下载,界面如下:
本方案中所涉及的密钥及其用途和管理方式如下表所示:
密钥名称 | 密钥长度 | 密钥用途 | 管理方式 |
POS终端主密钥(TMK) | 16字节 | 用于分散交易记录MAC值的密钥 | POS终端中 |
脱机交易记录mac密钥 (DMACK) | 16字节 | 用于计算交易记录的MAC值 | POS终端中(由 TMK 分散) |
DMACK是交易记录的MAC密钥,由相应的POS终端主密钥(TMK)分散而来。分散因子如下:商户号(F42)、终端号(F41)、终端流水号(F11)、交易时间(F12) 、交易日期(F13)。
注:分散因子放在每笔交易记录的报文长度的后面,在报文头前面。
1. 算法数据说明:
DivData1 = 商户号(15)+ 80
DivData2 = 【终端号(8字节)】+【终端流水号(3字节)】 +【交易时间(3)】
+交易日期(2)】
2. DMACK生成流程说明:
3.分散流程详细说明:
步骤1:通过TMK做3DES加密产生UDK,待加密的数据为:DivData1。
步骤2:通过UDK做3DES加密产生MAK,待加密的数据为:DivData2。
上述的MAK就是最终的工作密钥,长度为十六字节。随每笔交易的不同而动态变化
4.报文算MAC:
报文中的分散因子不参与算MAB,剩下的报文域参与算MAB,MAB的组成与中国银联《销售点终端(POS)应用规范》中的组成方式保持一致。但MAK由原来的8字节改成16字节。
5.报文信息加密:
对分散因子外的所有报文域进行3DES加密,加密的结果就是交易记录中的报文密文,加密密钥为MAK。
6.报文信息解密:
用MAK对报文密文解密,解密后的明文后面可能出现填充的字节(加密前为补足8字节的倍数而填充的字节),银联收单平台按照明文中的bitmap解包,解到最后一个域后,直接丢弃剩下的填充字节。
一、MAC算法如下(采用9.9算法):
1、分散终端主密钥得到MAK
2、MAC计算数据 = MAB,如果MAB数据长度不是8字节整数倍 则用0x00填充至8字节整数倍;如果正好是整数倍,则不填充。
3、将MAB按8字节一组 分成n组 MAB1、MAB2、MAB3......MABn
4、用用8字节0与MAB1 异或得到MAB1-p
5、用MAK(3DES)加密MAB1-p 得到MAB1-c
6、用MAB1-c 与 MAB2异或得到 MAB2-p
7、用MAK(3DES)加密MAB2-p 得到MAB2-c
8、用MAB2-c 与 MAB3异或得到 MAB3-p
9、用MAK(3DES)加密MAB3-p 得到MAB3-c
10、循环处理一直到最后一个分组异或加密后得到MABn-c ,MABn-c就是最终的MAC值
二、报文加密
1、分散终端主密钥得到MAK
2、MAC计算数据 = MAB,如果MAB数据长度不是8字节整数倍 则用0x00填充至8字节整数倍;如果正好是整数倍 则不填充。
3、将MAB按8字节一组 分成n组 MAB1、MAB2、MAB3......MABn
4、用MAK(3DES)加密MAB1 得到MAB1-c
5、用MAK(3DES)加密MAB2得到MAB2-c
6、用MAK(3DES)加密MAB3得到MAB3-c
7、用MAK(3DES)加密MABn得到MABn-c
8、顺序MAB1-c、MAB2-c,.......,MABn-c将拼接一起,就是最终的报文密文
一、计算MAC<0xB261>
说明:解密输入的密钥(TMK)分散后得到工作密钥,然后计算MAC
消息格式:
输入域 | 长度 | 类型 | 备注 |
命令类型 | 1 | H | 0xB2 |
命令 | 1 | H | 0x61 |
用户保留字 | 8 | H | 原样返回 |
SEK类型 | 1 | H | 0:区域主密钥 1:次主密钥 |
主密钥索引(SEK) | 2 | H | 主密钥索引 |
TMK长度 | 1 | H | 8,16,24 |
输入的TMK密文 | N | H | |
分散次数 | 1 | H | 0-3 |
分散数据 | N | H | 分散次数*8 |
临时密钥计算方法 | 1 | H | 0:3DES(单长度临时密钥) 1:DOUBLE_ONE_WAY 2:1次分散(双长度临时密钥) 3:不使用临时密钥 4:使用银联专用算法分散(IC卡脱机交易) |
临时密钥计算数据 | N | H | 当临时密钥计算方法为3时不存在 |
MAC计算方式 | 1 | H | 0:9.9 1:9.19 2:PBOC-3des 其他保留 |
MAC数据长度 | 2 | H | |
MAC数据 | N | H | |
输出域 | 长度 | 类型 | 备注 |
应答码 | 1 | A | ‘A’ |
用户保留字 | 8 | H | |
MAC | 8 | H | |
或 | |||
应答码 | 1 | A | “E” |
用户保留字 | 8 | H | |
错误码 | 1 | H | 0x70:非法次主密钥索引号 0x72:无次主密钥 0xC3:分配空间失败 |
注:“临时密钥计算方法”使用04(银联专用算法分散(IC卡脱机交易))。
分散次数为0,分散数据为空,“临时密钥计算数据”填入16字节的DivData1和16字节的DivData2。 “MAC计算方式”用0(9.9)。
举例如下:
B261
0000000000000000
00
0008
10
0CD08C1F041424DE0CD08C1F041424DE
00
04
3939393939393939393933333333338038383838383838381712170828779001
01
00A8
02007000068000008213166259570000091113000000000000000009072000010031353601159F26083B90B4EC84CDE1209F2701409F101307011703900000010A010000088412CF0AA7969F3704BE03C63E9F3602003A950500000000009A031308289C01009F02060000000000095F2A02015682027C009F1A0201569F03060000000000009F74064543433030319F3303E0E1C88A025931001336000834000600000343555000
二、加解密数据<0xB262>
说明:解密输入的密钥(TMK)分散后得到工作密钥,然后加密或解密数据
消息格式:
输入域 | 长度 | 类型 | 备注 |
命令类型 | 1 | H | 0xB2 |
命令 | 1 | H | 0x62 |
用户保留字 | 8 | H | 原样返回 |
SEK类型 | 1 | H | 0:区域主密钥 1:次主密钥 |
主密钥索引(SEK) | 2 | H | 主密钥索引 |
TMK长度 | 1 | H | 8,16,24 |
输入的TMK密文 | N | H | |
分散次数 | 1 | H | 0-3 |
分散数据 | N | H | 分散次数*8 |
临时密钥计算方法 | 1 | H | 0:3DES(单长度临时密钥) 1:DOUBLE_ONE_WAY 2:1次分散(双长度临时密钥) 3:不使用临时密钥 4:使用银联专用算法分散(IC卡脱机交易) |
临时密钥计算数据 | N | H | 当临时密钥计算方法为3时不存在 |
加解密标志 | 1 | H | 0:解密 1:加密 |
数据长度 | 2 | H | 8字节的整数备 |
数据 | N | H | |
输出域 | 长度 | 类型 | 备注 |
应答码 | 1 | A | ‘A’ |
用户保留字 | 8 | H | |
输出数据长度 | 2 | H | |
加解密后的数据 | 8 | H | |
或 | |||
应答码 | 1 | A | “E” |
用户保留字 | 8 | H | |
错误码 | 1 | H | 0x70:非法次主密钥索引号 0x72:无次主密钥 0xC3:分配空间失败 |
注:“临时密钥计算方法”使用04(银联专用算法分散(IC卡脱机交易))。
分散次数为0,分散数据为空,“临时密钥计算数据”填入16字节的DivData1和16字节的DivData2。
举例如下:
加密:
B262
0000000000000000
00
0008
10
0CD08C1F041424DE0CD08C1F041424DE
00
04
3939393939393939393933333333338038383838383838387790050905490829
01
00A8
02007000068000008212166259570000091113000000000000000001072000010031353601159F2608EA95703344D3A5889F2701409F101307011703900000010A010000088408E972A7119F370406C262319F3602003C950500000000009A031308299C01009F02060000000000015F2A02015682027C009F1A0201569F03060000000000009F74064543433030319F3303E0E1C88A025931001336000835000600000343555000