Список запросов в KilBil
Общие положения по обмену с KB
https://ru.sailplay.dev/reference/ogranicheniya-api
Запуск запроса: https://bonus.kilbil.ru/load/{название_функции}?h={ключ}
Тело запроса должно соответствовать формату JSON.
Время ожидания ответа от KB указывается в карточке компании. Касса отправляет запрос и ждёт ответа указанное время. Если KB не отвечает, то данная ситуация считается ошибкой ‘Сервер лояльности недоступен’. Касса продолжает работу без обмена с KB.
Если в ответе на запрос приходит код 200, то ответ положительный. Любые другие значения кода ответа и отсутствие ответа трактуются как отрицательный ответ.
Действия при получении отрицательного ответа зависят от запроса и места вызова.
Запрос |
Место |
Действие при ошибке |
searchklient |
Открытие смены |
Выставить состояние ‘связь отсутствует’ |
|
Начало чека при отсутствии связи |
Ничего не делать |
searchklient |
Форма идентификации покупателя |
Отобразить ответ в информационной строке |
askconfirmphone checkconfirmphone |
Форма идентификации покупателя |
Отобразить ответ в информационной строке |
addclient |
Форма идентификации покупателя |
Отобразить ответ в информационной строке |
processsale |
При изменении чека |
Выставить состояние ‘связь отсутствует’ |
|
В конце чека |
Выставить состояние ‘связь отсутствует’ |
confirmsale |
После оплаты |
Выставить состояние ‘связь отсутствует’ Поместить чек в список неотправленных чеков |
getdetailingbymove |
Запрос чека продажи |
Выставить состояние ‘связь отсутствует’ |
Тексты запросов и подробные ответы протоколируются в логах кассы.
Действия в случае отсутствия связи с KB
В карточке компании указывается время ожидания ответа на запрос к KB. По истечении указанного времени считается, что связь с KB отсутствует. На экране появляется сообщение для кассира об отсутствии связи с программой лояльности. Соответствующий сигнальный символ в левом верхнем углу экрана загорается красным цветом. Сообщение о потере связи отображается только один раз – при первом неудачном запросе. Для последующих запросов сообщение не выводится. После восстановления связи лампочка загорается зеленым цветом.
Связь с KB проверяется в начале чека запросом searchklient для телефона 70000000000. Если связь отсутствует, то при работе с данным чеком запросы в KB не посылаются.
Если связь с KB пропала при создании покупки (был успешно выполнен processsale, но неудача при confirmsale), то чек (параметры запроса) сохраняется в отдельном списке для последующей отправки.
Передача неотправленных чеков выполняется при закрытии смены и в специальном пункте меню.
Информация об участниках (клиентах) программы лояльности
Запись клиента имеет два уникальных идентификатора: номер карты, номер телефона. Для старых клиентов номер карты будет заполнен, а номер телефона может быть пустым.
В Домино требуется проверять уникальность идентификаторов при создании нового клиента. Ограничимся проверкой только номера телефона. Поскольку остальные уникальные идентификаторы при регистрации нового клиента можно не заполнять, то так и будем поступать.
Ввод адреса электронной почты, объединение клиентов будут выполняться только в личном кабинете КВ. https://help.kilbil.ru/93-1075-614--kak-dobavit-klienta-cherez-lichnyj-kabinet/
Запрос ‘Получить информацию о клиенте’ searchclient
https://bonus.kilbil.ru/load/searchclient
Запрос:
Параметр |
описание |
search_mode |
0 – поиск по № телефона 2 – поиск по № карты |
search_value
|
значение, по которому производится поиск, если по номеру телефона, это должно быть 11 символов первая 7-ка |
Ответ:
Параметр |
описание |
result_code |
код результата, где 0 - успешно |
client_id |
id клиента, null если не найден |
bonus_balance |
количество бонусов у клиента |
card_code |
номер карты, null если нет |
phone |
номер телефона клиента, null если не заполнено |
birth_date |
дата рождения клиента, null если не заполнено |
first_name |
имя клиента, null если не заполнено |
middle_name |
отчество клиента, null если не заполнено |
last_name |
фамилия клиента, null если не заполнено |
max_bill_bonus_out |
максимальная сумма списания на текущий чек без учета баланса клиента, параметр нужен для дальнейшего использования в processsale |
Запрос ‘Отправить код подтверждения’ askconfirmphone
https://bonus.kilbil.ru/load/askconfirmphone
Запрос:
Параметр |
Описание |
client_id |
id клиента |
phone |
номер телефона клиента 11 символов, первая 7 |
sms_type |
тип шаблона сообщения 0 - сообщение с пин-кодом подтверждения для регистрации клиента 1 - сообщение с пин-кодом, например для списания бонусов |
Ответ:
Параметр |
Описание |
success |
код выполнения |
result_code |
код результата, где 0 - успешно |
Запрос ‘Проверить код подтверждения’ checkconfirmphone
https://bonus.kilbil.ru/load/checkconfirmphonecode
Запрос:
Параметр |
Описание |
client_id |
id клиента |
phone |
номер телефона клиента 11 символов, первая 7 |
code |
код подтверждения |
Ответ:
Параметр |
Описание |
success |
код выполнения |
result_code |
код результата, где 0 - успешно |
Запрос ‘Добавление (обновление) клиента’ addclient
https://bonus.kilbil.ru/load/addclient
Запрос:
Параметр |
Описание |
client_id |
id клиента |
phone |
номер телефона клиента 11 символов, первая 7, клиент не будет активирован без номера телефона |
Ответ:
Параметр |
Описание |
success |
код выполнения |
client_id |
id клиента |
result_code |
код результата, где 0 - успешно |
Расчёт скидок
Для промежуточных расчётов применяется запрос processsale. Непосредственно перед оплатой следует запросить число баллов и отправить финальный запрос processsale для учёта баллов.
Подтверждение покупки в KB выполняется отдельным запросом.
Запрос ‘Рассчитать документ’ processsale
https://bonus.kilbil.ru/load/processsale
Параметр |
Описание |
client_id |
id клиента, null – если покупатель не идентифицирован |
type |
тип операции: 0 – продажа, 1 - возврат |
bonus_out |
количество списанных бонусов в операции |
max_bonus_out |
максимально возможная сумма списания бонусов без учета баланса клиента (передается значение выходного параметра max_bill_bonus_out функции searchclient) |
good_data |
Массив товаров |
code |
Код товара |
vendor_code |
Артикул |
name |
Наименование товара |
price |
цена |
quantity |
количество |
total |
Сумма за позицию |
minPrice |
Минимальная цена |
discounted_price |
Цена за позицию, равна price |
discounted_total |
Сумма за позицию, равна total |
move_id |
Номер чека |
doc_open_dt |
Дата чека |
return_move_id |
номер чека продажи, по которому производится возврат (передаётся только для возвратов) |
return_doc_dt |
Дата чека продажи (передаётся только для возвратов) |
promo_codes |
Список промокодов |
coupons |
Массив купонов |
coupon |
промокод |
Move_id потребуется для возврата и он должен быть уникальным. Заполняем из следующих параметров: <Код структурного подразделения> - <код кассы> - <номер смены> - <дата чека> - <номер чека>.
Поскольку применяются только скидки через систему лояльности, то price=discounted_price, Total= discounted_total.
Промокод может быть только один. Кассир его ввёл в процессе ‘запрос промокода’.
Ответ:
Параметр |
Описание |
result_code |
код результата, где 0 – успешно |
bill_data |
информация по расчету документа |
items |
Массив товаров |
code |
Код товара |
discounted_price |
Новая цена |
price |
Цена |
bonus_out |
Количество списанных бонусов на позицию |
bonus_out |
Количество списанных бонусов на документ |
Запрос ‘Подтвердить документ’ confirmsale
https://bonus.kilbil.ru/load/confirmsale
Подтверждение документа после processsale, после этого в системе лояльности чек считается подтвержденным и участвует в отчетах. Выполняются все начисления и списания бонусов.
Параметр |
Описание |
move_id |
Номер чека |
doc_open_dt |
Дата чека |
doc_dt |
Дата закрытия чека |
Ответ:
Параметр |
Описание |
result_code |
код результата, где 0 – успешно |
Возврат товаров
Для создания чека возврата применяется запрос ‘Рассчитать документ’ (processsale с type=1).
Предварительно в базе KB запрашивается чек продажи.
Запрос ‘Получить документ’ getdetailingbymove
https://bonus.kilbil.ru/load/getdetailingbymove
Параметр |
Описание |
move_id |
Номер чека |
Ответ:
Параметр |
Описание |
result_code |
код результата, где 0 – успешно |
move_info |
общая информация по чеку |
oper_type |
Тип операции: 0 –продажа |
move_detail |
Массив товаров |
code |
Код товара |
price |
Цена |
total |
Сумма по позиции |
quantity |
количество |
Нет комментариев