При работе с выплатами физическим лицам или регистрации клиентов часто возникает задача минимизации ошибок ручного ввода данных банковских карт. Ввод 16-значного номера и ФИО владельца вручную — процесс трудоемкий и чреватый опечатками. Разберем, насколько реально автоматизировать этот процесс в среде 1С, какие технические стандарты это регулируют и с какими ограничениями можно столкнуться.
Для начала проанализируем, какая именно информация хранится на пластиковой карте. Большинство банковских карт соответствуют стандарту ISO/IEC 7813. На магнитной полосе обычно выделяют две или три дорожки (трека):
Рассмотрим важный нюанс: современные банки, особенно при выпуске неименных (моментальных) карт или карт системы «Мир», могут оставлять поле имени на 1-й дорожке пустым либо записывать туда техническую заглушку, например, MR CARDHOLDER или VALUED CUSTOMER. Таким образом, автоматизация получения ФИО через ридер не будет работать для 100% карт.
Выясним, как интегрировать оборудование в программную среду. Карт-ридеры магнитных карт для 1С являются «Устройствами ввода». Разберем два основных способа подключения:
1. Режим эмуляции клавиатуры (HID-устройство)
В этом режиме ридер определяется операционной системой как обычная клавиатура. При «прокатывании» карты данные мгновенно «печатаются» в то поле, где установлен курсор. Рассмотрим недостатки этого метода:
%, ^, ?).2. Режим Native-драйвера (COM-порт / БПО)
Это профессиональный метод. 1С работает с устройством через БиблиотекаПодключаемогоОборудования (БПО). При считывании карты генерируется Внешнее событие, которое программа перехватывает автоматически, даже если курсор не стоит в поле ввода. Разберем пример кода для обработки такого события:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "MSR" Тогда // Magnetic Stripe Reader
ДанныеКарты = РасшифроватьДанныеРидера(Данные);
Объект.НомерКарты = ДанныеКарты.Номер;
Объект.ВладелецФИО = ДанныеКарты.Имя;
КонецЕсли;
КонецПроцедуры
Проанализируем возможность использования бесконтактных считывателей. Многие полагают, что данные через NFC полностью зашифрованы. Однако, согласно протоколу EMV Contactless, номер карты (PAN) и срок действия часто передаются в открытом виде для совместимости. Их можно считать обычным NFC-ридером или даже смартфоном с соответствующим ПО.
Однако с ФИО ситуация сложнее. В большинстве современных российских карт (особенно системы «Мир») имя владельца через NFC не передается из соображений конфиденциальности. Если ваша задача — обязательное получение ФИО, NFC-ридер, скорее всего, окажется бесполезным.
Важно помнить о безопасности. Хранение полных номеров банковских карт в базе данных 1С накладывает на организацию обязательства по соблюдению международного стандарта PCI DSS. Рассмотрим основные правила:
4276 ******** 1234).Посмотрим на ситуацию со стороны службы безопасности. Использование несертифицированных ридеров в публичных местах может вызвать подозрение в «скимминге» (краже данных карт). Если вы внедряете такое решение, убедитесь, что оно регламентировано внутренними приказами и клиент уведомлен о цели считывания карты.
Поскольку магнитные полосы постепенно уходят в прошлое, а чипы и NFC не всегда отдают имя, рассмотрим альтернативный вариант — оптическое распознавание. Современные SDK позволяют использовать обычную веб-камеру для мгновенного сканирования лицевой стороны карты. Проанализируем преимущества:
В 1С это реализуется через вызов внешней компоненты, которая обрабатывает видеопоток и возвращает текстовые значения номера и имени. Это наиболее современный и надежный способ автоматизации на текущий момент.
Резюмируя вышесказанное, для реализации задачи в 1С выполним следующие шаги:
БиблиотекаПодключаемогоОборудования для интеграции устройства в конфигурацию.ВнешнееСобытие для парсинга считанной строки.Помните, что техническая реализация — это лишь половина дела. Всегда учитывайте правовой аспект работы с персональными данными и банковской информацией, чтобы автоматизация не обернулась проблемами для бизнеса.