PDA

Просмотр полной версии : Карта в телефоне



olegash
28.01.2020, 12:34
Стоит задача отказаться от пластиковых карт и перенести их в приложение на телефоне, типа wallet. Если в фастфуде с этим проблем нет (ставим сканер и кассир сканирует штрих-код с экрана телефона), то в ресторане нужно считывать карты у столиков. Мне видится 2 варианта: мобильный официант (но им в этом заведении не пользуются) или беспроводной сканер. Есть ли у кого опыт использования этих вариантов и какие модели беспроводных сканеров использовали? Может еще есть какие варианты?

dgenadiev
28.01.2020, 13:38
Стоит задача отказаться от пластиковых карт и перенести их в приложение на телефоне, типа wallet. Если в фастфуде с этим проблем нет (ставим сканер и кассир сканирует штрих-код с экрана телефона), то в ресторане нужно считывать карты у столиков. Мне видится 2 варианта: мобильный официант (но им в этом заведении не пользуются) или беспроводной сканер. Есть ли у кого опыт использования этих вариантов и какие модели беспроводных сканеров использовали? Может еще есть какие варианты?

Лично я бы сканер выбрал,мобильный официант глючное говно.
Сканер - Honeywell берите не прогадаете.

olegash
28.01.2020, 14:08
Лично я бы сканер выбралТут тоже минусы есть. Пока официант идет сканировать карту, другой официант может зайти в свой стол и получится бардак. Там заведение достаточно большое.

dgenadiev
28.01.2020, 14:41
Тут тоже минусы есть. Пока официант идет сканировать карту, другой официант может зайти в свой стол и получится бардак. Там заведение достаточно большое.
Ну это не проблема сканера ))

olegash
29.01.2020, 11:04
и Соответственно надо как-то шифровать номер карты, т. к. в таком случае будет очень легко добавить произвольную карту в телефон. Нет ни у кого такого опыта? Используется ПДС.

damevanderjahr
29.01.2020, 12:58
ucs предлагает для мобильного официанта динамически генерировать qr-код https://support.ucs.ru/ru/node/8962

olegash
29.01.2020, 14:56
ucs предлагает для мобильного официанта динамически генерировать qr-код https://support.ucs.ru/ru/node/8962 Этот вариант не пойдет. Надо, чтобы карту можно было засунуть в общедоступные программы, типа Кошелек. Они максимум, что могут - это вывести штрих-код на экран.

damevanderjahr
29.01.2020, 15:02
в crm7 можно вообще по номеру телефона авторизоваться с смс, но станцию официанта это занимает, да

sibgaba
29.01.2020, 17:54
Вы выдвигаете противоречивые требования


надо как-то шифровать номер карты, т. к. в таком случае будет очень легко добавить произвольную карту в телефон.


Надо, чтобы карту можно было засунуть в общедоступные программы, типа Кошелек.

Кошелек ничего вам шифровать не будет. какой набор цифр ему дадите - такой и будет.
Соотвественно как минимум клон делается элементарно.

Можно делать подпись хешем (хэш считать и проверять в MCR алгоритме), но это опять же не спасает от клонов.

Все что вы хотите это немного другой уровень чем "ПДС" + "Кошелек"

Это на уровне CRM + API + Моб Приложение.

PS и да, это все не отменяет проблемы передачи ШК гостя сидящего за столом.
Там есть решение в виде моб приложения у официанта (это не мобильный официант) при помощи которого офик читает ШК гостя в конкретный стол открытый на кассовом сервере.

Но это все достаточно дорого...
На уровне 150-200 тыр

olegash
29.01.2020, 19:14
Вы выдвигаете противоречивые требованияНе вижу никаких противоречий.



Кошелек ничего вам шифровать не будет. какой набор цифр ему дадите - такой и будет.Мне и не надо, чтобы он шифровал. Я ему скормлю уже зашифрованный код. Стоит задача, чтобы гость не смог в явном виде увидеть код карты и по аналогии не смог сам сформировать другой код карты.



Соотвественно как минимум клон делается элементарно.Пусть это будет зона ответственности гостя.



Это на уровне CRM + API + Моб Приложение.Тут не надо ничего усложнять.
Нужен простейший генератор шифрованных кодов (с контрольной суммой, чтобы нельзя было просто ввести произвольный набор цифр) и MCR алгоритм в Кипере, который будет его расшифровывать. Код должен быть минимальной длины, чтобы поместился на пластиковую карту.

