Начиная с версии 4.6.148 реализована дополнительная верификация.

Начиная с версии 4.6.194 верификация вынесена в отдельный плагин.

Конфигурирование модуля верификации

Активация модуля верификации карт определяется параметром cardverification, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/cardverification.ini в секции [plugins].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
cardverificationлогический
  • on
  • off
Активация модуля верификации картПо умолчанию on
Пример настройки
[plugins]
; Верификация карт
cardverification = on

Настройка плагина верификации карт производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/cardverification.ini в секции [CardVerification].

В кассовом ПО Artix реализована возможность отложить выбор верификации для верификаций с признаком "безусловная" (БД Dictionaries таблица Verification поле attribute). Регулируется параметром delayedChoice в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/cardverification.ini в секции [CardVerification]:

  • при значении true окно выбора способа верификации появляется при добавлении карты,
  • при значении false окно выбора способа верификации появляется только при оплате чека бонусами. При отказе от верификации карта не верифицируется, оплата бонусами невозможна.
НаименованиеТип данныхВозможные значениеОписаниеПримечания
delayedChoiceлогический
  • true
  • false
Отложенный выбор верификацииПо умолчанию false
Пример настройки
[CardVerification]
; Отложенный выбор верификации
; По умолчанию false
;delayedChoice = false

Типы и признаки верификации

При работе с картами клиентов в ряде случаев возникает потребность верифицировать карты в чеке, т.е. подтверждать их подлинность. Верификация карты может быть выполнена несколькими способами, в зависимости от технических средств, используемых в торговой сети. Типы (способы) верификации задаются отдельным справочником и указываются для каждого способа ввода. Для каждого способа ввода карты может быть задан один или несколько типов верификации.

Поиск карты и верификация

Крупные торговые сети предоставляют своим клиентам возможность использования линейки собственных бонусных карт и бонусных карт компаний партнеров с правом авторизации в чеке по любой из карт. Чтобы исключить необходимость загружать в БД кассы справочники по основным и дополнительным (партнерским) картам клиентов в кассовом ПО Artix реализован поиск основной карты клиента по любой дополнительной карте и верификация карты на кассовом сервере.

Реквизиты кассового сервера, на котором будет производится поиск карты, указываются в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Security.Restrictions].

Наименование
Тип данных
Описание
Примечания
cardVerificationUrlстроковыйURL сервиса верификации карты

Для различных типов верификации могут быть использованы разные URL сервисов. Для этого необходимо использовать тип верификации, как суффикс настройки cardVerificationUrl.

Например, для внешнего сервиса верификации:

cardVerificationUrl.rest = "http://externalService/rest"

cardVerificationUrl.telegram = "http://127.0.0.1:55555/CSrest/rest/ident/cards"

cardVerificationTimeoutчисловойТаймаут ожидания сообщения от сервера на запрос верификации картыПо умолчанию 5 секунд
Пример настройки
[Security.Restrictions]
;Параметры, относящиеся к безопасности
 
; URL сервиса верификации карты
;cardVerificationUrl = "http://localhost:8080/CSrest/rest/ident/cards"
 
; Таймаут(в секундах) ожидания сообщения от сервера на запрос верификации карты
; По умолчанию 5 секунд
;cardVerificationTimeout = 5

В свойствах группы карт, для которой будет осуществляться поиск карт на сервере, требуется указать правило поиска карт и необходимость использования правил преобразования.

При формировании запроса на поиск карты используется один из типов верификации:

  • AUTO – автоматическая верификация,
  • NONE – без верификации,
  • SMS – верификация по смс,
  • TELEGRAM – верификация через telegram,
  • PUSH – верификация по сообщениям из мобильного приложения,
  • CARDSMOBILE – верификация через сервис CardsMobile,
  • REST – верификация через внешний сервис,
  • любой другой тип, или список типов, поддерживаемых сервером, через запятую, например, SMS, TELEGRAM.

