Для возможности продажи с использованием протокола AVS5RS необходимо реализовать сервис с использованием протокола HTTP. Все запросы оправляются методом POST.
Методы включают в себя справочные методы и методы продажи. Продажа состоит из двух этапов резервирование и подтверждение продажи.
Протокол должен быть защищен авторизацией через логин и пароль. Так же необходимо чтобы трафик передавался по защищенному каналу связи с использованием SSL или VPN.
Введение
========
## Методы сервиса
Данный документ содержит спецификацию протокола AVS5RS, предназначенного
для организации удаленной продажи билетов на автотранспорте.
Спецификация предназначена для унификации процесса обмена данными между
перевозчиками, автовокзалами и агентами по продаже билетов.
Все запросы должны передаваться по протоколу HTTP методом пост. В теле POST запроса и ответа передается XML фиксированного формата.
Каждый метод имеет отдельный URL. Через HTTP заголовок Content-Type передается значение `application/xml; charset=UTF-8`.
Этот заголовок указывает на тип содержимого запроса и его кодировку. Необходимо использовать только кодировку UTF-8.
Описание протокола
==================
### Формат ответа
Общие сведения
--------------
Корневой тег XML ответа Response. У него есть обязательный атрибут success, который указывает корректно выполнился запрос или нет, значения true - корректно, false - нет.
Если ответ корректный, то данные ответа содержатся во вложенном теге Body. Если ответ не корректный, тег Body будет проигнорирован, а информация об ошибке должна
находиться во вложенном теге Error. Который состоит из кода ошибки и описания. Коды ошибок не регламентируются. Описание это произвольные тест, поясняющий причину ошибки.
Регистр названий тегов и атрибутов должен совпадать с регистром из примеров.
Все ответы должны приходить с HTTP кодом 200. Все XML ответы должны начинаться с объявления `<?xml version="1.0" encoding="UTF-8"?>` в котором указана кодировка содержимого.
Формат даты `yyyy-MM-dd`, формат даты и времени `yyyy-MM-dd'T'HH:mm:ss`, пример 2016-09-07T13:10:00 (символ T латинский, обязательный) (секунды обязательны).
Время указано в часовом поясе сервера который предоставляет контент.
Все идентификаторы сущностей (id) это строки, произвольного формата, длинной до 36 символов.
Обмен данными в протоколе AVS5RS производится через протокол HTTP.
Передача и прием данных производится в формате XML, с использованием
кодировки UTF-8.
Корректный ответ:
Все запросы оправляются методом POST. Каждый метод протокола реализуется
через отдельный URL, который строится относительно базового адреса
сервиса, далее обозначаемого как \[BASE\_URL\].
Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и
HTTP-заголовком “Content-Type”, имеющим значение “application/xml; charset=UTF-8”.
Доступ к веб-сервису, реализующему протокол AVS5RS, должен быть закрыт с
применением Basic-аутентификации. Допускается использование протокола
HTTPS, контроля доступа по IP, передача данных через VPN-соединение.
Форматы данных
--------------
Тело XML- ответа должно начинаться с объявления
`<?xml version="1.0" encoding="UTF-8"?>`. Регистр
названий тегов и атрибутов должен совпадать с регистром из примеров.
XML-ответ сервиса, реализующего протокол в обязательном порядке имеет
корневой тег `<Response>`с атрибутом success, который указывает на
результат выполнения запроса: true - корректно, false - нет. Если ответ
корректный, то данные ответа содержатся во вложенном теге <Body>.
Если ответ не корректный, информация об ошибке должна находиться во
вложенном теге <Error>, который состоит из кода ошибки в теге
<code> и описания ошибки в теге <message>. Коды ошибок не
регламентируются. Описание - это произвольные текст на русском языке,
поясняющий причину ошибки.
Формат даты: `yyyy-MM-dd`, формат даты и времени:
`yyyy-MM-dd'T'HH:mm:ss`. Пример:
2016-09-07T13:10:00 (символ T латинский, обязательный) (секунды
обязательны). Время указано в часовом поясе сервера который
предоставляет контент. Все идентификаторы сущностей (id) это строки,
произвольного формата, длинной до 36 символов.
Пример ответа в случае успешной обработки запроса:
Метод принимает в параметра произвольную строку и возвращает её в теле ответа. Не выполняет ни какой логики. Необходим для проверки доступен ли сервис.
Используется для проверки доступности сервиса.
**URL: /sales/echo**
Метод принимает в параметре произвольную строку и возвращает её в теле
ответа.
**URL: \[BASE\_URL\]/sales/echo**
Запрос:
@ -78,11 +117,12 @@
### getDispatchStations
Метод получения станций отправления.
Продажа происходит от станции отправления до станции назначения, поэтому метод должен вернуть хотя бы один элемент.
Обычно станциями отправления являются автовокзалы или автоматизированные остановочные пункты с функцией продажи билетов.
Метод получения станций отправления. Продажа происходит от станции
отправления до станции назначения, поэтому метод должен вернуть хотя бы
один элемент. Обычно станциями отправления являются автовокзалы или
автоматизированные остановочные пункты с функцией продажи билетов.