Сервис для выдачи виртуальных карт представляет собой сервис, который работает напрямую с кассовым и бонусным сервером. Предназначен для быстрой выдачи карты клиенту, а также создания виртуальных карт.

Установка и настройка сервиса

Установка сервиса производится командой:

apt-get install artixcs-issuance-card

Настройка работы сервиса осуществляется в конфигурационном файле /opt/artixcs-issuance-card/application.properties.

Пример настройки
#Подключение к кассовому серверу 
cashserver.host=localhost 
cashserver.port=8080			
cashserver.login=admin
cashserver.password=admin

#Подключение к бонусному серверу
bonus.server.rest.host=localhost
bonus.server.rest.port=8080
bonus.server.rest.contextpath=/ACC/
#Авторизация на бонусном сервере через terminalid 
terminal.id=ISSUANCE_DEFAULT_TERMINAL
bonus.server.auth.terminalid=true
#Авторизация на бонусном сервере через логин и пароль
bonus.server.username=admin
bonus.server.password=admin

#Генерация справочников
cashserver.start.generate.dict=true

#Преобразование номеров телефона для поиска клиентов 
#Маска номера телефона
#Для России можно использовать ^[+]?[78]?([0-9]{10})$
regexp.phone.mask=(.*)
#Преобразование телефона. Преобразованный номер будет сохранен в БД при создании клиента, а также будет участвовать в поиске
#Для России можно использовать 7\\1
regexp.phone.transform=\\1

#Порт, на котором будет запущен текущий сервис
server.port=8094

#Настройка группы виртуальных карт (При создании карты необходимо указать идентификатор группы карт).
virtual.card.groupid=1

#Время жизни пин-кода в секундах
pincode.lifetime=300

#Настройки специальных дат
#Номер специальной даты для регистрации клиента (варьируется от 1 до 3)
special.date.number=1
#Имя специальной даты
special.date.name=registration

#Настройки для генерации номера карты
#Длина номера карты варьируется от 4 до 200 символов включая длину префикса номера карты
cardnumber.length=16
#Префикс номера карты 
cardnumber.prefix=

#Текст для смс клиенту при выдаче карты в формате SpEL
#Внимание! Текст нужно заключать в одиночные кавычки ''
#Пример: чтобы указать имя клиента в смс, запишем: 'Уважаемый(ая) ' + name + ', спасибо, что Вы с нами!'
#Если текст не указан, смс отправляться не будут
sms.text =

# Начислять приветственный бонус при выдаче карты, по умолчанию false
initial.bonus.enable = false
# Кол-во приветственных бонусов, которые будут начислены при выдаче карты(в копейках), по умолчанию 5000
initial.bonus.amount = 5000
# Кол-во дней до окончания действия бонуса, по умолчанию - 7
initial.bonus.active.days = 7
# Название группы начислений, по умолчанию greetingBonus
initial.bonus.acceptId = greetingBonus
# Помещать неиспользованные сгенерированные номера карт в список для последующего использования во избежание потери номеров в последовательности
use.cardnumber.repeatedly = true
Для отправки СМС о выдаче карты с собственного СМС шлюза в файле /opt/artixcs-issuance-card/application.properties необходимо добавить настройку: sms.gateway.key = <ключ СМС шлюза>.

Предварительно необходимо настроить СМС шлюз, подробнее об этом в разделе "Настройки сервера" (подраздел "СМС").

Чтобы задать время резервирования анонимной карты необходимо в файл /opt/artixcs-issuance-card/application.properties добавить настройку: card.reserve.expireTime = <количество_секунд>. По умолчанию 3600 секунд.

Принцип работы

Сервис выдачи карт выполняет следующие функции:

Поиск клиента осуществляется по номеру телефона.
  1. Выдача уникальной карты клиенту.
    • Если клиент не был зарегистрирован (учтен в системе), то он создается автоматически, исходя из тех данных, которые были направлены в запросе. Следующим этапом происходит привязка карты к клиенту по ее номеру. Если в процессе привязки произошла ошибка, то клиент буден удален.
    • Если на сервисе задан текст для приветственного сообщения, то клиенту будет направлено соответствующее подтверждение посредством СМС.
    • Если на сервисе включено начисление приветственного бонуса при выдаче карты, то клиенту будет начислено заданное количество баллов с заданным сроком действия.
  2. Получение пин-кода для создания карты.

    • Если клиент или карта отсутствуют в системе, то на кассовый сервер будет направлен запрос на получение пин-кода для верификации клиента. Ответом на данный запрос будет пин-код.

    • Если клиент существует, но у него нет карты, то на кассовый сервер будет направлен запрос на получение пин-кода. Ответом на данный запрос будет пин-код.

    • Если клиент существует и у него есть привязанная карта, то будет направлено соответствующее сообщение в ответном запросе.

      Пин-код, полученный от кассового сервера, по умолчанию хранится 300 секунд.
    • Если на сервисе задан текст для приветственного сообщения, то клиенту будет направлено соответствующее подтверждение посредством СМС.
  3. Создание виртуальной карты с помощью пин-кода.
    При создании виртуальной карты учитывается префикс и длина генерируемой карты. Длина генерируемой части номера карты должна быть в диапазоне от 4 до 200 символов.

    • Если действие пин-кода истекло или пин-код не был отправлен, то процесс создания виртуальной карты будет прерван, об этом будет направлено соответствующее сообщение.

    • Если по номеру телефона клиент не найден, то по указанному номеру телефона будет создан новый клиент. С помощью настройки задается номер специальной даты и ее имя. В качестве специальной даты назначается текущая дата. Остальные параметры клиента будут сохранены, исходя из тех данных, которые были направлены в запросе. Далее происходит генерация уникального номера карты. В процессе генерации отправляются запросы на кассовый сервер, в рамках которых происходит проверка уникального номера карты.

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

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

    • Если клиент существует, и у него есть привязанная карта, то в ответе на запрос будет направлено соответствующее сообщение.

  4. Создание виртуальной карты без проверки пин-кода.
    При создании виртуальной карты учитывается префикс и длина генерируемой карты. Длина генерируемой части номера карты должна быть в диапазоне от 4 до 200 символов.
    • Если по номеру телефона клиент не найден, то по указанному номеру телефона будет создан новый клиент. С помощью настройки задается номер специальной даты и ее имя. В качестве специальной даты назначается текущая дата. Остальные параметры клиента будут сохранены, исходя из тех данных, которые были направлены в запросе. Далее происходит генерация уникального номера карты. В процессе генерации отправляются запросы на кассовый сервер, в рамках которых происходит проверка уникального номера карты.
    • Если карта с генерируемым номером уже существует на кассовом сервере, то будет произведена повторная генерация. Количество повторных генераций вычисляется по формуле 9 * 10 длина генерируемого префикса.
    • Если клиент существует, но у него отсутствует карта, то будет сгенерирован уникальный номер карты. После завершения генерации уникального номера карты происходит процедура создания карты на кассовом сервере, а затем на бонусном сервере. Если в процессе создания карты возникла какая-либо ошибка, произойдет удаление ранее созданных карт на кассовом и бонусном серверах.

    • Если клиент существует, и у него есть привязанная карта, то в ответе на запрос будет направлено соответствующее сообщение.

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

      Номера карт, которые не были использованы за время, предназначенное для резервирования анонимной карты, могут быть использованы повторно при включенной настройке use.cardnumber.repeatedly.

  6. Создание карты по номеру ранее зарезервированной анонимной карты.
    • После завершения генерации уникального номера карты происходит процедура создания карты на кассовом сервере, а затем на бонусном сервере. Если в процессе создания карты возникла какая-либо ошибка, произойдет удаление ранее созданных карт на кассовом и бонусном серверах.
    • Полученный в ходе генерации номер карты привязывается к необходимому клиенту.
При включении настройки cashserver.start.generate.dict будет осуществлена генерация справочников после успешной привязки карты к клиенту.
  • No labels