Для возможности выбора каждому способу ввода может быть задано несколько способов верификации. Соотнесение способов ввода и верификации необходимо задавать для всех используемых способов ввода карты отдельно.

Порядок обработки полученных данных следующий:

При добавлении карты клиента в чек по маске номеров определяется группа карт.

Если группа карт не определена, карта не добавляется в документ, на экран будет выведена ошибка.

Если для введенного номера по маске номеров найдена группа карт, то поиск карты выполняется в соответствии с заданным правилом поиска (searchrule в таблице Cardgroup):

  • при значении 0 или NULL поиск карты будет производится в БД кассы в таблице Card. Если карта не найдена и для группы карт добавление карты при отсутствии в БД не заблокировано, то создается пустая карта. Запрос на кассовый сервер для поиска карты не отправляется;
  • при значении 1 введенный номер определяется как номер телефона клиента. 

    Для корректного поиска в БД должна быть заведена группа карт, с маской, соответствующей номеру телефона, и с обязательным преобразованием номера (таблица CardGroup поле userawdata = 1). Способ верификации карты будет выбран из этой группы карт. 

    По номеру телефона в БД кассы осуществляется поиск клиента и среди привязанных к нему карт выбирается подходящая. Карта не должна быть заблокирована (таблица Card поле blocked = 1) или просрочена (таблица Card поля validitydatebeg и validitydateend). Если условию удовлетворяет несколько карт, то карту в чек невозможно добавить, на экран будет выведена ошибка.  

  • при значении 3 поиск карты осуществляется по хэшу номера карты.

После определения правила поиска карты определяется тип ее верификации для использованного источника ввода.

  • Если способы верификации для указанного источника ввода не заданы, то запрос поиска карты на сервер не отправляется и карта добавляется в чек без верификации.
  • Если способы верификации заданы, то на экран выводится список доступных способов, среди которых выбирается нужный. К имеющимся способам верификации автоматически добавляется способ без верификации. При выходе из диалога выбора верификации карта будет добавлена в чек как не верифицированная, повторная верификация будет предложена позже при оплате чека баллами.

После выбора способа верификации на основании полученных данных на кассовый сервер отправляется запрос с указанием исходной группы карт. О настройке кассового сервера для верификации карт можно прочитать в разделе "Карты клиента". Поиск и верификация карты на сервере осуществляется в соответствии с заданными настройками. Если отказаться от выбора способа верификации, то программа возвращается в режим формирования чека, карта в чек не добавляется.

При удачном поиске и верификации карты сервер возвращает на кассу номер карты, использованный способ верификации и список отклоненных верификаций:

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

Кассовое ПО Artix обрабатывает сообщения, полученные от сервера верификации:

  • если сообщение присутствует в ответе от сервера, то на экран будет выведено диалоговое окно с полученным сообщением:

    Пример ответа от сервера
    [{"cardNumber":"<номер_основной_карты>", "deniedTypes":["<список_отклоненных_верификаций>"], "message":"<сообщение>", "verificationCode":"<код_верификации>","verificationResult":<результат_верификации>,"verificationType":"<тип_верификации>"}]
  • если сообщение отсутствует в ответе от сервера, то на экран будет выведено стандартное диалоговое окно:

    Пример ответа от сервера
    [{"cardNumber":"<номер_основной_карты>", "deniedTypes":["<список_отклоненных_верификаций>"], "message":"", "verificationCode":"<код_верификации>","verificationResult":<результат_верификации>,"verificationType":"<тип_верификации>"}]

Если верификация на сервере не пройдена, то касса возвращается в окно выбора способа верификации, где можно выбрать другой способ верификации.

Порядок поиска и добавления карты приведен на схеме:

Принцип выбора метода верификации приведен ниже:

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

Дополнительная верификация

В кассовом ПО Artix реализована возможность дополнительной верификации карт. В случае, когда через дополнительную карту (карта партнера) необходимо найти основную карту, используется дополнительная верификация.