olegash
29.01.2020, 19:20
PS и да, это все не отменяет проблемы передачи ШК гостя сидящего за столом. Это второй вопрос (вернее первый был). Тут прошу поделиться опытом, если он у кого есть. Как лучше? Какие есть варианты?

olegash
29.01.2020, 19:44
Там есть решение в виде моб приложения у официанта (это не мобильный официант) при помощи которого офик читает ШК гостя в конкретный стол открытый на кассовом сервере.А что сложного передать считанную последовательность из МО в РК? Неужели этого нет? Ну в смысле, официант через МО заходит в нужный стол, с помощью камеры считывает штрих-код и карта применяется к этому заказу.

SLion
29.01.2020, 20:21
ЕМНИП мо не может читать баркоды, только qr, а так да, можно считать qr, мо обратится к серверу, получит ответ какой mcr разобрал входящую последовательность и получит код карты которая применится к заказу.

olegash
29.01.2020, 20:28
ЕМНИП мо не может читать баркоды, только qr,Не принципиально, можно и qr. Просто одномерный сканер дешевле.

olegash
29.01.2020, 20:32
ЕМНИП мо не может читать баркоды, только qr,
А что мешает МО считать баркод, кстати?

SLion
29.01.2020, 20:50
Полагаю что считывание qr было реализовано для виртуальной карты, там именно qr был, а баркод просто не добавили. :)

dgenadiev
30.01.2020, 07:39
и Соответственно надо как-то шифровать номер карты, т. к. в таком случае будет очень легко добавить произвольную карту в телефон. Нет ни у кого такого опыта? Используется ПДС.

А расшифровать штрих-код или QR-код по вашему составит проблему для гостя?

olegash
30.01.2020, 09:46
А расшифровать штрих-код или QR-код по вашему составит проблему для гостя?Причем тут это? Что вы никак не поймете? Вроде все элементарно. Как раз учитывая, что это не проблема, нам и надо шифровать номер карты.

olegash
30.01.2020, 10:21
Еще раз, код карты в бар или qr коде должен быть зашифрован по некому алгоритму, исключающему, самостоятельную генерацию этого кода гостем (чтобы он с помощью онлайн генераторов штрихкодов не смог нагенерировать кучу карт с разными номерами). Должна быть какая-то проверка, что этот код был сгенерирован по правилам, а не просто ввелась произвольная комбинация цифр. Я не силен в криптографии, но думаю, что это не самая сложная задача для специалистов.

olegash
30.01.2020, 10:35
Вот, кстати: https://support.ucs.ru/ru/node/3585. Такое было в 6-ке. Но учитывая, что там не было MCR алгоритмов, поддержку этого функционала могла сделать только UCS, внеся изменения в ядро. В 7-ке это можно сделать самому, но у меня не хватает знаний по этому вопросу. Делал кто-то такое и может помочь?

dgenadiev
30.01.2020, 14:05
Еще раз, код карты в бар или qr коде должен быть зашифрован по некому алгоритму, исключающему, самостоятельную генерацию этого кода гостем (чтобы он с помощью онлайн генераторов штрихкодов не смог нагенерировать кучу карт с разными номерами). Должна быть какая-то проверка, что этот код был сгенерирован по правилам, а не просто ввелась произвольная комбинация цифр. Я не силен в криптографии, но думаю, что это не самая сложная задача для специалистов.

Кто должен вести эту проверку?
Сканер или кипер? И как?
Кипер понимает QR-код как и любое другое устройство , просто тупо считывает данные и все.
Вам тогда наверное надо писать какой-то MCR алгоритм особенный,который из кучи цифр например будет выбирать определенные и только эти цифры будут иметь отношение к карте,а остальные просто для виду там стоят.

Но у меня возникает опять вопрос - кто мешает сфотать чужой QR-код например?)

