Картридер¶
Управление картридером осуществляется посредством ActiveX-компонента IDCManager.
Идентификаторы подключения¶
ProgID: AXIDCManager.IDCManager;
CLSID: B54D75BB-94CF-468B-86F0-D412F2F6BEC0.
Свойства¶
IsWaitingForInsertion – бинарное значение. Активность функции ожидания вставки карты.
PreHeadDetection – бинарное значение. Включать или отключать проверку наличия на вставленном в слот объекте магнитной полосы. Если ПО ИПТ не поддерживает работу с микропроцессорными картами, то рекомендуется устанавливать PreHeadDetection в значение
1
.ReadTrack1 – бинарное значение. Включать или отключать чтение дорожки Track1 с магнитной полосы карты.
ReadTrack2 – бинарное значение. Включать или отключать чтение дорожки Track2 с магнитной полосы карты.
ReadTrack3 – бинарное значение. Включать или отключать чтение дорожки Track3 с магнитной полосы карты.
ReadChip – бинарное значение. Включать или отключать активацию микропроцессора карты в момент чтения карты.
ReadWatermark – бинарное значение. Включать или отключать чтение поля Watermark.
IsEmvClessReaderAvailable – бинарное значение. Доступность бесконтакного картридера.
IsEmvClessReaderOperable – бинарное значение. Работоспособность бесконтактного картридера.
IsEmvClessActive – бинарное значение. Признак активной бесконтактной транзакции.
Методы¶
- GetStatus()
Метод возвращает состояние устройства:
«0» – устройство работает штатно;
«1» – устройство находится в режиме offline;
«2» – питание к устройству не подключено;
«3» – устройство отсутствует;
«4» – аппаратная ошибка;
«5» – ошибка конфигурирования устройства;
«6» – устройство находится в процессе выполнения команды.
- InsertCard()
Перейти в режим ожидания вставки карты.
- EjectCard()
Вернуть карту держателю карты.
- RetainCard()
Захватить карту в Retain-box. Срабатывает только, если карта находится внутри картридера.
- RetainCardSetReason([in] BSTR bstrReason)
Метод позволяет выставить причину захвата карты в Retain-box.
Возможные значения bstrReason:
«FORGOTTEN» – карта забыта;
«REMOTE_HOST_ORDER» – команда удаленного хоста;
«MEDIADETECTED_ON_START» – на старте в слоте обнаружена карта;
«SOFTWARE_ERROR» – ошибка ПО;
«UNKNOWN» – неизвестная ошибка.
Пример обмена¶
<OBJECT ID='IDCManager' CLASSID='CLSID:B54D75BB-94CF-468B-86F0-D412F2F6BEC0' width=0 height=0></OBJECT>
<script LANGUAGE='javascriptt' for='window' event='onload()'>
IDCManager.InsertCard(); // инициируем вставку карты
</script>
<script LANGUAGE='javascript' for='IDCManager' event='OnCardInserted(bstrTrack1, bstrTrack2, bstrTrack3, bstrChipData, bstrWatermark)'>
// После вставки – фрагмент обмена EMV-ядра с ICC. Команда SELECT + команда на дочитывание ответа
alert(IDCManager.ChipIo("00 A4 04 00 07 A0 00 00 00 03 20 10"));
alert(IDCManager.ChipIo("00C0000034"));
// Выброс карты
IDCManager.EjectCard();
</script>
Уведомления¶
- OnCardInserted(BSTR bstrTrack1, BSTR bstrTrack2, BSTR bstrTrack3, BSTR bstrChipData, BSTR bstrWatermark)
Уведомление присылается в случае, если устройству удалось считать данные с карты. Если какой-либо элемент не может быть считан, то параметр события содержит пустую строку.
bstrTrack1 – данные дорожки Track1 с магнитной полосы карты;
bstrTrack2 – данные дорожки Track2 с магнитной полосы карты;
bstrTrack3 – данные дорожки Track3 с магнитной полосы карты;
bstrChipData – данные Answer To Reset (ATR) от микропроцессора карты;
bstrWatermark – данные поля Watermark.
- OnCardRemoved
Уведомление присылается в случае, если держатель карты забрал ее.
- OnCardRetained
Уведомление присылается в случае, если карта была успешно захвачена в Retain-box.
OnInsertCardTimeout Уведомление о том, что время ожидания вставки карты закончилось.
- OnError(ULONG ulErrorCode, BSTR bstrErrorText)
Уведомление приходит в случае возникновения какой-либо ошибки в процессе работы компонента.
- OnCanceled
Уведомление о том, что последний запрос отменен.
- OnEmvClessApproved([in] BSTR strTlvData)
Бесконтактная транзакция завершилась успешно (одобрена). strTlvData – набор данных для отправки на хост.
- OnEmvClessNotApproved([in] BSTR strTlvData)
Бесконтактная транзакция завершилась неуспешно (отклонена или терминирована). strTlvData уточняет произошедшее.
- OnEmvClessFailure()
Бесконтактная транзакция прервана или не началась из-за технического сбоя.
Пример кода¶
<script language='javascript' for='window' event='onload'>
IDCManager.InsertCard();
</script>
<script language='javascript' for='IDCManager' event='OnCardInserted(strTrack2)'>
alert(Track2)
</script>
<OBJECT ID='IDCManager' CLASSID='CLSID:B54D75BB-94CF-468B-86F0-D412F2F6BEC0'
width='0' height='0'>
</OBJECT>