В зависимости от целей и задач, которые преследует внешняя система во взаимодействии с системой лояльности ProBonus, можно выделить несколько типовых сценариев интеграции.
В данном разделе описаны базовые кейсы и указаны конкретные методы API, необходимые для их реализации.
Если требуемая вам логика взаимодействия не описана в данном разделе, вы можете написать нам на soft@carbis.ru, и мы обязательно поможем найти решение.
API ProBonus предусматривает два различных способа авторизации:
/api/v0/auth/login) и его дальнейшее обновление (/api/v0/auth/refresh_token).Поддерживаются оба варианта, но вариант 2 проще и удобнее. В Swagger доступны оба варианта.
/api/v0/accounts/insert_by_template. accountGroupId, и данному гостю будет автоматически назначена лояльность по шаблону, настроенному для этой группы в рамках системы ProBonus (уровень, приветственные бонусы, установлено сгорание и т. п.). /api/v0/account_groups/list или просто посмотреть в админке (http://probonus.pro:6896/account-groups/) и вынести в настройки на своей стороне. haveTemplate=true). В тестовой БД это «Самостоятельно зарегистрировавшиеся» (id=3)./api/v0/accounts/find_by_phone. Он ищет гостя по номеру телефона. Если гость с указанным номером телефона существует, то в ответ вернётся практически вся информация о нём: анкета, текущий остаток на счёте, текущий уровень, купоны и так далее./api/v0/accounts/refill/api/v0/accounts/transactions — вернёт все транзакции по счёту за указанный период. /api/v0/accounts/get_last_raw_transactions — вернёт N последних транзакций./api/v0/accounts/update/api/v0/checks/get_by_id/api/v0/accounts/get_balance_extended — вернёт детализацию баланса счёта с указанием, когда и сколько сгорит.Учёт лояльности (скидки/бонусы/потраты) за все покупки, совершённые гостем через систему r_keeper, происходит автоматически, и все данные об этих транзакциях попадают в базу ProBonus.
В некоторых случаях транзакция (которую нужно учесть в рамках ProBonus) происходит за рамками контура r_keeper (например, заказ на доставку, который по итогу не будет создан в r_keeper, т. к. внешний модуль доставки не имеет интеграции с кассовой системой и существует отдельно). При этом сумма покупки должна быть учтена в оборотах по счёту гостя (учёт потрат для расчёта лестницы, начисление/списание бонусов за внешнюю покупку и т. п.).
Для этой цели используется метод /api/v0/external/register_check.
Описание переменных:
| Переменная | Описание |
|---|---|
restCode | Код ресторана (из справочника Настройки → Рестораны), к которому нужно отнести данную транзакцию для отчётов. |
checkGuid | Уникальный номер внешней транзакции (в формате GUID). Важно! Система ProBonus не контролирует уникальность переданного GUID в рамках своей БД. Контроль уникальности лежит на внешней системе. |
accountId | ID счёта, по которому совершена транзакция. |
rkUnit | Код станции (рабочего места) в ресторане, к которому нужно отнести данную транзакцию для отчётов. Рекомендуем указывать код, заведомо определяющий, что это не настоящая станция в ресторане. Например, 999 или 888 или любой другой трёхзначный. |
externalCheck | Номер транзакции во внешней системе (может использоваться для дальнейшей сверки транзакций между двумя отчётами). |
bonusSpentSum | Сумма (в копейках), которую нужно списать со счёта в оплату транзакции. |
discountSum | Сумма скидки (в копейках), которую гость получил во внешней системе. |
bonusAccruedSum | Сумма (в копейках), которую нужно начислить на счёт за данную транзакцию. |
moneySpentSum | Сумма (в копейках), которую гость потратил (оплатил) в рамках данной транзакции. |
checkData | Любая текстовая информация о содержимом внешнего чека. |
Метод /api/v0/external/return_check используется для отката всех начислений, сделанных в ProBonus, в случае отмены покупки во внешней системе.