EMV/PBOC 之随机交易选择

随机交易选择, 是终端的一个可选功能。如果支持这个功能,意味着终端在EMV/PBOC的交易中,终端会根据交易金额以及终端的参数,决定本笔交易是否被选择为随机交易,如果被选中,将会进行联机交易。

本功能是属于风险管理的一类,随机地选择交易进行联机,不需要不断地联机,也避免一直不联机导致风险增高。而且随机选择中的随机,并不是完全的随机,随着交易金额越大,被选中为联机交易的概率越高。


根据《中国金融集成电路(IC)卡规范 第6部分:借记贷记应用终端规范》中7.8.7的说明,涉及的元素包括:最低限额 、 偏置随机选择阈值 、 随机选择目标百分数和偏置随机选择的最大目标百分数。此外,终端还应产生位于 1 - 99 之间的一个随机数。


这里面有两个概念,一个是随机选择,一个是偏置随机选择。


随机选择:

当金额小于偏置随机选择阈值,终端执行随机选择。做法为:终端产生一个随机数NUM,如果NUM小于 随机选择目标百分数,交易会被选中作为联机交易。(如图1的区域A)


偏置随机选择:

当金额大于偏置随机选择阈值小于最低限额,终端执行偏置随机选择。此时金额越大,被选中的概率越高。计算公式为:插值因子 =( 授权金额 - 阈值 )/( 最低限额 - 阈值 )交易目标百分比 =(( 最大目标百分比 - 目标百分比 ) × 插值因子 )+ 目标百分比。如果终端产生的随机数NUM小于交易目标百分比,交易会被选中作为联机交易(注意TVR需要置位)。(如图1的区域B)


当交易金额大于终端最低限额,交易不进行随机选择。而是进行最低限额检查而联机处理。(如图1的区域C)



逻辑不算复杂,不过真正运用在代码里面的逻辑的时候,犯了个错误,BCTC新的检测case里面检测出问题了。

公式中:插值因子 =( 授权金额 - 阈值 )/( 最低限额 - 阈值 ),根据逻辑理解,这里面授权金额会小于最低限额而大于阈值,因此插值因子肯定是一个大于0而小于1的值。就是说这里面的运算符‘/’是除法,计算出来的结果是一个小数。而在代码里面,对于unsigned char或者unsigned int的变量如果直接用‘/’这个符号,是取整的意思,插值因子的计算结果一直会为0,效果就基本取决于目标百分比与终端产生的随机数之间的比较了。


如果有说错了,请各位指正。

阅读更多

更多精彩内容