- независимость от программной и аппаратной среды как клиента, так и сервера
- для кодирования международных символов используется UTF-8
- в отличии от бинарных протоколов, текстовый протокол не критичен к задержкам в процессе передачи. Лишь бы сообщение оказалось передано до конца и без искажений (за этим в минимальной степени следит сам протокол TCP)
- для максимальной гарантии защиты сообщения от искажения может (опционально) использоваться механизм сертификатов SSL.
В протоколе различается два типа сообщений: запрос и ответ.
После получения запроса (корректного или не корректного) сервер обязан вернуть ответ (результат исполнения команды или ошибку). После этого сервер отключает клиента. Таким образом, за одно подключение кассовый сервер может выполнить только одну команду XML-протокола.
Структура сообщения ЗАПРОС
Код: Выделить всё
<ControlProtocol messageType="request">
КОМАНДА[+параметры]
</ControlProtocol>
Структура сообщения ОТВЕТ
Код: Выделить всё
<ControlProtocol messageType="answer">
<error id="КОД_СТАТУСА" text="ОПИСАНИЕ_СТАТУСА"/>
<НАЗВАНИЕ_КОМАНДЫ [ОТВЕТ_ФР] />
</ControlProtocol>
В нормальной ситуации КОД_СТАТУСА равен нулю, что соответствует значению ОПИСАНИЕ_СТАТУСА "Ошибок нет".
Для отслеживания логических цепочек команд в состав ответа включается НАЗВАНИЕ_КОМАНДЫ исполнение которой производилось. Если команды возвращает ответ, то он будет оформлен в виде пар АТРИБУТ=ЗНАЧЕНИЕ в поле ОТВЕТ_ФР.
Пример пары ЗАПРОС-ОТВЕТ
В качестве примера возьмем команду "Запрос денежного регистра"
Сообщение ЗАПРОС
Будет запрошен 195-й денежный регистр (сумма возвратов по первой форме оплаты "Наличными").
Код: Выделить всё
<ControlProtocol messageType="request">
<getMoneyReg idReg="195" />
</ControlProtocol>
Сообщение ОТВЕТ
Код: Выделить всё
<ControlProtocol messageType="answer">
<error id="0" text="Ошибок нет"/>
<getMoneyReg idReg="195" Value="32010"/>
</ControlProtocol>
Кассовый сервер сообщает, что команда getMoneyReg для денежного регистра выполнена без ошибок. Сумма накоплений Value составляет 32010 МДЕ.
Все денежные величины указываются в МДЕ - Минимальных Денежных Единицах, т.е. копейках.
Все весовые/количественные величины указываются в МКЕ - Минимальных Количественных Единицах, граммах.
Таким образом, 32010 МДЕ = 32010 копеек = 320 рублей 10 копеек