Интеграция Битрикс24 с ККМ-сервером и центральной системой бронирования CRS
Задача проекта реализовать возможность проведения платежей и возвратов из интерфейса Битрикс24. Платеж либо возврат должны пройти через CRS систему клиента - центральную систему бронирования (Central Reservation System), и после успешного проведения транзакции выдать чек на одном из 1000 аппаратов ККМ, в зависимости от данных указанных в Битрикс24.
Проект реализовывался на коробочной лицензии Битрикс24 путем разработки отдельного модуля. Добавляя новую кнопку в интерфейс сделок для отображения формы оплат и возвратов. Оплата/возврат могут проводиться как за наличный расчет, картой, так и смешанным способом. Форма позволяет выбирать один из офисов в разных городах России, а также выбирать конкретное кассовое устройство, которое привязано к офису.
Так как в разработке проекта принимало участие несколько команд, было развернуто несколько серверов для разработки, стенд для тестирования и конечно конечный пользовательский сервер (бой / продакшн). Использовался DevOps CI / CD подход для непрерывной поставки программного продукта и его тестирования.
Был добавлен справочник офисов, ККМ устройств с привязкой к справочнику офисов и Highload-справочник для логирования всех исходящих и входящих запросов REST API.
Для корректной работы были написаны установщики справочников, которые позволяют выдать единые идентификаторы справочников как для серверов разработки, стенда, так и продакшена.
Так как центральная система бронирования CRS хранит все данные об услугах и транзакциях клиента, то в первую очередь нам необходимо было выполнить запрос из Битрикс24 к CRS для проверки сумм. Сумма оплаты / возврата не должна превышать квоты. Если при отправке формы оплаты / возврата получен положительный ответ и все проверки сумм проходят, то мы записываем данные в Битрикс24 и передаем их на ККМ-сервер.
Для работы с CRS-системой был написан SDK на PHP для удобной и корректной работы с REST API CRS-системы.
После прохождения всех проверок и записи транзакции оплаты / возврата в CRS-систему нам необходимо напечатать чек. Так как предусмотрено несколько вариантов оплаты / возврата: наличными, картой, смешанный, то чеки могут отличаться, в том числе может быть напечатано два чека - один для наличной транзакции, второй - для транзакции проведенной с карты.
Для интеграции с ККМ-сервером был написан SDK на PHP для удобства разработки и поддержки интеграции.
Все данные передаваемые из Битрикс24 в CRS-систему, и данные приходящие в ответ записываются в Highload-справочник. Это позволяет точно отслеживать процесс обмена, а в случае неудачи не только анализировать причину, но и проводить запрос повторно.
Также как и для связки с CRS-системой, реализована запись всех отправляемых и получаемых данных к и от ККМ-сервера, что также позволяет вылавливать ошибки и в случае необходимости повторять запрос.
Реализованный проект позволяет контролировать оплаты и возвраты напрямую из Битрикс24, обмениваться данными с CRS-системой и ККМ-сервером, что в свою очередь сильно упрощает работу менеджеров и делает работу с транзакциями клиентов более прозрачной и удобной.