我无法找到有关可能包含在PDOL中的潜在标签的信息(按照内核类型,即Visa,万事达卡等)。我已经查看了所有的书A-D,第1-4册pdf无济于事(例外是C-1)。我对C-2和C-3的名单特别感兴趣。
我的问题是,目前我根据这样的switch
语句构建了与PDOL相关的数据:
switch (item.getTag()) {
case AMOUNT_AUTHORISED_NUMERIC:
out.write(ByteUtils.leftPad(ByteUtils.intToUnpackedBcd(txData.getAmountAuthorized()), 6));
break;
case AMOUNT_OTHER_NUMERIC:
out.write(ByteUtils.leftPad(ByteUtils.intToUnpackedBcd(txData.getAmountOther()), 6));
break;
case TERMINAL_COUNTRY_CODE:
out.write(ByteUtils.intToUnpackedBcd(terminalConfiguration.getCountryCode().getNumeric()));
break;
case TRANSACTION_CURRENCY_CODE:
out.write(ByteUtils.leftPad(ByteUtils.intToUnpackedBcd(txData.getCurrency().getISOCodeNumeric()), 2));
break;
...
对于这种方法,我必须知道在PDOL中可以请求哪些标记以添加case
。
另一种方法是用Map
填充我有信息的所有标签及其各自的值,并在构造PDOL相关数据时查看它。我认为这有点混乱和冗余我试图避免它。
答案 0 :(得分:1)
这种方法并没有朝着正确的方向发展。您应该考虑更多通用的DOL构建代码来处理请求的标记长度,包括修剪和填充,具体取决于EMV第3章第5.4章中指定的对象类型。
答案 1 :(得分:0)
使用标签填充地图根本不是很麻烦。它的标签为键,值为值,因此更加灵活方便。我们为我们的EMV sdk做到了这一点。通常,你不知道你会得到什么标签或标签的数量,或者你会得到什么样的标签。
将它们放在哈希映射中有很多原因,如果您需要将它们传递给API来运行事务,您可以轻松地抛出包含所有标记和值的哈希映射。如果你需要显示它们,那么显示哈希映射中的键和值也很容易。