Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1028 строки
49 KiB
Markdown

7 лет назад
Спецификация на протокол AVS5RS продажи билетов для автотранспорта
==================================================================
8 лет назад
**Версия документа: 2.1**
8 лет назад
7 лет назад
**Дата изменения: 06.09.2017**
8 лет назад
7 лет назад
Введение
========
8 лет назад
7 лет назад
Данный документ содержит спецификацию протокола AVS5RS, предназначенного
для организации удаленной продажи билетов на автотранспорте.
Спецификация предназначена для унификации процесса обмена данными между
перевозчиками, автовокзалами и агентами по продаже билетов.
8 лет назад
7 лет назад
Описание протокола
==================
8 лет назад
7 лет назад
Общие сведения
--------------
8 лет назад
7 лет назад
Обмен данными в протоколе AVS5RS производится через протокол HTTP.
7 лет назад
Передача и прием данных производится в формате XML, с использованием
7 лет назад
кодировки UTF-8.
8 лет назад
7 лет назад
Все запросы оправляются методом POST. Каждый метод протокола реализуется
через отдельный URL, который строится относительно базового адреса
сервиса, далее обозначаемого как \[BASE\_URL\].
Доступ к веб-сервису, реализующему протокол AVS5RS, должен быть закрыт с
применением Basic-аутентификации. Допускается использование протокола
HTTPS, контроля доступа по IP, передача данных через VPN-соединение.
7 лет назад
Общие форматы данных:
---------------------
Формат даты: `yyyy-MM-dd`, формат даты и времени:
`yyyy-MM-dd'T'HH:mm:ss`. Пример:
2016-09-07T13:10:00 (символ T латинский, обязательный) (секунды
обязательны). Время указано в часовом поясе сервера который
предоставляет контент.
Числа с плавающий точко в качестве разделителя используют точку.
Дробная часть не обязательна и не более 2 знаков.
7 лет назад
Все идентификаторы сущностей (id) это строки, произвольного формата, длинной до 36 символов.
Разрешенные символы: цифры, латинские буквы в любом регистре, и символы -={}[]$
Могут быть как искусственными (sequence) так и реальными значениями (номер билета, номер места и.т.д.)
7 лет назад
Форматы данных XML
------------------
Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и
HTTP-заголовком “Content-Type”, имеющим значение “application/xml; charset=UTF-8”.
7 лет назад
Тело XML- ответа должно начинаться с объявления
`<?xml version="1.0" encoding="UTF-8"?>`. Регистр
названий тегов и атрибутов должен совпадать с регистром из примеров.
7 лет назад
XML-ответ в обязательном порядке имеет корневой тег, название которого
должно соответствовать формату "&lt;НазваниеМетодаResponse&gt;" (например EchoResponse, SearchTripsResponse)
Если ответ корректный, то данные ответа содержатся во вложенном теге &lt;Body&gt;.
7 лет назад
Если ответ не корректный, информация об ошибке должна находиться во
вложенном теге &lt;Error&gt;, который состоит из кода ошибки в теге
7 лет назад
&lt;code&gt; и описания ошибки в теге &lt;message&gt;. Код ошибок в приложении.
Описание - это произвольные текст на русском языке,
поясняющий причину ошибки. Некоторые методы допускают пустой ответ.
Пустой ответ содержит только корневой тег.
7 лет назад
7 лет назад
Пустой ответ:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<UpdateTicketResponse>
</UpdateTicketResponse>
```
7 лет назад
Пример ответа в случае успешной обработки запроса:
8 лет назад
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<EchoResponse>
8 лет назад
<Body>
<message>Test</message>
</Body>
7 лет назад
</EchoResponse>
8 лет назад
```
7 лет назад
Пример ответа в случае обработки запроса с ошибкой:
8 лет назад
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<BookResponse>
8 лет назад
<Error>
<code>ERROR</code>
<message>Место 5 занято</message>
</Error>
7 лет назад
</BookResponse>
```
7 лет назад
Методы протокола
----------------
8 лет назад
### echo
7 лет назад
Используется для проверки доступности сервиса.
8 лет назад
7 лет назад
Метод принимает в параметре произвольную строку и возвращает её в теле
ответа.
**URL: \[BASE\_URL\]/sales/echo**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<EchoRequest>
<!-- Сообщение которое будет возвращено в ответ. Обязательно. -->
<message>Test</message>
</EchoRequest>
```
Ответ:
```xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
7 лет назад
<EchoResponse>
8 лет назад
<Body>
<!-- Сообщение переданное в запросе -->
<message>Test</message>
</Body>
7 лет назад
</EchoResponse>
8 лет назад
```
### getDispatchStations
7 лет назад
Метод получения станций отправления. Продажа происходит от станции
отправления до станции назначения, поэтому метод должен вернуть хотя бы
один элемент. Обычно станциями отправления являются автовокзалы или
автоматизированные остановочные пункты с функцией продажи билетов.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getDispatchStations**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetDispatchStationsRequest>
</GetDispatchStationsRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetDispatchStationsResponse>
8 лет назад
<Body>
<!-- Станция -->
<Station>
<!-- Идентификатор станции. Обязателен. -->
<id>983</id>
<!-- Наименование станции. Обязателен. Используется для отображения в интерфейсе пользователя -->
<name>ВДНХ АС</name>
<!-- Название региона станции. Не обязателен. Используется для отображения в интерфейсе пользователя -->
<region>Москва</region>
<!-- ОКАТО станции. Не обязателен. Используется для поиска одинаковых станций и отображения в интерфейсе пользователя -->
<okato>45000000000</okato>
</Station>
<Station>
<id>853</id>
<name>Варшавская АС</name>
<region>Москва</region>
<okato>45000000000</okato>
</Station>
<Station>
<id>6</id>
<name>Красногвардейская АС</name>
<region>Москва</region>
<okato>45000000000</okato>
</Station>
</Body>
7 лет назад
</GetDispatchStationsResponse>
```
8 лет назад
### getArrivalStations
7 лет назад
Метод получения станций назначения от станции отправления. В параметре
принимает идентификатор станции отправления. Станциями назначения могут
быть любые остановочные пункты до которых есть хотя бы один рейс. Если
7 лет назад
станций назначения нет, метод должен вернуть пустой список.
В случае отсутствия станций назначения для указанной станции отправления
возвращать пустой ответ.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getArrivalStations**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetArrivalStationsRequest>
<!-- Идентификатор станции отправления. Обязательно. -->
<dispatchStationId>983</dispatchStationId>
</GetArrivalStationsRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetArrivalStationsResponse>
<Body>
<Station>
<id>1069</id>
<name>Рыбинск</name>
<region>Ярославская область</region>
<okato>78415000000</okato>
</Station>
<Station>
<id>1018</id>
<name>Сергиев Посад</name>
<region>Московская область</region>
<okato>46215501000</okato>
</Station>
<Station>
<id>1084</id>
<name>Углич</name>
<region>Ярославская область</region>
<okato>78420000000</okato>
</Station>
<Station>
<id>1078</id>
<name>Утена</name>
<region>Литва</region>
</Station>
</Body>
</GetArrivalStationsResponse>
8 лет назад
```
### searchTrips
7 лет назад
Метод возвращает список рейсов от станции отправления до станции
назначения на заданную дату. В параметрах передается идентификатор
7 лет назад
станции отправления, идентификатор станции назначения и дата.
В случае отсутствия рейсов для указанных параметров возвращать пустой ответ.
Рейсы должны быть отсортированы по дате отправления.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/searchTrips**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<SearchTripsRequest>
<!-- Идентификатор станции отправления. Обязательно.-->
<dispatchStationId>983</dispatchStationId>
<!-- Идентификатор станции назначения. Обязательно. -->
<arrivalStationId>678</arrivalStationId>
<!-- Дата на которую выполняется поиск рейса. Обязательно. -->
<date>2016-07-12</date>
</SearchTripsRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<SearchTripsResponse>
8 лет назад
<Body>
<!-- Рейс-->
<Trip>
<!-- Идентификатор рейса. Обязательно. -->
<id>570104</id>
<!-- Номер маршрута. Не обязателен. -->
<num>000</num>
<!-- Идентификатор маршрута. Не обязательно -->
<routeId>d1e39ba7-b9d6-48f6-a4ba-03674a381c90</routeId>
8 лет назад
<!-- Название маршрута. Обязателен. -->
<name>ВДНХ АС - Пенза</name>
<!-- Дата и время отправления. Обязателен. -->
<dispatchDate>2016-07-13T19:30:00</dispatchDate>
<!-- Дата и время прибытия. Обязателен. -->
<arrivalDate>2016-07-14T05:30:00</arrivalDate>
<!-- ID станции отправления. Обязателен. -->
<dispatchStationId>983</dispatchStationId>
<!-- Станция отправления рейса. Обязателен. -->
<dispatchStationName>ВДНХ АС</dispatchStationName>
<!-- ID станции назначения. Обязателен. -->
<arrivalStationId>744</arrivalStationId>
<!-- Станция назначения рейса. Обязателен. -->
<arrivalStationName>Пенза</arrivalStationName>
<!-- Цена полного проездного билета (включая сборы). Обязателен. -->
<price>1391</price>
<!-- Название перевозчика. Не Обязателен. -->
<carrierName>ИП Ерашова Валентина Анатольевна</carrierName>
<!-- ИНН перевозчика. Обязателен. -->
<carrierInn>ИНН 582700056092</carrierInn>
<!-- Описание автобуса. Обязателен. -->
<busInfo>49 Мест Категория ТС &quot;М3&quot; </busInfo>
<!--
тип рейса. Обязателен. см. ФЗ-220
7 лет назад
INTERNATIONAL - Международный.
INTERREGIONAL - Межрегиональный.
ADJACENT_INTERREGIONAL - Смежный межрегиональный.
INTERMUNICIPAL - Межмуниципальный.
MUNICIPAL - Муниципальный.
8 лет назад
-->
<type>INTERREGIONAL</type>
<!--
7 лет назад
Статус рейса. Обязателен.
ON_SALE - В продаже. Можно продавать билеты на этот рейс,
SUSPENDED - Приостановка продажи. Продажа запрещена.
CANCELED - Рейс отменен. Продажа запрещена.
DISPATCHED - Рейс отправлен. Продажа запрещена.
8 лет назад
UNKNOWN - Неопределенный статус. Рейс не доступен для продажи.
-->
<status>ON_SALE</status>
<!--
Класс рейса. Не обязателен. По умолчанию - регулярный
REGULAR - Регулярный рейс
CUSTOM - Заказной рейс
-->
<class>REGULAR</class>
8 лет назад
<!-- Количество мест в автобусе. Обязателен. -->
<seatCount>49</seatCount>
<!-- Кол-во мест, доступных для продажи. Обязателен.-->
<freeSeatCount>49</freeSeatCount>
7 лет назад
<!-- Ключ маршрута. Не обязателен. Используется при транзитных продажах -->
<RouteKey>
<!-- Uid станции формирования -->
<dispatchStationUid>d13945a8-7017-46ab-b1e6-ede1e89317ad</dispatchStationUid>
<!-- Uid конечной станции -->
7 лет назад
<arrivalStationUid>279e7c39-2570-44e0-83e6-d1f473d50e0f</arrivalStationUid>
7 лет назад
<!-- время выход с точки формирования -->
<dispatchTime>10:00:00</dispatchTime>
</RouteKey>
8 лет назад
</Trip>
<Trip>
<id>570105</id>
<num>000</num>
<routeId>904ede1a-95af-4db3-928f-e9a2c6302278</routeId>
8 лет назад
<name>ВДНХ АС - Пенза</name>
<dispatchDate>2016-07-13T21:30:00</dispatchDate>
<arrivalDate>2016-07-14T07:30:00</arrivalDate>
<dispatchStationId>983</dispatchStationId>
<dispatchStationName>ВДНХ АС</dispatchStationName>
<arrivalStationId>744</arrivalStationId>
<arrivalStationName>Пенза</arrivalStationName>
<price>1391</price>
<carrierName>ИП Ерашова Валентина Анатольевна</carrierName>
<carrierInn>ИНН 582700056092</carrierInn>
<busInfo>49 Мест Категория ТС &quot;М3&quot; </busInfo>
<type>INTERREGIONAL</type>
<status>ON_SALE</status>
<seatCount>49</seatCount>
<freeSeatCount>49</freeSeatCount>
</Trip>
</Body>
7 лет назад
</SearchTripsResponse>
8 лет назад
```
### getFreeSeats
7 лет назад
Получение списка свободных мест для рейса. В параметре принимает
идентификатор рейса, идентификатор станции отправления и идентификатор
станции назначения.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getFreeSeats**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetFreeSeatsRequest>
<!-- Идентификатор рейса. Обязательный. -->
<tripId>570101</tripId>
<!-- Идентификатор станции отправления. Обязательный. -->
<dispatchStationId>983</dispatchStationId>
<!-- Идентификатор станции назначения. Обязательный. -->
<arrivalStationId>1080</arrivalStationId>
</GetFreeSeatsRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetFreeSeatsResponse>
8 лет назад
<Body>
<!-- Место-->
<Seat>
7 лет назад
<!-- Идентификатор места. Обязателен. Может совпадать с номером.-->
8 лет назад
<id>17926</id>
7 лет назад
<!-- Номер места. Обязателен. Отображается в интерфейсе пользователя. -->
7 лет назад
<num>1</num>
8 лет назад
</Seat>
<Seat>
<id>17927</id>
7 лет назад
<num>2</num>
8 лет назад
</Seat>
<Seat>
<id>17928</id>
7 лет назад
<num>3</num>
8 лет назад
</Seat>
</Body>
7 лет назад
</GetFreeSeatsResponse>
8 лет назад
```
### getTicketTypes
7 лет назад
Получение списка типов билетов, доступных для продажи. В параметре
принимает идентификатор рейса, идентификатор станции отправления и
идентификатор станции назначения.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getTicketTypes**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetTicketTypesRequest>
<!-- Идентификатор рейса. Обязательный. -->
<tripId>570101</tripId>
<!-- Идентификатор станции отправления. Обязательный. -->
<dispatchStationId>983</dispatchStationId>
<!-- Идентификатор станции назначения. Обязательный. -->
<arrivalStationId>1080</arrivalStationId>
7 лет назад
</GetTicketTypesRequest>
8 лет назад
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetTicketTypesResponse>
8 лет назад
<Body>
<TicketType>
<!-- Идентификатор типа билета. Обязателен. Может совпадать с названием. -->
<id>1#1#0</id>
<!-- Название типа билета. Обязателен. -->
<name>Полный</name>
<!-- Цена для заданного типа билета (со сборами). Обязателен. -->
<price>1391</price>
<!--
Класс билета. Обязателен.
PASSENGER Пассажирский билет, с выделением места
BAGGAGE Багажный билет, без выделения места
7 лет назад
WITHOUT_SEAT Пассажирский билет, без выделением места
8 лет назад
-->
<ticketClass>PASSENGER</ticketClass>
</TicketType>
<TicketType>
<id>38#6#0</id>
<name>Детский</name>
<price>696</price>
<ticketClass>PASSENGER</ticketClass>
</TicketType>
<TicketType>
<id>0#0#0</id>
<name>Багажный</name>
<price>40</price>
<ticketClass>BAGGAGE</ticketClass>
</TicketType>
</Body>
7 лет назад
</GetTicketTypesResponse>
8 лет назад
```
### getDocumentTypes
7 лет назад
Получение списка типов документов, допустимых для удостоверения личности
при оформлении билетов через интернет. Система должна предоставить хотя
бы один тип документа. Допустимые идентификаторы и названия документов
перечислены в таблице 1 Приказа Минтранса РФ от 19 июля 2012 г. N 243
"Об утверждении Порядка формирования и ведения автоматизированных
централизованных баз персональных данных о пассажирах и персонале
(экипаже) транспортных средств, а также предоставления содержащихся в
них данных".
Текст документа в системе ГАРАНТ: <http://base.garant.ru/70229008/>
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getDocumentTypes**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetDocumentTypesRequest>
<!-- Идентификатор рейса. Обязательный. -->
<tripId>570101</tripId>
<!-- Идентификатор станции отправления. Обязательный. -->
<dispatchStationId>983</dispatchStationId>
<!-- Идентификатор станции назначения. Обязательный. -->
<arrivalStationId>1080</arrivalStationId>
</GetDocumentTypesRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetDocumentTypesResponse>
8 лет назад
<Body>
<DocumentType>
7 лет назад
<!-- ID типа документа. Обязателен. -->
<id>0</id>
8 лет назад
<!-- Название типа документа. Обязателен. -->
<name>Паспорт РФ</name>
</DocumentType>
<DocumentType>
7 лет назад
<id>3</id>
8 лет назад
<name>Паспорт иностранного гражданина</name>
</DocumentType>
<DocumentType>
<id>4</id>
7 лет назад
<name>Свидетельство о рождении</name>
8 лет назад
</DocumentType>
7 лет назад
</Body>
7 лет назад
</GetDocumentTypesResponse>
8 лет назад
```
7 лет назад
Таблица 1. Коды документов, удостоверяющих личность, при передаче в АЦБПДП
---------------------------------------------------------------
-------------------------------------------------------------------------
Код Наименование документа
--- -------------------------------------------------------------------
7 лет назад
0 Паспорт гражданина Российской Федерации
7 лет назад
7 лет назад
1 Паспорт моряка
7 лет назад
7 лет назад
2 Общегражданский заграничный паспорт гражданина Российской Федерации
7 лет назад
7 лет назад
3 Паспорт иностранного гражданина
7 лет назад
7 лет назад
4 Свидетельство о рождении
7 лет назад
7 лет назад
5 Удостоверение личности военнослужащего
7 лет назад
7 лет назад
6 Удостоверение личности лица без гражданства
7 лет назад
7 лет назад
7 Временное удостоверение личности, выдаваемое органами внутренних дел
7 лет назад
7 лет назад
8 Военный билет военнослужащего срочной службы
7 лет назад
7 лет назад
9 Вид на жительство иностранного гражданина или лица без гражданства
7 лет назад
10 Справка об освобождении из мест лишения свободы
11 Паспорт гражданина СССР
12 Паспорт дипломатический
13 Паспорт служебный (кроме паспорта моряка и дипломатического)
14 Свидетельство о возвращении из стран СНГ
15 Справка об утере паспорта
--------------------------------------------------------------------------
8 лет назад
### getTripStops
7 лет назад
Метод возвращает список остановочных пунктов для рейса. В параметре
принимает идентификатор рейса. Информация имеет справочный характер.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getTripStops**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetTripStopsRequest>
<!-- Идентификатор рейса. Обязателен. -->
<tripId>569839</tripId>
</GetTripStopsRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetTripStopsResponse>
8 лет назад
<Body>
<Stop>
<!-- ID остановки. Совпадает с ID станции. Обязателен. -->
<id>1011</id>
<!-- Название остановки. Совпадает с названием станции. Обязателен. -->
<name>Скопин (трасса)</name>
<!-- Район расположения остановки. Не обязателен. -->
<regionName>Рязанская область</regionName>
<!-- Дата-время прибытия на остановку. Обязателен. -->
<arrivalDate>2016-07-14T16:20:00</arrivalDate>
<!-- Дата-время отправления с остановки. Обязателен. -->
<dispatchDate>2016-07-13T21:00:00</dispatchDate>
<!-- Время стоянки в минутах. Не Обязателен. -->
<stopTime>10</stopTime>
<!-- Расстояние от пункта отправления до остановки в км. Не Обязателен. -->
<distance>260</distance>
<!-- Цена полного билета. Обязателен. -->
<price>1177</price>
</Stop>
<Stop>
<id>1010</id>
<name>Мичуринск (трасса)</name>
<regionName>Тамбовская область</regionName>
<arrivalDate>2016-07-14T16:20:00</arrivalDate>
<dispatchDate>2016-07-13T21:00:00</dispatchDate>
<stopTime>10</stopTime>
<distance>385</distance>
<price>1177</price>
</Stop>
<Stop>
<id>818</id>
<name>Тамбов (трасса)</name>
<regionName>Тамбовская область</regionName>
<arrivalDate>2016-07-14T16:20:00</arrivalDate>
<dispatchDate>2016-07-13T21:00:00</dispatchDate>
<stopTime>10</stopTime>
<distance>455</distance>
<price>1177</price>
</Stop>
</Body>
7 лет назад
</GetTripStopsResponse>
8 лет назад
```
### bookOrder
7 лет назад
Бронирование заказа. Бронь должна сохраняться в течение ограниченного времени,
7 лет назад
от 20 до 60 минут. Если в указанный период времени не поступает
7 лет назад
подтверждение оплаты через метод confirmOrder(), то система реализующая протокол
обязана отменить бронь. Метод должен выполнить все возможные проверки
7 лет назад
корректности переданных данных. Если это необходимо, система обязана самостоятельно
проверить правильность ввода персональных данных. В случае ошибки заказ не должен быть
7 лет назад
создан. Допускается бронирование нескольких билетов в рамках одного
заказа. В параметрах запроса передаются идентификатор рейса,
идентификатор станции отправления, идентификатор станции назначения,
информацию о бронируемых билетах, информацию об агенте совершивший эту
операцию. Информации о бронируемых билетах включает в себя идентификатор
типа билета, идентификатор места и информацию о пассажире. Информация об
7 лет назад
агенте включает в себя наименование и ИНН агента.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/bookOrder**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<BookOrderRequest>
<!-- Идентификатор рейса. Обязательный. -->
<tripId>570101</tripId>
<!-- Идентификатор станции отправления. Обязательный. -->
<dispatchStationId>983</dispatchStationId>
<!-- Идентификатор станции назначения. Обязательный. -->
<arrivalStationId>1080</arrivalStationId>
<!-- Информация о бронируемом билете. Для каждой брони отдельный тег Sale -->
<Sale>
<!-- Идентификатор места, полученный из getFreeSeats. Обязателен. -->
<seatId>25862</seatId>
<!-- Идентификатор типа билета, полученный из getDocumentTypes. Обязателен. -->
<ticketTypeId>1#1#0</ticketTypeId>
<!-- Персональные данные пассажира. Один пассажир на один билет -->
<Passenger>
<!-- Имя пассажира. Обязательно -->
<firstName>goxUEpWCud</firstName>
<!-- Фамилия пассажира. Обязательно-->
<lastName>sKZXIloHFn</lastName>
7 лет назад
<!-- Отчество пассажира. Обязательно для рейсов с типом INTERNATIONAL и INTERREGIONAL -->
8 лет назад
<middleName>pCaEgXgfWO</middleName>
<!-- Номер документа удостоверяющего личности. Обязателен.-->
<docNum>jwcmdIrmcc</docNum>
<!-- Серия документа удостоверяющего личности. Не Обязателен.-->
<docSeries>iFAElsnFHn</docSeries>
<!-- Идентификатор типа документа полученный при вызове getDocumentTypes. Обязателен. -->
<docTypeId>1</docTypeId>
7 лет назад
<!-- Дата рождения. Обязательно для рейсов с типом INTERNATIONAL и INTERREGIONAL -->
8 лет назад
<birthday>1986-01-01</birthday>
7 лет назад
<!-- Гражданство виде ISO2. Обязательно для рейсов с типом INTERNATIONAL и INTERREGIONAL -->
8 лет назад
<citizenshipISO2>RU</citizenshipISO2>
<!--
7 лет назад
Пол. Обязательно для рейсов с типом INTERNATIONAL и INTERREGIONAL
8 лет назад
MALE - Мужской
FEMALE - Женский
-->
<gender>MALE</gender>
7 лет назад
<!-- Телефон пассажира. Не обязателен. -->
<phone>999-888-77-66</phone>
<!--
Дополнительная произвольная информация. Не обязательно.
-->
<info>NjaqSdsD SDdsqlkr JFn</info>
8 лет назад
</Passenger>
</Sale>
<!-- Агент выполнивший операцию. Не Обязателен. -->
<Agent>
<!-- Имя агента. Не обязателен.-->
<name>ИП Твои билеты</name>
<!-- ИНН агента. Не обязателен.-->
<inn>2225555777</inn>
</Agent>
</BookOrderRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<BookOrderResponse>
8 лет назад
<Body>
<!-- Идентификатор заказ. Обязателен. -->
<orderId>9828350</orderId>
<!-- Время жизни заказа. В минутах. Не обязателен. По умолчанию значение 30 -->
<lifetime>30</lifetime>
</Body>
7 лет назад
</BookOrderResponse>
8 лет назад
```
### getOrder
7 лет назад
Получение информации о заказе. В параметрах принимает идентификатор
заказа, полученный в результате bookOrder. Метод должен вернуть такое же
количество билетов сколько было передано при вызове bookOrder. Метод
должен работать на любом этапе жизни заказа т.е. после создания,
подтверждения, отмены, возврата.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/getOrder**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<GetOrderRequest>
<!-- Идентификатор заказа, полученный при вызове bookOrder. Обязателен.-->
<orderId>9828350</orderId>
</GetOrderRequest>
```
Ответ:
```xml
7 лет назад
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<GetOrderResponse>
8 лет назад
<Body>
7 лет назад
<!-- Идентификатор заказа. Обязателен. -->
8 лет назад
<orderId>9828350</orderId>
<!-- Информация о билетах. Отдельный тег для каждого билета -->
<Ticket>
<!-- Идентификатор билет. Обязателен. -->
<id>12435438</id>
<!-- Номер билета. Обязателен после подтверждения заказа. -->
<number></number>
<!-- Серия билета. Не обязателен. -->
<series></series>
<!-- Дата и время создания билета. Обязателен. -->
<created>2016-07-13T05:48:15</created>
<!-- Дата и время возврата билета. Обязателен после возврата или отмены. -->
<returned></returned>
<!--
Статус билета
RESERVED Забронирован. Данный статус билет получает после бронирования. bookOrder
SOLD Продан. Данный статус билет получает после операции продажи. confirmOrder
CANCELED Отмена билета. Данный статус билет получает после отмены билета. cancelTicket
RETURNED Выполнен возврат билета. Данный статус билет получает после возврата билета. returnTicket
-->
<status>RESERVED</status>
<!--
Класс билета
PASSENGER Пассажирский билет, с выделением места
BAGGAGE Багажный билет, без выделения места
-->
<ticketClass>PASSENGER</ticketClass>
<!-- Идентификато типа билета. Обязателен. -->
<typeId>1#1#0</typeId>
<!-- Номер маршрута. Не обязателен. -->
<routeNum>000</routeNum>
<!-- Название маршрута. Обязателен. -->
<routeName>ВДНХ АС - Рыбинск</routeName>
<!-- Информация об автобусе. Обязателен -->
<busInfo>19 Мест Категория ТС &quot;М3&quot; </busInfo>
<!-- Название перевозчика. Не обязателен -->
<carrierName>ООО &quot;ВВМЛ&quot;</carrierName>
<!-- ИНН перевозчика. Обязателен. -->
<carrierInn>ИНН 7610074937</carrierInn>
<!-- Платформа отправления. Не обязателен. -->
<platform>Перрон 11</platform>
<!-- Дата и время отправления рейса. Обязателен. -->
<dispatchDate>2016-07-13T12:20:00</dispatchDate>
<!-- Станция посадки. Обязателен.-->
<dispatchStation>ВДНХ АС</dispatchStation>
<!-- Адрес станции посадки. Не обязателен -->
<dispatchAddress>пл.Шарля де Голля напротив Космонавтов2А,</dispatchAddress>
<!-- Дата и время прибытия. Обязателен. -->
<arrivalDate>2016-07-13T16:20:00</arrivalDate>
<!-- Станция назначения. Обязателен. -->
<arrivalStation>Углич</arrivalStation>
7 лет назад
<!-- Название места. Обязателен для билетов с местом. -->
7 лет назад
<seatNum>1</seatNum>
8 лет назад
<!-- Информация о пассажире. -->
<Passenger>
<lastName>Ckayuukvgn</lastName>
<firstName>Bgkzxffotu</firstName>
<middleName>Isdikvryin</middleName>
<docNum>PUPrvbqlgU</docNum>
<docSeries>fRHEoBHVbG</docSeries>
<docTypeId>1</docTypeId>
<birthday>1985-01-01</birthday>
<citizenshipISO2>RU</citizenshipISO2>
<gender>MALE</gender>
7 лет назад
<phone>999-888-77-66</phone>
<info>FewwLks Mq</info>
8 лет назад
</Passenger>
<!-- Тариф (руб). Обязателен после подтверждения. -->
<fare>0</fare>
7 лет назад
<!-- Cборы автовокзала(руб). Обязателен после подтверждения. Если нет то 0. -->
8 лет назад
<fees>0</fees>
7 лет назад
<!-- Сумма возврата (руб). Обязателен в случает возврата. -->
7 лет назад
<repayment>0</repayment>
8 лет назад
<!-- Информация о страховании. Обязательно. Необходим при печати билета. -->
<insuranceInfo>СТРАХОВЩИК: ПАО &quot;Росстрах&quot;; 119991; г. Москва; ул. Большая Ордынка; д. 40; стр.</insuranceInfo>
</Ticket>
</Body>
7 лет назад
</GetOrderResponse>
8 лет назад
```
### confirmOrder
7 лет назад
Подтверждение оплаты заказа. Данный метод должен вызываться только после
того как заказ действительно был оплачен покупателем. Метод не должен
делать проверок корректности заказа, все проверки должны выполняться в
bookOrder или updateTicket. Вызов этого метода означает подтверждение
правильного приема данных и получение денег от покупателя. В параметрах
принимает идентификатор заказа, полученный в результате bookOrder и
информацию об агенте который совершил операцию.
Агент может измениять тариф билета, только при наличии прямого договора между агентом и перевозчиком, и
соответствующего разрешения у агента. В этом случае агент обязан передать новый тариф для каждого билета.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/confirmOrder**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<ConfirmOrderRequest>
7 лет назад
<!-- ID заказа. Обязателен. -->
8 лет назад
<orderId>9828585</orderId>
<!-- Агент выполнивший операцию. Не Обязателен. -->
<Agent>
<!-- Имя агента. Не обязателен.-->
<name>ИП Твои билеты</name>
<!-- ИНН агента. Не обязателен.-->
<inn>2225555777</inn>
</Agent>
<TicketFare> <!-- Изменение тарифа билета. Не обязателен. -->
<fare>100</fare> <!-- новый тариф -->
<ticketId>0000002681</ticketId> <!-- ID билета -->
</TicketFare>
8 лет назад
</ConfirmOrderRequest>
```
Ответ:
7 лет назад
Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега ConfirmOrderResponse
8 лет назад
### cancelTicket
7 лет назад
Отмена одного или нескольких билетов. Техническая операция, выполняет полный возврат билета без
7 лет назад
удержаний. Необходима при нештатных ситуациях: в случае сбоев ККМ или
обнаружения ошибки выбора рейса, персональных данных. В параметрах
7 лет назад
принимает идентификаторы билета и информацию об агенте который совершил
операцию. Все билеты должны быть обработы в рамках одной транзакции.
т.е. если было передано 2 билета, первый был обработан а при обработке второго возникла ошибка
то обработка первого должна быть отменена.
Можно выполнять после создания заказа и в течении 5-30 минут
после подтверждения заказа.
7 лет назад
При интеграции с сервисом GDS гарантируется,
что переданные ticketId будут принадлежать одному заказу.
Решение допускать ли передачу Id билетов из разных заказов остается за вокзалом,
который реализует данный протокол.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/cancelTicket**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<CancelTicketRequest>
7 лет назад
<!-- ID билетов для возврата. произвольное количество тегов. -->
<ticketId>34</ticketId>
<ticketId>36</ticketId>
8 лет назад
<!-- Агент выполнивший операцию. Не Обязателен. -->
<Agent>
<!-- Имя агента. Не обязателен.-->
<name>ИП Твои билеты</name>
<!-- ИНН агента. Не обязателен.-->
<inn>2225555777</inn>
</Agent>
</CancelTicketRequest>
```
Ответ:
7 лет назад
Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега CancelTicketResponse. В ответе необходимо возвращать информацию только по обработанным билетам.
8 лет назад
### returnTicket
7 лет назад
Возврат одного или нескольких билетов. При возврате возможны удержания. В параметрах принимает
идентификатор билета и информацию об агенте который совершил операцию.
Все билеты должны быть обработы в рамках одной транзакции.
т.е. если было передано 2 билета, первый был обработан а при обработке второго возникла ошибка
то обработка первого должна быть отменена.
7 лет назад
Билет можно вернуть только после подтверждения confirmOrder.
7 лет назад
При интеграции с сервисом GDS гарантируется,
что переданные ticketId будут принадлежать одному заказу.
Решение допускать ли передачу Id билетов из разных заказов остается за вокзалом,
который реализует данный протокол.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/returnTicket**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<ReturnTicketRequest>
7 лет назад
<!-- ID билетов для возврата. произвольное количество тегов. -->
<ticketId>35</ticketId>
<ticketId>36</ticketId>
8 лет назад
<!-- Агент выполнивший операцию. Не Обязателен. -->
<Agent>
<!-- Имя агента. Не обязателен.-->
<name>ИП Твои билеты</name>
<!-- ИНН агента. Не обязателен.-->
<inn>2225555777</inn>
</Agent>
</ReturnTicketRequest>
```
Ответ:
7 лет назад
Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега ReturnTicketResponse. В ответе необходимо возвращать информацию только по обработанным билетам.
8 лет назад
### updateTicket
7 лет назад
Изменение персональных данных пассажира в забронированном или проданном
билете. В параметрах принимает идентификатор билета, информацию о
пассажире и информацию об агенте который совершил операцию.
8 лет назад
7 лет назад
**URL: \[BASE\_URL\]/sales/updateTicket**
8 лет назад
Запрос:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<UpdateTicketRequest>
<!-- Идентификатор билета. Обязательный -->
<ticketId>12435438</ticketId>
<Passenger>
<!-- Имя пассажира. Обязательно -->
<firstName>goxUEpWCud</firstName>
<!-- Фамилия пассажира. Обязательно-->
<lastName>sKZXIloHFn</lastName>
<!-- Отчество пассажира. Обязательно для Международных, Межобластных и Межреспубликанских рейсов-->
<middleName>pCaEgXgfWO</middleName>
<!-- Номер документа удостоверяющего личности. Обязателен.-->
<docNum>jwcmdIrmcc</docNum>
<!-- Серия документа удостоверяющего личности. Не Обязателен.-->
<docSeries>iFAElsnFHn</docSeries>
<!-- Идентификатор типа документа полученный при вызове getDocumentTypes. Обязателен. -->
<docTypeId>1</docTypeId>
<!-- Дата рождения. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
<birthday>1986-01-01</birthday>
<!-- Гражданство виде ISO2. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
<citizenshipISO2>RU</citizenshipISO2>
<!--
Пол. Обязательно для Международных, Межобластных и Межреспубликанских рейсов
MALE - Мужской
FEMALE - Женский
-->
<gender>FEMALE</gender>
<!--
Дополнительная произвольная информация. Не обязательно.
-->
<info></info>
8 лет назад
</Passenger>
<!-- Агент выполнивший операцию. Не Обязателен. -->
<Agent>
<!-- Имя агента. Не обязателен.-->
<name>ИП Твои билеты</name>
<!-- ИНН агента. Не обязателен.-->
<inn>2225555777</inn>
</Agent>
</UpdateTicketRequest>
```
Ответ:
```xml
<?xml version="1.0" encoding="UTF-8"?>
7 лет назад
<UpdateTicketResponse>
</UpdateTicketResponse>
8 лет назад
```
7 лет назад
7 лет назад
Отличия от версии 1
-------------------
* Удален атрибут success. Анализ ошибки проиводится по наличию тега Error
* Изменено именования корневых тегов ответа.
7 лет назад
* Отмена или возврат нескольких билетов одновременно.
7 лет назад
* Поля
* Trip
* Добавлено platform
* Seat
* Добавлено num
* Удалено name
* Удалено type
* Passenger
* Добавлено info
* Добавлено phone
* Ticket
* Дабавлено repayment
* Удалено chargeFare
* Удалено chargeOthers
* Удалено repaymentFare
* Удалено repaymentOthers
* Мелкие уточнения