applepay - 苹果支付 EMV 交易
问题描述
我正在尝试执行 Apple 支付交易。苹果支付钱包的卡是万事达卡。如果我使用实体卡执行非接触式交易,我的代码就可以工作。但是当我尝试对 ApplePay 执行相同操作时,我在 GENERATE AC 命令后得到 SW 6700(错误长度)状态。在这里您可以看到我如何为 GAC 请求构建数据:
9f02 06 000000000100 Amount, Authorised (Numeric)
9f03 06 000000000000 Amount, Other (Numeric)
9f1a 02 0804 Terminal Country Code
95 05 0000000000 Terminal Verification Results
5f2a 02 0980 Transaction Currency Code
9a 03 210511 Transaction Date
9c 01 00 Transaction Type
9f37 04 3357A30A Unpredictable Number
9f35 01 21 Terminal Type
9f45 02 0000 Data Authentication Code
9f4c 08 0000000000000000 ICC Dynamic Number
9f34 03 1F0302 Cardholder Verification Method (CVM) Results
9f21 03 131340 Transaction Time HHMMSS
9f7c 14(20 dec) 0000000000000000000000000000000000000000 Customer Exclusive Data (CED)
所以,我的最终数据是:
80 AE 8000 42 000000000030 000000000000 0804 0000008001 0980 210511 00 3357A30A 21 0000 0000000000000000 1F0302 133040 0000000000000000000000000000000000000000 00
Le byte 是 42(66 dec),如果使用物理卡是正确的。苹果支付有什么问题?
解决方案
问题是 CDOL1 在使用 ApplePay 与同一张卡时会有所不同。因此,使用 ApplePay 的标签 0x8C (CDOL1) 是:
9f02069f03069f1a0295055f2a029a039c019f37049f35019f45029f4c089f34039f1d089f15029f4e14
并使用物理非接触式卡(万事达卡):
9f02069f03069f1a0295055f2a029a039c019f37049f35019f45029f4c089f34039f21039f7c14
所以,它们是不相等的,解构给了我们这样一个数据项:
9f02 06 000000000100
9f03 06 000000000000
9f1a 02 0804
95 05 0000000000
5f2a 02 0980
9a 03 210511
9c 01 00
9f37 04 3357A30A
9f35 01 21
9f45 02 0000
9f4c 08 0000000000000000
9f34 03 1F0302
9f1d 08 6CF8000000000000
9f15 02 0000
9f4e 14 0000000000000000000000000000000000000000
因此,GENERATE AC 命令的最终数据应该是:
80 AE 8000 49 000000000030 000000000000 0804 0000008001 0980 210511 00 3357A30A 21 0000 0000000000000000 1F0302 6CF8000000000000 0000 0000000000000000000000000000000000000000 00
Le = 73 dec / 0x49 十六进制。这工作正常。
推荐阅读
- excel - 如何在访问数据库中使用左连接从excel表中进行选择-EXCEL VBA
- javascript - 显示有关 JSON 用户的信息
- apache-kafka - 除了 Kafka 中的“重试”之外,影响属性的消息顺序
- javascript - 我正在尝试在 URL 上使用 JSContext evaluateScript 运行 javascript
- java - 由于 LiveData 的索引 0 无效,Custome ArrayAdapter 崩溃
- google-apps-script - 使用 Google Appscript - 如何使用位于 Gmail 中的草稿模板中的自定义正文发送自动电子邮件?
- c++ - 为什么 _GLIBCXX_DEBUG 必须在第一行设置?
- python - 如何从与我尝试导入的文件处于同一级别的目录中导入变量、函数等?
- nativescript - 可以进行本地云构建吗?
- python - 如何使用正则表达式从两个相似的 html 类元素中提取数据?