Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java Card > Получение номера карты


Автор: shadowtony 30.5.2008, 11:16
Друзья, возник следующий вопрос. Есть проект, в котором используем Smart Card Reader (ASEDrive) )для чтения кредиток.

поскольку то смарткарты, то все тыкают носом в PC\SC - погуглив, находим OCF, javax.smartcardio и еще много вкусного, готового, работающего и т.п.

но вот после изучения ISO/IEC 7816-4 я не нашел в описываемых командах обмена между картой и компом никаких средств получения простого номера кредитки, например. Да, работа с приложения на карте это хорошо(потом эт о нам может оказаться полезным), но мне бы пока простые вещи сделать через этот Card Reader - идентификацию карты всеми способами, чтобы деньги с нее клиент мог куда-то переводить или хотя бы идентифицировать себя в приложениях.

в какой-то команде по ИСО (или каких-то общих приложениях карты?) эта опция заложена? и мне лишь надо понять каую команду и с какими параметрами дергать?

Или же я совсем не в том направлении ищу и smartcard это совсем другая опера, не мой случай?  тогда куда копать, в какую степь?
подскажите, пожалуйста. буду рад информации.

Автор: firstone 2.6.2008, 22:24
shadowtony, 
Здравствуйте!

В стандартах ISO/IEC 7816 нет описания транзакций с кредитными картами. Для того, чтобы Вам получить необходимую информацию, нужно обратиться прямо к Mastercard/VISA для получения протоколов и формата комманд. Просто так эту информацию кредитные компании не публикуют. 

Кроме всего прочего, карта может и не быть Java Card. Поэтому Вам не нужно опираться на протоколы комманд JC. Здесь они могут нести только вспомогательную функцию (загрузка приложения, конфигурация, ключи и т.д.). Буквально на прошлой неделе я персонализовал несколько кредиток с операционной системой MultOS - еще одна реализация стандарта Global Platform (иными словами альтернатива и конкурент Java Card). Это я привел к тому, что сама технология Java Card Вам не пригодится. Если Вас интересуют подробности транзакций, обратитесь ко мне по П.М. Я попробую достать описание, и если нет ограничений я выложу его здесь.

Вообще насколько я помню все транзакции делятся на офлайн и онлайн. Офлайн-транзакции накапливаются в ридере/терминале и пачкой отправляются на сервер для проверки. Обычно это используется при относительно малых суммах (определено ридером/терминалом). Онлайн-транзакции выполняются только если карта аутенцифицирована сервером (банк, VISA, Mastercard). Сама карта не производит аутентификацию ридера/терминала (т.е. нет взаимной аутенцификации - mutual authentication).

Попробую нарыть некоторую информацию...

П.С> Собираетесь написать домашний терминал, чтобы можно было расплачиваться кредиткой дома?

Автор: shadowtony 17.6.2008, 09:52
Цитата(firstone @  2.6.2008,  22:24 Найти цитируемый пост)
Если Вас интересуют подробности транзакций, обратитесь ко мне по П.М. Я попробую достать описание, и если нет ограничений я выложу его здесь.


Нет, спасибо, вот по транзакциям как раз уже все давно ясно (только на выкладку такой инфы ограничения точно ЕСТЬ )).
С этим давно работали. У нас проблема в софте пока именно, что сами транзакции по ISO8583 наладили - все отправляется на хост процессинга, списание проходит( либо отлуп). а вот откуда взять номер аккуанта (PAN, то бишь). Когда делаешь рабочее место оператора, где он из базы может глянуть или вбить руками, то это одно. А сейчас надо автомат самообслуживания пристраивать - там кроме кард ридера нет других вариантов  как получить номер карты либо трек (чтобы верифицировать потом клиента). Ну разве что POS-terminal еще, но это по определенным причинам не вариант, надо самим окучивать отдельно именно кард-ридер.

И ,учитывая, что планируется кард ридер под смарты, нам нужно понять какой пакет \ технология нас спасут =) ну чтобы хоть немного унифицировано получать инфу с карты через ридер. Просто велосипед писать не хочется.


Кстати о птичках, вот рассматривал блок ATR, получаемый с карты согласно докам стандарта, и нашел там среди TLV-объектов вот такой
"2Y" - Issuer identification number. Подумалось, что это мне может помочь. Или это точно не PAN?

Автор: firstone 17.6.2008, 13:23
Смотрите тут: http://saush.wordpress.com/2006/09/08/getting-information-from-an-emv-chip-card/

Здесь рассмотрен MChip.

Добавлено через 1 минуту и 23 секунды
PAN не посылается в ATR. Чтобы считать PAN нужно выбрать аппликацию и далее по ее протоколу. ПАН - это данные приложения на карте а не всей карты.

Автор: shadowtony 17.6.2008, 17:03
Цитата(firstone @  17.6.2008,  13:23 Найти цитируемый пост)
Чтобы считать PAN нужно выбрать аппликацию и далее по ее протоколу.

про МЧип спасибо, интересная статейка.

а про выбор приложения на карте.. ну то есть если я, например, общаюсь через javax.smartcardio с зарегистрированным ридером и картой в нем и шлю ему APDU-команды, то вопрос лишь в отсылке нужных команд нужному приложению. так?
а данные, передаваемые в командах запросов к приложению, уже определяются спецификацией на это приложение. но в целом задача получения ПАна такими средствами разрешима? 

Автор: firstone 18.6.2008, 07:59
Цитата(shadowtony @  17.6.2008,  17:03 Найти цитируемый пост)
а про выбор приложения на карте.. ну то есть если я, например, общаюсь через javax.smartcardio с зарегистрированным ридером и картой в нем и шлю ему APDU-команды, то вопрос лишь в отсылке нужных команд нужному приложению. так?

Да.

Цитата(shadowtony @  17.6.2008,  17:03 Найти цитируемый пост)
а данные, передаваемые в командах запросов к приложению, уже определяются спецификацией на это приложение.

Да. Конечно. Ведь разработчик приложения определяет протокол команд.

Цитата(shadowtony @  17.6.2008,  17:03 Найти цитируемый пост)
но в целом задача получения ПАна такими средствами разрешима?  

Да, конечно. Посмотрите статью про Мчип.

Я тут попытался достать доку по Визе и Мастеркарту. Пока безрезультатно. Но надеюсь, все же смогу...

Автор: lumag 20.1.2012, 19:49
Для полноты темы и истории:
Есть базовый стандарт http://www.emco.com в котором описано, как как именно должно происходить взаимодействие хоста и карточки. Как вычитывать данные и т.п.
У платежных систем есть свои версии дополнений к этому стандарту, которые описывают, как именно что происходит, какие значения могут принимать данные и т.п.
Стандарт EMV - открытый и бесплатный. И для ответа на большинство простых вопросов его достаточно. Стандарты платежек обычно доступны только организациям-партнерам,
банкам и т.п. Но чтобы вычитать имя владельца карты или номер карты достаточно EMV.

Автор: jcardsim 21.1.2012, 14:08
Вот тут хорошие примеры :
http://stackoverflow.com/questions/283251/how-do-i-read-the-pan-from-an-emv-smartcard-from-java

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)