Список запросов в SailPlay Общие положения по обмену с SP https://ru.sailplay.dev/reference/ogranicheniya-api Время ожидания ответа от SP указывается в карточке компании. Касса отправляет запрос и ждёт ответа указанное время. Если SP не отвечает, то данная ситуация считается ошибкой ‘Сервер лояльности недоступен’. Касса продолжает работу без обмена с SP. Если в ответе на запрос приходит код 200, то ответ положительный. Любые другие значения кода ответа и отсутствие ответа трактуются как отрицательный ответ. Действия при получении отрицательного ответа зависят от  запроса и места вызова. Запрос Место Действие при ошибке users/info Открытие смены Выставить состояние ‘связь отсутствует’ Начало чека при отсутствии связи Ничего не делать users/info Форма идентификации покупателя Отобразить ответ в информационной строке send/sms-code Форма идентификации покупателя Отобразить ответ в информационной строке users/add Форма идентификации покупателя Отобразить ответ в информационной строке users/update Форма идентификации покупателя Отобразить ответ в информационной строке Calc При изменении чека Выставить состояние ‘связь отсутствует’ В конце чека Выставить состояние ‘связь отсутствует’ purchases/new После оплаты Выставить состояние ‘связь отсутствует’ Поместить чек в список неотправленных чеков returns/create После денежных расчётов Ничего не делать Тексты запросов и подробные ответы протоколируются в логах кассы. Действия в случае отсутствия связи с SP В карточке компании указывается время ожидания ответа на запрос к SP. По истечении указанного времени считается, что связь с SP отсутствует. На экране появляется сообщение для кассира об отсутствии связи с программой лояльности. Соответствующий сигнальный символ в левом верхнем углу экрана загорается красным цветом. Сообщение о потере связи отображается только один раз – при первом неудачном запросе. Для последующих запросов сообщение не выводится. После восстановления связи лампочка загорается зелёным цветом. Связь с SP проверяется в начале чека запросом users/info для телефона 70000000000. Если связь отсутствует, то при работе с данным чеком запросы в SP не посылаются. Если связь с SP пропала при создании покупки (был успешно выполнен calc, но неудача при purchases/new), то чек (параметры запроса) сохраняется в отдельном списке для последующей отправки. Передача неотправленных чеков выполняется при закрытии смены и в специальном пункте меню. Информация об участниках (клиентах) программы лояльности https://ru.sailplay.dev/docs/registracia-klienta Запись клиента имеет три уникальных идентификатора: внутренний id, номер телефона, адрес почты. Для старых клиентов внутренний id будет заполнен номером дисконтной карты. Чем SP будет заполнять внутренний id для новых клиентов, для нас не имеет значения. Ввод адреса электронной почты, объединение клиентов будут выполняться только в SP. Запрос ‘Получить информацию о клиенте’ users/info https://ru.sailplay.dev/reference/users-info параметр описание token Токен store_department_id Код из глобальных настроек origin_user_id Номер телефона или дисконтной карты Ответ: Параметр описание status Код ответа id Идентификатор клиента email email phone телефон first_name Имя middle_name Отчество last_name Фамилия birth_date Дата рождения origin_user_id Номер дисконтной карты points confirmed Подтверждённое количество баллов Запрос ‘Отправить sms на любой номер’ send/sms-code https://ru.sailplay.dev/reference/sender-messages-send-sms-code Параметр Описание token Токен store_department_id код из глобальных настроек user_phone Номер телефона text Константа: Код подтверждения: $[sms_code] Ответ: Параметр описание status Код ответа sms-code Код подтверждения Запрос ‘Регистрация клиента’                                                     users/add https://ru.sailplay.dev/reference/users-add Параметр описание token Токен store_department_id код из глобальных настроек target_dep_origin_id Код магазина без ведущих 0 user_phone Номер телефона first_name Имя middle_name Отчество last_name Фамилия birth_date Дата рождения Ответ: Параметр описание status Код ответа id Идентификатор клиента Запрос ‘Изменить телефон клиента’ users/update https://ru.sailplay.dev/reference/users-update Параметр описание token Токен store_department_id код из глобальных настроек new_phone Номер телефона user_id Идентификатор клиента Идентификатор клиента можно получить запросами users-info или users-add. Ответ: Параметр описание status Код ответа Расчёт скидок https://ru.sailplay.dev/docs/raschet-akcii-dlya-korzini Для промежуточных расчётов применяется запрос calc. Непосредственно перед оплатой запрашивается число баллов и отправляется финальный запрос calc для учёта баллов. https://ru.sailplay.dev/docs/sozdanie-pokupki Подтверждение покупки в SP выполняется двумя запросами: создание покупки и её подтверждение. Для создания выполняется запрос purchases/new, который регистрирует покупку в базе. Подтверждение выполнит SP самостоятельно. Запрос ‘Рассчитать скидку’  marketing-actions/calc https://ru.sailplay.dev/docs/raschet-akcii-dlya-korzini Параметр описание token Токен store_department_id код из глобальных настроек target_dep_origin_id Код магазина без ведущих 0 user_phone Номер телефона promocodes промокод discount_points_writeoff Число баллов для списания cart Json-строка с данными о товарах 1,2 и т.д. Номер позиции sku Код товара в Домино price Цена quantity Количество discount_type Тип цены Пример строки cart: {"1":{"sku":"5011921150014","price":1600,"quantity":1,”discount_type”:” Regular” }} discount_type  принимает значения: Regular – розничная цена Sale – распродажная цена Red – последняя цена. Если розничная и распродажная цена совпадают. Если покупатель не идентифицирован, то параметры user_phone и discount_points_writeoff не передаются. Ответ: Параметр Описание status Статус ответа cart Id Уникальный ID расчёта чека positions product sku Код товара price Цена new_price Новая цена total_discount_points_max_for_user Максимально возможное количество баллов для списания по данному чеку num Номер позиции Максимальное число баллов для списания по этому чеку SP передаёт именно в теге total_discount_points_max_for_user. Запрос ‘Создать покупку’  purchases/new https://ru.sailplay.dev/reference/purchases-new Параметр Описание token Токен store_department_id код из глобальных настроек target_dep_origin_id Код магазина без ведущих 0 user_phone Номер телефона order_num Уникальный номер чека cart_ID id расчёта чека id расчёта чека – ссылка на ранее  выполненный расчёт по запросу Рассчитать скидку. Order_num потребуется для возврата и он должен быть уникальным. Формируется из трёх параметров: <код магазина>-<номер кассы>-<номер чека в Домино>. Длина: 10 символов -3 символа-3символа= 18 Ответ: Параметр Описание status Статус ответа Никакие другие параметры из ответа не рассматриваются, поскольку все расчёты были сделаны раньше в запросе calc. Создание покупки лишь оформляет чек в SP. Запрос ‘Подтвердить покупку’  confirm https://ru.sailplay.dev/reference/purchases-confirm Обычная схема обмена SP предполагает, что в SP должен быть отправлен запрос purchases/confirm для подтверждения только что созданной покупки. Но в рамках данной задачи отправлять запрос на подтверждение не следует. SP в автоматическом режиме, через заданное время подтвердит покупку. Возврат товаров Для оформления возврата у покупателя запрашиваются реквизиты чека продажи. По этим реквизитам выполняется поиск чека продажи. Если продажа была произведена на этой кассе, то чек считывается из базы кассы. В противном случае выполняется запрос чека продажи в SP. После выбора позиций для возврата, чек возврата посылается в SP. Реализован только частичный возврат, полный возврат по чеку (отмена покупки) в данной версии обмена не предусмотрен. Запрос ‘Создать возврат’  purchases/returns/create/ https://ru.sailplay.dev/reference/purchases-returns-create Это запрос для частичного возврата товара, когда покупатель отказался от некоторых позиций, новые позиции не добавлялись. Параметр Описание token Токен store_department_id код из глобальных настроек target_dep_origin_id Код магазина без ведущих 0 user_phone Номер телефона order_num уникальный номер чека return_cart 1, 2 и т.д. Номер позиции в чеке покупки quantity Количество штук возврата reason Причина возврата Уникальный номер чека был передан в SP в запросе ‘Создать покупку’. Пример заполнения return_cart: "1": {"quantity": 3, "reason": "Брак"},"3": {"quantity": 1, "reason": "Не подошёл размер"}}' Ответ: Параметр Описание status Статус ответа Запрос ‘Получить покупку’  purchases/get https://ru.sailplay.dev/reference/purchases-get Параметр Описание token Токен store_department_id код из глобальных настроек order_num Уникальный номер чека Ответ: Параметр Описание status Статус ответа cart positions product sku Код товара price Цена new_price Новая цена num Номер позиции quantity количество