PBOC流程解析(十) 脚本处理

POS规范 -- IC卡操作流程 2016/09/28

脚本处理

(一)文档说明

从主机返回的授权响应报文中可能包含以下的与脚本处理相关的数据。 一个标签72的BER-TLV编码的结构数据对象称为一个发卡行脚本。 一个发卡行脚本里应当包含一条或多条准备发送给IC卡的发卡行脚本命令, 每一条发卡行脚本命令以标签为86的BER-TLV格式编码。 一个发卡行脚本还可以包含且仅包含一条发卡行脚本标识, 发卡行脚本标识的标签为9F18。 发卡行脚本中是否包含发卡行脚本标识是可选的终端和卡片无须解释该标识的含义。 发卡行脚本的具体格式请见表33和表34。

				表33  发卡行脚本格式 
标签  长度  标签  长度  发卡行脚本标识  发卡行脚本命令 
‘72’  该脚本后续所有数据的长度总和 ‘9F18’  0x04  发卡行自定  (见表 34) 

				表34  发卡行脚本命令格式 
标签 1  长度 1  值 1  标签 2  长度 2  值 2  … 
‘86’  值 1 的长度  发送给 IC 卡的命令  ‘86’  值 2 的长度  发送给 IC 卡的命令  … 

(二)资料解析

举例说明 转载技术为王

下面通过实例进一步说明,
71169F180455667788860D8424000008AABBCCDD11223344
解析如下:
71—脚本Tag
16—总长度
9F18—脚本标识符tag,
04—脚本标识符长度
55667788—脚本序列号
86--脚本命令tag
0D—脚本命令长度
8424000008AABBCCDD11223344—脚本命令	 

简单说明一下, 脚本标识符对终端来说的意义就是最终的脚本结果带有标识符,下面会讲到. 86开始就是真正的脚本命令了,一个71或者72,可以带多个86的脚本,比如下面这样的(可以自己解析一下):

724E9F180411223344860D8416000008AABBCCDD11223344860D8424000008AABBCCDD112233448609842400000455667788860D8416000008AABBCCDD
11223344860D8416000008AABBCCDD11223344 

再说说脚本结果. 共有5个字节,
第1 个字节:包含脚本处理结果和脚本处理失败时脚本的命令序号。如果脚本处理成功,这个序列号为0
第2 至5 字节:包含发卡行脚本中收到的发卡行脚本标识符

情况1
如果脚本命令执行成功,脚本结果的第1字节置为‘2x’, x表示脚本序号, 还是上实例,

72219F180411223344860D8424000008AABBCCDD112233448609842400000455667788
脚本结果是20 11 22 33 44.

再来一个,
71309F180411223344860D8416000008AABBCCDD11223344860D8424000008AABBCCDD1122334486098424000004AABBCCDD72309F180444332211
860D8416000008AABBCCDD11223344860D8424000008AABBCCDD1122334486098424000004AABBCCDD

脚本结果是20 11 22 33 44 20 44 33 22 11
注意第二个示例,其实是一个脚本,两组脚本标识.
 
情况2
如果卡片对脚本命令的响应的SW1不为‘90’、‘62’或‘63’,表示命令处理失败,则终端必须置发卡行脚本结果第1字节为’1x’,示例如下:
71309F180411223344860D8416000008AABBCCDD11223344860D8424000008AABBCCDD112233448609842400000455667788
这里面有三条86的命令,假设第二条执行失败了, 那么脚本结果是12 11 22 33 44.

情况3
如果接收到发卡行脚本,但未能正确解包,因而没有向IC卡发送脚本命令,则发卡行脚本结果第1字节置‘00’。

示例1
720D8416000008AABBCCDD11223344
这个脚本格式不符合图14, 解析就会出错,不会发给ic卡, 又没有脚本标识符, 所以脚本结果为00 00 00 00 00.
示例2
72169F18041122334486098416000008AABBCCDD11223344
这个脚本也是格式有错,86的长度不对, 但是它有脚本标识, 所以脚本结果为
00 11 22 33 44
示例3
71149F1804112233448416000008AABBCCDD1122334472149F1804556677888416000008AABBCCDD11223344
这是有两组脚本标识的情况.脚本结果为
00 11 22 33 44 00 55 66 77 88

(三)源码片段分析

(四)常见问题及分析

1.脚本命令数据直接解析出来一条一条原样发给卡片验证…

2.脚本结果保存在DF31里面,在下笔交易联机前上送脚本通知(参见POS规范)


扫描关注我

(转载本站文章请注明作者和出处 Undefined

Post Directory