KassaLite RPC protocol
RPC (Remote Procedures Call) - удаленный вызов процедур по HTTP
Описание
Программный интерфейс (API) системы ClassCard работает через протокол HTTP POST. В параметрах запроса указывается название функции и ее параметры. По умолчанию используется кодировка UTF-8. Строка запроса выглядит примерно так:
http://server.ru:8888/api?function=Login&login=8006248383&passw=4444
Параметры запроса могут стоять в любом порядке. Некоторые параметры функций являются обязательными, они отмечены подчеркиванием. Часть функций требуют пропуск (token) - это кодовая строка, получаемая при успешной авторизации. Ответ отправляется в формате XML, например:
<response><error>Auth failed</error></response>
Табличные значения
- Числа с десятичной точкой: с точкой
- Даты:
- целая часть - число дней с 30 декабря 1899
- дробная - доля суток (1/24 - 1 час, 1/24/60 - 1 минута, итд..)
Таблица:
<table> <item> <id>1</id> <name>Иван</name> <date>344542.43464</date> <summa>321.78</summa> </item> <item> <id>2</id> <name>Михаил</name> <date>344546.43344</date> <summa>123.45</summa> </item> </table>
Общие параметры для всех запросов
- function - имя вызываемой функции
- format - формат ответа. По умолчанию format=xml. Можно получить ответ в формате JSON, для этого нужно указать параметр format=json
- encoding - кодировка данных в запросе и в ответе. По умолчанию encoding=utf-8
Список функций
Авторизация
Login( login, passw )
Авторизует пользователя в системе, возвращает пропуск (token) или ошибку авторизации.
Параметры:
- name - учетное имя пользователя
- passw - пароль
CheckToken( token, url )
Проверка токена и URL отправителя. Если URL не указан, то проверяется только токен. Если токен действителен, то возвращается идентификатор пользователя - владельца токена, логин и время логина.
Проверка URL используется при кросс-доменной авторизации, для предотвращения авторизации с неизвестных хостов.
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- url - строка URL обратного вызова, при кросс-доменной авторизации
GetAccountByMifare( token, mifare_id )
Возвращает данные пользователя по MifareID карты. Вызывается после считывания карты для отображения данных на экране. Исторически была заточена под школы, отсюда названия некоторых параметров.
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- mifare_id - MifareID прочитанной карты, например 40B399DE
Возвращает таблицу:
- id - код абонента
- mifare_id - MifareID карты
- internal_card_id - внутренний номер карты (не используется)
- balance - остаток денег на счету карты
- day_limit - дневной лимит расходов по карте
- available_sum - доступная для расходования сумма (с учетом возвратов и предыдущих покупок)
- discount_available - сумма скидки (отображается если не равна нулю)
- fam - фамилия
- im - имя
- otch - отчество
- account_type - название должности абонента
- class_id - код подразделения
- class_num - название подразделения
- class_liter - название подразделения
- in_school - признак присутствия
- photo_md5 - MD5 хеш фотографии абонента (не используется)
GetUserPhoto( token, user_id, mifare_id )
Вызывается сразу после запроса GetAccountByMifare(). Возвращает фотографию пользователя. Нужно указать user_id или mifare_id пользователя. Фотография возвращается в бинарном виде.
MakePurchase( token, mifare_id, sum1, sum2 )
Операция упрощенной продажи. Указываются только общие суммы по двум отделам. Суммы указываются даже если они равны нулю.
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- mifare_id - MifareID карты абонента
- sum1 - сумма по первому отделу
- sum2 - сумма по второму отделу
Возвращает:
- doc_id - код операции
MakePurchaseGoods( token, mifare_id, summa, doc_body )
Операция продажи товаров. Таблица товаров передается в параметре doc_body формата:
id,goods_id,name,amount,sum,dept@ id - код (не используется) goods_id - код товара name - название товара (без запятых) amount - количество sum - сумма dept - номер отдела @ - конец строки Может быть несколько таких записей подряд, разделенных символом "@"
Возвращает:
- doc_id - код операции
GetRefundSum( token, account_id )
Запрос доступных сумм возвратов по отделам, отправляется после запроса GetAccountByMifare() в режиме «Возврат».
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- account_id - код абонента
Возвращает:
- l_sum_dept_1 - сумма по отделу 1
- l_sum_dept_2 - сумма по отделу 2
MakeRefund( token, mifare_id, sum1, sum2 )
Операция возврата, указываются суммы возврата по первому и второму отделу.
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- mifare_id - MifareID карты абонента
- sum1 - сумма возврата по отделу 1
- sum2 - сумма возврата по отделу 2
Возвращает:
- doc_id - код операции
GetReportX( token )
Запрос данных для X-отчета по продажам
Возвращает таблицу:
- department_id - номер отдела продаж
- sum_total - сумма продаж
- body_cnt - число продаж
- r_department_id - номер отдела возвратов
- r_sum_total - сумма возвратов
- r_body_cnt - число возвратов
GetReportZ( token )
Закрытие смены, отчет по смене (Z-отчет)
Возвращает таблицу:
- department_id - номер отдела продаж
- sum_total - сумма продаж
- body_cnt - число продаж
- r_department_id - номер отдела возвратов
- r_sum_total - сумма возвратов
- r_body_cnt - число возвратов
GetVendReportX( token )
Запрос данных для X-отчета по продажам торгового автомата (раздатчика)
Возвращает таблицу:
- department_id - номер отдела продаж
- sum_total - сумма продаж
- body_cnt - число продаж
GetVendReportZ( token )
Закрытие смены, отчет по смене (Z-отчет) для торгового автомата
Возвращает таблицу:
- department_id - номер отдела продаж
- sum_total - сумма продаж
- body_cnt - число продаж
GetMeals( token )
Запрос видов комплексного питания (завтраки, обеды). Выполняется при начале работы если включен модуль «Групповые заказы».
Возвращает таблицу:
- id - код трапезы
- meal_name - название трапезы
- meal_type_id - код типа трапезы (1-завтрак, 2-обед, 3-полдник)
- price - цена трапезы
GetScoList( token )
Запрос таблицы заказов комплексного питания по классам/подразделениям. При отображении заказы группируются по классам/подразделениям и по трапезам.
Возвращает таблицу:
- id - код
- meal_id - код трапезы
- result_price - сумма заказа
- account_id - код абонента
- class_num - название подразделения
- class_liter - название подразделения
- start_time - время начала трапезы по расписанию
GetGoodsList( token )
Запрос таблицы предопределенных товаров, недоступных для изменения кассиром. Не используется.
GetLocalGoodsList( token )
Запрос таблицы товаров буфета, которые могут редактироваться кассиром. Выполняется если включен модуль «Товары» при начале работы и при каждом переходе в раздел «Товары».
Возвращает таблицу:
- good_id - код товара
- portion_name - название товара
- price - цена товара
- plu_code - PLU-код товара
- key_code - код клавиши
- ask_amount - запрос количества (1-запрашивать)
- department_id - номер отдела
SetLocalGoodsItem( token, id, goods_id, name, price, plu_code, key_code, ask_amount, department_id )
Изменение товара буфета. Выполняется при изменении любого реквизита товара. Из-за особенности реализации в школьной базе, при изменении названия кассирка сперва удаляет товар командой DeleteLocalGoodsItem()
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- id - код товара
- goods_id - код неизменяемого товара (не используется)
- name - название товара, включая единицу измерения (без запятых!)
- price - цена товара
- plu_code - PLU-код товара
- key_code - код клавиши
- ask_amount - запрос количества (1-запрашивать)
- department_id - номер отдела
DeleteLocalGoodsItem( token, id, goods_id, name )
Удаление товара по коду или названию.
Параметры:
- token - токен пользователя, полученный при авторизации в функции Login
- id - код товара
- goods_id - код неизменяемого товара (не используется)
- name - название товара, включая единицу измерения (без запятых!)
GetSchoolParams( token )
Запрос таблицы параметров. Выполняется при начале работы для получения реквизитов для печати чеков. Необязательно, можно использовать параметры в конфиге. Названия параметров:
- ENTPR_NAME - название организации
- ENTPR_INN - ИНН организации
- ENTPR_INDEX - почтовый индекс
- ENTPR_CITY - город
- ENTPR_ADDR - адрес
Возвращает таблицу:
- param_name - название параметра
- param_value - значение параметра
- param_comment - описание параметра