olegash
30.01.2020, 14:22
Вам тогда наверное надо писать какой-то MCR алгоритм особенный,который из кучи цифр например будет выбирать определенные и только эти цифры будут иметь отношение к карте,а остальные просто для виду там стоят.Воот, именно. Нужен шифровальщик и MCR алгоритм для дешифровки. Причем алгоритм этот должен уметь определять, что введен правильный код, а не просто набор цифр, который можно преобразовать в номер карты. Т. е. должна быть какая-то контрольная сумма или что-то типа того. В противном случае я могу нагенерировать сколько угодно кодов карт (мне незачем знать их номера), засунуть их в кошелек и пользоваться чужими средствами. В случае с пластиком, в какой-то мере, защищает хотя-бы дизайн карты. А тут никакой защиты нет совсем. И нагенерировать коды может практически любой, в неограниченном кол-ве за несколько минут, "не отходя от кассы". Никакого оборудования (в отличии от пластика, опять же) не надо. Только шифрование поможет.


Но у меня возникает опять вопрос - кто мешает сфотать чужой QR-код например?)Каким образом? Подойти и попросить у гостя, что бы он вывел qr код карты на экран телефона, чтобы вы его сфоткали?

sibgaba
30.01.2020, 16:12
Попробую расписать подробнее, то о чем я упоминал ранее.

"Шифрование" не совсем удачный термин (и способ) в данном случае. Тут больше подойдет "цифровая подпись"/"хэш" для номера карты.
По уровню надежности примерно то же самое что и шифрование, по сложности реализации - проще.

В QR/Штрих коде рисуем:
XXXX-Y
где XXXX - истинный номер карты (в открытом виде)
Y - цифровая подпись от номера (в простейшем случае контрольная сумма)
"-" разделитель

Разделитель можно не использовать и тогда работать "по маске" XXXXY (последний символ это Y остальное это XXXX)

Y считается от Х по какому то "секретному" правилу. Как простой пример:
Y = MOD["сумма всех четных цифр в Х" - "сумма всех не четных цифр в Х"]

Для номера 5781 это будет
MOD[(7+1)-(5+8)]=MOD[8-13]=MOD[-5]=5 <- Это значение Y (для случая если Y получился больше 9 надо откинуть первую цифру)

ШК будет выглядеть так: "5781-5"

Читаем карту, отделяем номер от подписи, считаем сами подпись, сверяем с той подписью что считали с карты. Если ок - работаем, если нет - ошибка.

Этот вариант легко реализовать в MCR, но он очень простой (зная несколько реальных ШК можно вычислить "секретный" алгоритм). А еще проще брутфорсом перебрать последнюю цифру от 0 до 9 для любого номера карты.

Более сложный вариант это писать в ШК что то типа XXXX-YYYY, где ХХХХ это так же номер карты в открытом виде, а YYYY это значение некой ХЭШ функции от ХХХХ.
MD5 на кипере конечно не сделать (нет такой встроенной функции в языке, а писать ее в ручную тяжко на скриптовом языке).
Но есть множество более простых алгоритмов, которые можно реализовать в MCR.

Гуглить запрос "простые хэш функции".

При этом, т.к. хэш функция будет все таки достаточно простой, желательно использовать "соль" при хэшировании.

SLion
30.01.2020, 20:17
зашифровать не проблема, проблема обеспечить уникальность, а то ваши qr карты разойдутся сотнями. Один друг дал другому и всё такое...

Простой вариант - нужно организовать ПО которое будет код карты шифровать вместе с датой и временем и показывать qr, а на кассе разбирать и например давать коду 1 минуту жизни.

olegash
30.01.2020, 20:38
а то ваши qr карты разойдутся сотнями. Один друг дал другому и всё такое...Так это же хорошо. Бесплатный маркетинг. Главное, что заведение не в убытке. Если я свой баркод передал другу, то понимаю, что он может пользоваться моими скидками\бонусами. Не вижу в этом проблемы. Куча магазинов (даже больших сетевых) позволяют считать карту с экрана телефона и не парятся. Им то какая разница. Главное, что клиенты приносят прибыль.



нужно организовать ПО которое будет код карты шифровать вместе с датой и временем и показывать qr, а на кассе разбирать и например давать коду 1 минуту жизни.Это уже очень дорого. Простым фастфудам и кафешкам - это ни к чему.

SLion
30.01.2020, 20:52
Тогда никаких проблем, делайте код шифруйте и расшифровывайте.
Реализация для блоуфиш вроде есть на саппорте, на трекере есть mcr алгоритмы которые расшифровывают блоуфиш.

SLion
30.01.2020, 21:06
http://tracker.ucs.ru/issues/167430