Пример реализации простой кассы на REST API
Добавление обработчика кассы
Пример добавления обработчика кассы с возможностью настройки данных для авторизации, информации о компании и режиме работы кассы:
BX24.callMethod( "sale.cashbox.handler.add", { "CODE": "my_rest_cashbox", "NAME": "Моя REST-касса", "SORT": 100, "SETTINGS": { "PRINT_URL": "http:\/\/example.com\/rest_print.php", "CHECK_URL": "http:\/\/example.com\/rest_check.php", "CONFIG": { "AUTH": { "LABEL": "Авторизация", "ITEMS": { "LOGIN": { "TYPE": "STRING", "REQUIRED": "Y", "LABEL": "Логин" }, "PASSWORD": { "TYPE": "STRING", "REQUIRED": "Y", "LABEL": "Пароль" }, } }, "COMPANY": { "LABEL": "Данные об организации", "ITEMS": { "INN": { "TYPE": "STRING", "REQUIRED": "Y", "LABEL": "ИНН организации" } } }, "INTERACTION": { "LABEL": "Настройки взаимодействия с кассой", "ITEMS": { "MODE": { "TYPE": "ENUM", "LABEL": "Режим работы с кассой", "OPTIONS": { "ACTIVE": "боевой", "TEST": "тестовый" } } } } } } }, function(result) { if(result.error()) console.error(result.error()); else console.dir(result.data()); } );
Добавленная касса настраивается пользователем через настройки магазина или через Центр продаж. Пример настройки:
- Вкладка Касса:
- Вкладка Настройки:
Страница PRINT_URL
Страница PRINT_URL - адрес, на который отправляются данные для печати чека.
Структура POST-параметров, отправляемых на адрес PRINT_URL:
Параметр | Описание |
---|---|
type | Тип чека. Значения:
|
operation | Признак прихода/расхода. Значения:
|
unique_id | ID чека в базе данных портала. |
items | Массив товаров в чеке. Структура элементов массива:
|
date_create | Дата создания чека (timestamp). |
payments | Массив оплат. Структура элементов массива:
|
client_email | E-mail клиента. |
total_sum | Общая сумма по чеку. |
uuid | Идентификатор документа во внешней системе (портал Битрикс24). |
number_kkm | Внешний идентификатор кассы (из настроек кассы). |
service_email | Email (из настроек кассы). |
cashbox_params | Массив настроек кассы. Структура задаётся параметром CONFIG массива SETTINGS, указанного в качестве параметра метода sale.cashbox.handler.add. |
По адресу PRINT_URL происходит обработка входных данных, формирование документа и возвращение результата печати. Ответом в случае ошибки служит JSON-массив вида:
{ "ERRORS": [ "Сообщение об ошибке", "Сообщение об ошибке", ... ] }
При успешной печати массив имеет вид:
{ "UUID": "00112233-4455-6677-8899-aabbccddeeff" }
Пример реализации простого обработчика:
<?php $login = $_REQUEST['cashbox_params']['AUTH']['LOGIN']; $password = $_REQUEST['cashbox_params']['AUTH']['PASSWORD']; if (empty($login) || empty($password)) { echo json_encode([ 'ERRORS' => [ 'Authorization data is missing', ] ]); die(); } // произведение необходимых действий: авторизация пользователя, обработка данных, регистрация чека в системе, ... echo json_encode([ 'UUID' => $resultUUID, ]);
Страница CHECK_URL
Страница CHECK_URL - адрес, по которому происходит проверка успешности печати чека.
Запрос по адресу CHECK_URL производится по запросу менеджера либо спустя некоторое время после успешной печати чека.
Структура POST-параметров, отправляемых на адрес PRINT_URL:
Параметр | Описание |
---|---|
uuid | Идентификатор чека. |
Запрос по адресу CHECK_URL должен возвращать данные о чеке, данные об ошибке, возникшей при печати, либо статус “в ожидании печати”.
Пример реализации простого обработчика:
<?php $uuid = $_REQUEST['uuid']; // произведение необходимых действий: проверка статуса чека, ... // при печати чека произошла ошибка if ($result['ERROR']) { echo json_encode([ 'STATUS' => 'ERROR', 'ERROR' => 'Сообщение об ошибке' ]); die(); } // чек ещё не напечатан if ($result['WAIT']) { echo json_encode([ 'STATUS' => 'WAIT', ]); die(); } // отправка результата echo json_encode([ 'STATUS' => 'DONE', 'UUID' => $uuid, 'REG_NUMBER_KKT' => '000111222333', 'FISCAL_DOC_ATTR' => '33445500', 'FISCAL_DOC_NUMBER' => 123, 'FISCAL_RECEIPT_NUMBER' => 10, 'FN_NUMBER' => '0011223344556677', 'SHIFT_NUMBER' => 12, 'PRINT_END_TIME' => 1609452000, ]);
Данные, возвращаемые CHECK_URL, сохраняются в базу данных и используются для генерации ссылки на чек.
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
Возможно, оставлено для совместимости? | ||
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
Просмотрел, в примере кода указаны статусы WAIT и ERROR для CHECK_URL | ||
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
SHIFT_NUMBER - Тег 1038 Номер смены. | ||
Сообщение не промодерировано, возможны ошибки и неточности.
|
В чем разница полей 'type' и 'is_cash' в массиве оплат 'payments'?
|
Сообщение не промодерировано, возможны ошибки и неточности.
|
В ответе обработчика CHECK_URL, что обозначает "SHIFT_NUMBER"?
Какие еще бывают STATUS кроме DONE? Что они значат? |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.