Картридер

Управление картридером осуществляется посредством 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>