You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1028 lines
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
* Мелкие уточнения