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