我正在使用基于NFC的付款设备。我正在使用MIFARE DESFire EV1芯片。
我的问题是:如何使用此芯片硬件启用完全符合EMV的支付交易?
我找到了可以进行支付交易的Visa戒指。它使用McLear&Co的NFCRing® 设计和NTAG IC。
我正在尝试通过我的LG P710 Optimus L7 2读取智能卡.
我正在学习本教程
我可以选择"1PAY.SYS.DDF01"目录,
我可以选择应用程序
但我无法执行"获取处理选项"它总是导致6700错误(Lc或Le错误)
这是我的代码
NfcAdapter mNFCAdapter;
Intent intent;
PendingIntent pendingIntent;
private TextView mTextView;
String[][] techList;
IntentFilter[] filters = new IntentFilter[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.title);
mNFCAdapter = NfcAdapter.getDefaultAdapter(this);
intent = new Intent(getApplicationContext(), getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
techList = new String[][]{
new String[]
{ MifareClassic.class.getName() },
new String[]
{ IsoDep.class.getName() }
};
filters[0] = new IntentFilter();
filters[0].addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
filters[0].addCategory(Intent.CATEGORY_DEFAULT);
// add type of tag …Run Code Online (Sandbox Code Playgroud) 我已经成功地从非接触式借记卡/信用卡中检索了卡号和有效期。但是,在 READ RECORD 命令响应中没有返回持卡人姓名。我错过了什么吗?
- Select Application
# IN_DATA_EXCHANGE
>> D4 40 01 00 A4 04 00 07 A0 00 00 00 03 10 10 00
<< D5 41 00 6F 43 84 07 A0 00 00 00 03 10 10 A5 38 50 10 56 69 73 61 20 20 20 20 20 20 20 20 20 20 20 20 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A …Run Code Online (Sandbox Code Playgroud) 我想重新开发新的桌面应用程序以从 EMV 智能卡读取信息,并且我有来自以前(工作)应用程序的日志。
假设在 EMV 智能卡中有一个 AID = 44 44 44 44 44 44 44 44 (DDDDDDDD) 的应用程序。
我正在发送 APDU 命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 00 并获得超时异常(超时 = 60 秒)。
我尝试发送 APDU 命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 并得到响应代码 = 61 37。
我尝试选择文件 1PAY.SYS.DDF01,立即得到响应 = 6a82(正确)。
是否有EMV卡,不支持在线PIN验证?或者所有EMV卡都支持在线和离线PIN,终端决定使用哪些?
提前致谢.
我想实现一个可以支持某些类型的卡的应用程序.我想知道以下事项:
我可以使用HCE模拟不同类型的卡,例如支付非接触式卡吗?
我需要实现它什么?
交易过程中EMV ODA、CA和发行人证书是什么关系?
我正在尝试为万事达卡非接触式卡构建生成 AC 命令。我相信我已经从 CDOL1 正确读取了卡所需的信息,并在生成 AC 命令中使用正确的长度发送它,但是正确的是用 6700(错误长度命令)进行回复。任何有关问题所在的建议将非常感激。
该卡提供的CDOL1为:
8C | len:27 Card Risk Management Data Object List 1 (CDOL1)
9F02 | len:06 Amount, Authorised (Numeric)
9F03 | len:06 Amount, Other (Numeric)
9F1A | len:02 Terminal Country Code
95 | len:05 Terminal Verification Results
5F2A | len:02 Transaction Currency Code
9A | len:03 Transaction Date
9C | len:01 Transaction Type
9F37 | len:04 Unpredictable Number
9F35 | len:01 Terminal Type
9F45 | len:02 Data Authentication Code
9F4C | len:08 ICC …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取信用卡上的姓名,卡号,有效期等.但总是6d00在打电话时回来SCardTransmit.
我正在使用预先定义的AID,我已经用Google搜索有效(如果我错了,请纠正我).这是:
AID_LIST = {
"A0000000421010",
"A0000000422010",
"A0000000031010",
"A0000000032010",
"A0000000041010",
"A0000000042010",
"A00000006900",
"A0000001850002"
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我在Android手机中从Android应用程序传输了以下APDU命令,
发送:
00 A4 04 00 07 A0 00 00 00 03 10 10 00
通过NFC到iPhone 6并获得以下响应,
RESP:
6F 39 84 07 A0 00 00 00 03 10 10 A5 2E 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 4D 02 14 01 9F 5A 05 11 08 40 08 40 90 00
现在,我一直试图使用各种来源解密这个,但令人困惑的部分是要理解,这是否是PKPaymenttoken数据(我们在苹果支付响应中收到)或者它只是来自iPhone存折的加密卡数据6. …
我已经成功检索到 CDOL1,它是
9F02 06 - Authorised amount of the transaction (excluding adjustments)
9F03 06 - Secondary amount associated with the transaction representing a cashback amount
9F1A 02 - the country of the terminal
95 05 - Status of the different functions as seen from the terminal
5F2A 02 - the currency code of the transaction
9A 03 - Local date that the transaction was authorised
9C 01 - the type of financial transaction
9F37 04 - Value to provide variability …Run Code Online (Sandbox Code Playgroud) 我正在努力使用我陷入困境的 AID 列表从 VISA(例如 PAN、到期日...)信用卡获取有用数据。
\n\n我已经能够手动访问所有数据。使用下一个教程:http://www.openscdp.org/scripts/tutorial/emv/reademv.html
\n\n>>00 A4 04 00 07 A0 00 00 00 03 10 10 00\nRun Code Online (Sandbox Code Playgroud)\n\n在 ASCII 中:
\n\n<<o<EM>\xe2\x80\x9e<BEL>\xc2\xa0<0><0><0><ETX><DLE><DLE>\xc2\xa5<SO>P<EOT>VISA\xc2\xbf<FF><ENQ>\xc5\xb8M<STX><VT><LF><0>\nRun Code Online (Sandbox Code Playgroud)\n\n十六进制:
\n\n<<6F 19 84 07 A0 00 00 00 03 10 10 A5 0E 50 04 56 49 53 41 BF 0C 05 9F 4D 02 0B 0A 90 00\nRun Code Online (Sandbox Code Playgroud)\n\n之后我用了:
\n\n>>33 00 B2 01 0C 00 //sfi1, rec1\n...\n...\n>>33 00 B2 10 FC 00 //sfi31, rec16\nRun Code Online (Sandbox Code Playgroud)\n\n我继续学习教程并了解到获取数据的正确方法是使用 …
我正在使用移动支付终端和用于测试 EMV 交易的测试工具。终端设置的一部分涉及将多个 CAP 密钥加载到终端中以用于不同类型的卡。
我很好奇,终端如何选择合适的 CAP 密钥?我是否可以从 APDU 日志中获取任何信息来指示我将使用哪个 CAP 密钥?
我遇到的具体问题是我有一个成功处理 AMEX 卡的演示项目,但我无法在我自己的项目中处理它们。我收到诸如“未找到进行验证的密钥 (65)”之类的错误。我认为匹配应用程序标识符就足够了,但我在演示项目中没有看到任何 AMEX 标识符,即使它正在工作 (A0 00 00 00 25)。