我正在开发一个 VeriFone VX 终端的接口。虽然,这确实是一个通用的 EMV 问题。我们的处理器的下限为零,因此将始终在线发送。但是,如果它发生变化,您如何知道(哪些标签)交易是离线批准还是拒绝?或者,换句话说,你怎么知道上网与否?
3 回答
how do you know (what tags) if the transaction was approved or declined offline? Or, in other words, how do you know to go online or not?
终端必须决定是离线进行交易、上线还是拒绝交易。此处终端向卡发送命令(AC),该命令的响应有助于终端决定接下来的操作。
决策取决于三个字段 -
1) - 发行人操作代码
2) - 终端操作代码
3) - TVR
IAC、TAC 和 TVR 具有相同的结构。如需更多了解此数据,您可以查看EMV BOOK 3
IAC 使用示例-
suppose IAC-ONLINE (TAG - 9F0F) = 08 00 00 00 00 ,
here byte 1 bit 4 is on i.e. offline DDA Failed ,
Here Issuer want to go online if offline DDA Failed.
当终端执行 DDA 并且失败时,它会在 TVR 中设置相应的位,这 意味着 TVR 说 - 该卡的离线 DDA 失败。现在终端在线检查IAC,发现DDA_Failed位在TVR中打开并且相同,这里终端决定是在线,然后它向卡发送Gen AC命令p1 = 80(ARQC - 请求在线授权)。
Ex- Gen AC 命令
C:80 AE 80 00 其他数据
R:SW1/SW2=9000(正常处理:无错误) Lr=32
77 1E 9F 27 01 80 9F 36 02 02 13 9F 26 08 2D F3
83 3C 61 85 5B EA 9F 10 07 06 84 23 00 31 02 08
. 现在由卡片决定,终端在 Gen AC 命令的响应中获得卡片决定。卡返回标签 9F27 - 密码信息数据。这里卡返回 80 即卡要在线交易。
确实,您的问题很重要,您需要阅读更多规范才能清楚地了解该主题。请查看EMV 书籍,了解本主题的更多信息。也可以阅读 -终端动作分析或卡片动作分析
假设您使用的是 VeriFone 的 VIPA API,那么第一个“继续交易”命令 (GenAC1) 返回包装在 TLV 模板中的标签(或“构造的”TLV 标签)。这个模板的值决定了结果:
- E3:本地授权
- E4:需要在线授权
Cryptogram Information Data ('9F27')
AFAIK(在 vanilla EMV 中)第一次返回的标签GENERATE AC
应该用于此目的。
请注意,此标签包含卡的决定,因此您不会看到内核所需的密码类型。