Чтобы установить дополнительную верификацию карт, необходимо:

  1. Установить флаг дополнительной верификации (БД Dictionaries таблица Cardgroupverification поле extraverification).
  2. Установить признак верификации "безусловная" (БД Dictionaries таблица Verification поле attribute).
Если указано несколько способов дополнительной верификации для одного источника ввода, то будет выбран первый указанный способ верификации.

Порядок верификации карт приведен ниже:

Дополнительная верификации производится сразу после добавления карты и определения для группы карт способов верификации:

После прохождения дополнительной верификации будет осуществлена основная верификация.

Если дополнительная верификация не была пройдена, то процесс добавления карты будет прерван.

Верификация карт при оплате

Для одной и той же группы карт, способа ввода и типа верификации не во всех случаях может потребоваться подтверждение подлинности. Например, при верификации по смс с торговой сети взимается плата за отправку сообщения, но в случае, если клиент не расплачивается бонусными баллами, то проведение верификации может стать необязательной процедурой.

Необходимость подтверждения подлинности определяется признаком верификации, который указывается для типа (способа) верификации.

Признак верификации может принимать следующие значения:

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

В случае, если для карт клиента используется верификация по условию, то при добавлении в чек верификация карты не требуется, устанавливается признак автоматической верификации. При оплате бонусными баллами проверяется пороговая сумма, разрешенная для оплаты без верификации. Пороговая сумма задается параметром autoVerificationBonusLimit в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Security.Restrictions].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
autoVerificationBonusLimitвещественный
  • -1 – опция отключена,
  • 0 – верификация запрашивается всегда при оплате бонусными баллами,
  • 1 и более – сумма, выше которой будет запрошена верификация. Например, при указании 100 – если сумма оплаты баллами 100 рублей – верификация не запрашивается, если сумма оплаты 101 рубль, то будет запрошена верификация карт.
Максимальное количество бонусных баллов для оплаты без запроса верификации для автоверифицированных карт (признак верификации "по условию")По умолчанию – без ограничений

Домашний магазин

В кассовом ПО Artix реализована возможность проверки пороговой суммы при оплате бонусными баллами в "домашнем магазине".

  • Если код магазина совпадает с кодом указанным в карте (БД Dictionaries таблица Card поле shopcode), то:
    • верификация не требуется, если пороговая сумма не превышена (настройка autoVerificationBonusLimit),
    • при превышении пороговой суммы будет запрошена верификация карты.
  • Если код магазина не совпадает с кодом, указанным в карте, то независимо от пороговой суммы будет запрошена верификация карты.
  • Если код магазина не заполнен в БД для карты, то поведение регулируется настройкой checkBonusLimitWithEmptyShopCode:
    • при значении true если пороговая сумма превышена, то будет осуществлена верификация,
    • при значении false независимо от пороговой суммы будет запрошена верификация карты.
Пример настройки
[Security.Restrictions]
; Параметры, относящиеся к безопасности
...
; Проверять лимит бонусных баллов для оплаты без верификации если домашний магазин карты не заполнен
; если выключено, верификация проводится независимо от превышения лимита autoVerificationBonusLimit
; по умолчанию true
;checkBonusLimitWithEmptyShopCode = true

Признак верификации проверяется при добавлении карты в чек и оплате покупки бонусными баллами.

Порядок проверки признака верификации показан в таблице и на схеме:


Признак верификации
БезусловнаяОтложеннаяПо условию
Добавление карты в чекВерификация проводится обязательно. Карта добавляется в чек с признаком "верифицирована". Если верификация не пройдена, то на экран будет выведено сообщение об ошибке.Карта добавляется в чек с признаком "ожидает верификации".Карта добавляется в чек с признаком "автоматическая верификация".
Оплата бонусами

Т.к. карта уже верифицирована, то оплата чека будет производится без дополнительных запросов.

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

Принцип верификации при оплате бонусными баллами:

  • No labels