Установка балансировщика нагрузки
Балансировщик нагрузки для работы с интернет-магазином можно установить совместно с VPOS.
Для установки балансировщика нагрузки необходимо:
Прописать репозитории:
Для кассового сервера версии 3.хwget -O - http://update.artix.su/artix.gpg.key |sudo apt-key add - echo 'deb [arch=amd64] http://update.artix.su/cs/ cashserver3_stable cashserver3' | sudo tee /etc/apt/sources.list.d/cashserver3.list
Для кассового сервера версии 4.х (Artix Control Center)wget -O - http://update.artix.su/artix.gpg.key |sudo apt-key add - echo 'deb [arch=amd64] http://update.artix.su/cs/ cashserver4_stable cashserver4' | sudo tee /etc/apt/sources.list.d/cashserver4.list
Обновить список пакетов и установить пакет
artixcs-online-shop
:sudo apt-get update sudo apt-get install artixcs-online-shop
Конфигурирование модуля
Настройка модуля производится в файле /opt/artixcs-online-shop/application.properties
:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
server.port | числовой | Порт, на котором балансировщик нагрузки ожидает данные | По умолчанию 9010 . |
su.artix.cashserveronlineshop.client.virtualcash.url | строковый | URL подключения к виртуальной кассе | Порт в параметрах должен совпадать с портом в настройках виртуальной кассы, на котором касса ожидает данные. |
su.artix.cashserveronlineshop.client.virtualcash.user | строковый | Логин пользователя для подключения к виртуальной кассе | Не используется. |
su.artix.cashserveronlineshop.client.virtualcash.password | строковый | Пароль пользователя для подключения к виртуальной кассе | Не используется. |
su.artix.cashserveronlineshop.client.cs.url | строковый | URL для подключения к кассовому серверу, на который будет сохраняться чек из интернет-магазина | |
su.artix.cashserveronlineshop.client.cs.user | строковый | Логин пользователя для подключения к кассовому серверу | Используется при включенной аутентификации по REST API. Активируется в настройках кассового сервера. |
su.artix.cashserveronlineshop.client.cs.password | строковый | Пароль пользователя для подключения к кассовому серверу | Используется при включенной аутентификации по REST API. Активируется в настройках кассового сервера. |
server.port=9010 ################## # Подключение к виртуальной кассе su.artix.cashserveronlineshop.client.virtualcash.url=http://localhost:8090/ su.artix.cashserveronlineshop.client.virtualcash.user= su.artix.cashserveronlineshop.client.virtualcash.password= ################## # Подключение к кассовому серверу (КС) su.artix.cashserveronlineshop.client.cs.url=http://localhost:8080/CSrest/rest/ su.artix.cashserveronlineshop.client.cs.user= su.artix.cashserveronlineshop.client.cs.password=
REST API для работы с балансировщиком
Передача онлайн-чека с расчетом воздействий
Для передачи онлайн-чека на виртуальную кассу через балансировщик и расчета дисконтных и бонусных воздействий необходимо выполнить запрос типа POST на URL:
http://<host>:<port>/receipt/calculate?[shopcode=<shopCode>&clusterid=<clusterId>&istotal=true|false]
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
shopcode | string | Код магазина | Необязательный параметр. По умолчанию код магазина All . |
clusterid | string | Идентификатор кластера | Необязательный параметр. |
istotal | boolean | Сохранять результат в БД кассового сервера для возможности оплаты на обычной кассе:
| Необязательный параметр. По умолчанию |
{ "identifier": "100500", "positions": [ { "posnum": 1, "barcode": "1", "quant": 10, "price": 10.60, "minprice": 5.00, "name": "test goods" } ], "cards": [ { "number": "1" } ], "coupons": [ { "number": "2232" } ], "dontChange": true }
, где
identifier
– уникальный идентификатор чека;dontChange
– признак модификации чека:true
– модификация чека запрещена (добавление/сторнирование позиций, применение модификаторов и т.д.);false
– чек можно модифицировать.
Для использования цены из интернет-магазина в запросе должны быть переданы цена и минимальная цена товара. Если один или оба этих параметра не будут переданы, то виртуальная касса подставит данные из собственной БД.
Для использования наименования из интернет-магазина в запросе должно быть передано название товара. Если этот параметр не передан, то виртуальная касса подставит данные из собственной БД.
В ответ возвращается результирующий чек с воздействиями, который возвращает VPOS.
Расчет воздействий и резервирование суммы бонусов для оплаты
Для расчета дисконтных и бонусных воздействий, резервирования суммы бонусов для оплаты, сохранения чека на КС необходимо выполнить запрос типа POST на URL:
http://<host>:<port>/receipt/spend?[shopcode=<shopCode>&clusterid=<clusterId>&spendSum=<spendSum>]
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
shopcode | string | Код магазина | Необязательный параметр. По умолчанию код магазина All . |
clusterid | string | Идентификатор кластера | Необязательный параметр. |
spendSum | BigDecimal | Сумма оплаты бонусами | Необязательный параметр. |
{ "identifier": "100500", "positions": [ { "posnum": 1, "barcode": "1", "quant": 10, "price": 10.60, "minprice": 5.00, "name": "test goods" } ], "cards": [ { "number": "1" } ], "coupons": [ { "number": "2232" } ], "dontChange": true }
, где
identifier
– уникальный идентификатор чека;dontChange
– признак модификации чека:true
– модификация чека запрещена (добавление/сторнирование позиций, применение модификаторов и т.д.);false
– чек можно модифицировать.
Для использования цены из интернет-магазина в запросе должны быть переданы цена и минимальная цена товара. Если один или оба этих параметра не будут переданы, то виртуальная касса подставит данные из собственной БД.
Для использования наименования из интернет-магазина в запросе должно быть передано название товара. Если этот параметр не передан, то виртуальная касса подставит данные из собственной БД.
В ответ возвращается результирующий чек с воздействиями, который возвращает VPOS.
Оплата чека онлайн
Для оплаты чека онлайн необходимо выполнить запрос типа POST на URL:
http://<host>:<port>/receipt/total?[shopcode=<shopCode>&clusterid=<clusterId>]
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
shopcode | string | Код магазина | Необязательный параметр. По умолчанию код магазина All . |
clusterid | string | Идентификатор кластера | Необязательный параметр. |
{ "check": { чек_с_рассчитанными_скидками }, "payments": [ { "type": 0, "amount": 0 } ], "customerAddress": "string" }
Параметры тела запроса:
Наименование | Тип данных | Описание |
---|---|---|
check | object | Результат запроса, выполненного ранее методом calculatediscount или spendbonus |
payments | object | Оплата |
customerAddress | string | Адрес (телефон или e-mail) покупателя |
Параметры объекта payments
:
Наименование | Тип данных | Описание |
---|---|---|
type | int | Код типа оплаты в кассе |
amount | decimal | Сумма оплаты |
В процессе выполнения запроса total
осуществляется удаленное закрытие чека на ФР.
В таблицу onlinecheck
добавляется новая запись со статусом ONLINE_PAYING
и статусом оплаты NOT_CONFIRM
. В таблицу onlineCheckPayStatus
добавляется запись об оплате чека со статусом NOT_CONFIRM
.
Если запрос выполнен корректно, то в ответе от сервера будет получен идентификатор сохраненного онлайн-чека:
{ "id": 3 }
Получение статуса оплаты онлайн-чека
Для получения статуса оплаты онлайн-чека необходимо выполнить запрос типа GET на URL:
http://<host>:<port>/receipt/getdocumentinfo?[documentid=<documentId>&shopcode=<shopCode>&clusterid=<clusterId>]
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
documentid | string | Идентификатор документа | Обязательный параметр. |
shopcode | string | Код магазина | Необязательный параметр. По умолчанию код магазина All . |
clusterid | string | Идентификатор кластера | Необязательный параметр. |
Если запрос выполнен корректно, то в ответе от сервера будет получен статус оплаты:
{ "SUCCESS": [ "fd2628a5-4912-4157-bdd8-b1b9f86bb566": "SUCCESS", "6333acdb-07ad-49b1-8776-f3555c46d132": "SUCCESS" ] }
Если хотя бы одна оплата не прошла, то будет получен статус FAIL
.
{ "FAIL": [ "fd2628a5-4912-4157-bdd8-b1b9f86bb566": "SUCCESS", "6333acdb-07ad-49b1-8776-f3555c46d132": "FAIL" ] }
В процессе выполнения запроса getDocumentInfo
обновляется статус оплаты в таблице onlineCheckPayStatus
. Такой же статус оплаты устанавливается у чека в таблице onlinecheck
.
Сохранение чека с оплатами в БД кассового сервера
Для сохранения чека с оплатами в БД КС с последующим восстановлением на кассе необходимо выполнить запрос типа POST на URL:
http://<host>:<port>/receipt/savePayedCheck/payeddocumentId?[shopcode=<shopCode>&clusterid=<clusterId>]
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
payeddocumentid | string | Идентификатор чека, по которому проходила оплата | Обязательный параметр. |
shopcode | string | Код магазина | Необязательный параметр. По умолчанию код магазина All . |
clusterid | string | Идентификатор кластера | Необязательный параметр. |
{ "cards": [ { "bonusbalance": 62.8, "cardmode": 1, "idcardgroup": 1, "namecardgroup": "bonus", "number": "911", "sessionid": "_cash_1030_0bccc9d3$1.1.0.2.093757211$0$1" } ], "identifier": "243", "pointsForEarn": 0.4, "positions": [ { "barcode": "1", "code": "1", "dept": null, "discounts": [ { "campaigncode": 6, "campaignname": "1", "discountcode": 7, "discountmode": 1, "discountname": "new name", "discountrate": 5, "discountsum": 0.76, "discounttype": 1, "ispositiondiscount": 0, "minpriceignored": false, "posnum": 1 } ], "earnedbonuses": [ { "amount": 0.4, "assettimebeg": "", "assettimeend": "", "campaigncode": 1, "campaignname": "111", "cardnumber": "911", "ispositionbonus": 0, "weight": 0 } ], "isallowbonusspend": true, "measure": 1, "measurename": "шт", "minprice": 13.68, "name": "МОЛОКО БМК 1.5% 1Л П/П", "paymentmethod": 0, "paymentobject": 0, "posnum": 1, "price": 15.2, "quant": 1, "spentbonuses": [ { "campaigncode": 1, "campaignname": "111", "cardnumber": "911", "discountcode": 3, "discountmode": 2, "discountname": "Новое имя", "discountsum": 10, "discounttype": 5, "ispositiondiscount": 0, "posnum": 1, "sessionid": "_cash_1030_0bccc9d3$1.1.0.2.093757211$0$1" } ], "sum": 4.44, "sumWithoutDiscounts": 15.2, "taramode": 0, "tmc": { "minprice": 13.68, "price": 15.2 }, "vatcode": -1, "vatrate": 0, "vatsum": 0 } ], "sum": 4.44, "dontChange": null, "payments": [ { "type": 1, "amount": 1, "valcode": 1, "valname": "ru" } ] }
Если запрос выполнен корректно, то в ответе от сервера будет получен идентификатор нового онлайн-чека:
{ "id": 3 }
В процессе выполнения запроса savePayedCheck
статус документа, по которому проходила оплата, меняется на ONLINE_CLOSED
. Чек с оплатами записывается в таблицу onlinecheck
со статусом NEW
, в поле sourcedocumentid
записывается ссылка на оплаченный документ. Данный чек необходимо восстановить на кассе.