Протокол AV5 для интеграции систем продажи электронных билетов перевозчиков и системы GDS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1091 lines
48 KiB

5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
  1. Спецификация на протокол AVS5RS продажи билетов для автотранспорта
  2. ==================================================================
  3. **Версия документа: 2.0**
  4. **Дата изменения: 22.02.2017**
  5. Введение
  6. ========
  7. Данный документ содержит спецификацию протокола AVS5RS, предназначенного
  8. для организации удаленной продажи билетов на автотранспорте.
  9. Спецификация предназначена для унификации процесса обмена данными между
  10. перевозчиками, автовокзалами и агентами по продаже билетов.
  11. Описание протокола
  12. ==================
  13. Общие сведения
  14. --------------
  15. Обмен данными в протоколе AVS5RS производится через протокол HTTP.
  16. Передача и прием данных производится в формате XML или JSON, с использованием
  17. кодировки UTF-8.
  18. Все запросы оправляются методом POST. Каждый метод протокола реализуется
  19. через отдельный URL, который строится относительно базового адреса
  20. сервиса, далее обозначаемого как \[BASE\_URL\].
  21. Доступ к веб-сервису, реализующему протокол AVS5RS, должен быть закрыт с
  22. применением Basic-аутентификации. Допускается использование протокола
  23. HTTPS, контроля доступа по IP, передача данных через VPN-соединение.
  24. Отличия от версии 1
  25. -------------------
  26. * Удален атрибут success. Анализ ошибки проиводится по наличию тега Error
  27. * Изменено именования корневых тегов ответа.
  28. * Отмена или ворзрат нескольких билетов одновременно.
  29. * Поддержка формата JSON
  30. * Введены коды ошибок
  31. * Поля
  32. * Passenger
  33. * Добавлено info
  34. * Добавлено phone
  35. * Ticket
  36. * Дабавлено repayment
  37. * Удалено chargeFare
  38. * Удалено chargeOthers
  39. * Удалено repaymentFare
  40. * Удалено repaymentOthers
  41. * Мелкие уточнения
  42. Общие форматы данных:
  43. ---------------------
  44. Формат даты: `yyyy-MM-dd`, формат даты и времени:
  45. `yyyy-MM-dd'T'HH:mm:ss`. Пример:
  46. 2016-09-07T13:10:00 (символ T латинский, обязательный) (секунды
  47. обязательны). Время указано в часовом поясе сервера который
  48. предоставляет контент.
  49. Числа с плавающий точко в качестве разделителя используют точку.
  50. Дробная часть не обязательна и не более 2 знаков.
  51. Все идентификаторы сущностей (id) это строки,
  52. произвольного формата, длинной до 36 символов. Могут быть как искусственными
  53. (sequence) так и реальными значениями (номер билета, номер места и.т.д.)
  54. Форматы данных XML
  55. ------------------
  56. Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и
  57. HTTP-заголовком “Content-Type”, имеющим значение “application/xml; charset=UTF-8”.
  58. Тело XML- ответа должно начинаться с объявления
  59. `<?xml version="1.0" encoding="UTF-8"?>`. Регистр
  60. названий тегов и атрибутов должен совпадать с регистром из примеров.
  61. XML-ответ в обязательном порядке имеет корневой тег, название которого
  62. должно соответствовать формату "&lt;НазваниеМетодаResponse&gt;" (например EchoResponse, SearchTripsResponse)
  63. Если ответ корректный, то данные ответа содержатся во вложенном теге &lt;Body&gt;.
  64. Если ответ не корректный, информация об ошибке должна находиться во
  65. вложенном теге &lt;Error&gt;, который состоит из кода ошибки в теге
  66. &lt;code&gt; и описания ошибки в теге &lt;message&gt;. Код ошибок в приложении.
  67. Описание - это произвольные текст на русском языке,
  68. поясняющий причину ошибки. Некоторые методы допускают пустой ответ.
  69. Пустой ответ содержит только корневой тег.
  70. Пустой ответ:
  71. ```xml
  72. <?xml version="1.0" encoding="UTF-8"?>
  73. <UpdateTicketResponse>
  74. </UpdateTicketResponse>
  75. ```
  76. Пример ответа в случае успешной обработки запроса:
  77. ```xml
  78. <?xml version="1.0" encoding="UTF-8"?>
  79. <EchoResponse>
  80. <Body>
  81. <message>Test</message>
  82. </Body>
  83. </EchoResponse>
  84. ```
  85. Пример ответа в случае обработки запроса с ошибкой:
  86. ```xml
  87. <?xml version="1.0" encoding="UTF-8"?>
  88. <BookResponse>
  89. <Error>
  90. <code>ERROR</code>
  91. <message>Место 5 занято</message>
  92. </Error>
  93. </BookResponse>
  94. ```
  95. Форматы данных JSON
  96. -------------------
  97. Ответы с сервера должны поступать по протоколу HTTP c кодом 200 и
  98. HTTP-заголовком “Content-Type”, имеющим значение “application/json; charset=UTF-8”.
  99. JSON ответ может быть только JSON-объектом. В теле которого допустимо наличие только одного
  100. элемента. В случае успешной обработки запроса ответ должен находиться в елементе __body__.
  101. Если ответ пустой корневой объект должен присутствовать.
  102. В случае если в ответ присутвует элемент __error__ то считается что во время обработки возникла ошибка.
  103. Елемент __error__ состоит из строковых полей __code__ и __message__. Назначени полей аналогично формату XML
  104. Пустой ответ:
  105. ```json
  106. {}
  107. ```
  108. Пример ответа в случае успешной обработки запроса:
  109. ```json
  110. {
  111. "body": {
  112. "message": "Test"
  113. }
  114. }
  115. ```
  116. Пример ответа в случае обработки запроса с ошибкой:
  117. ```json
  118. {
  119. "error": {
  120. "code": "ERROR",
  121. "message": "Место 5 занято"
  122. }
  123. }
  124. ```
  125. Методы протокола
  126. ----------------
  127. ### echo
  128. Используется для проверки доступности сервиса.
  129. Метод принимает в параметре произвольную строку и возвращает её в теле
  130. ответа.
  131. **URL: \[BASE\_URL\]/sales/echo**
  132. Запрос:
  133. ```xml
  134. <?xml version="1.0" encoding="UTF-8"?>
  135. <EchoRequest>
  136. <!-- Сообщение которое будет возвращено в ответ. Обязательно. -->
  137. <message>Test</message>
  138. </EchoRequest>
  139. ```
  140. ```json
  141. {
  142. "message": "Test"
  143. }
  144. ```
  145. Ответ:
  146. ```xml
  147. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  148. <EchoResponse>
  149. <Body>
  150. <!-- Сообщение переданное в запросе -->
  151. <message>Test</message>
  152. </Body>
  153. </EchoResponse>
  154. ```
  155. ```json
  156. {
  157. "body": {
  158. "message": "Test"
  159. }
  160. }
  161. ```
  162. ### getDispatchStations
  163. Метод получения станций отправления. Продажа происходит от станции
  164. отправления до станции назначения, поэтому метод должен вернуть хотя бы
  165. один элемент. Обычно станциями отправления являются автовокзалы или
  166. автоматизированные остановочные пункты с функцией продажи билетов.
  167. **URL: \[BASE\_URL\]/sales/getDispatchStations**
  168. Запрос:
  169. ```xml
  170. <?xml version="1.0" encoding="UTF-8"?>
  171. <GetDispatchStationsRequest>
  172. </GetDispatchStationsRequest>
  173. ```
  174. ```json
  175. {}
  176. ```
  177. Ответ:
  178. ```xml
  179. <?xml version="1.0" encoding="UTF-8"?>
  180. <GetDispatchStationsResponse>
  181. <Body>
  182. <!-- Станция -->
  183. <Station>
  184. <!-- Идентификатор станции. Обязателен. -->
  185. <id>983</id>
  186. <!-- Наименование станции. Обязателен. Используется для отображения в интерфейсе пользователя -->
  187. <name>ВДНХ АС</name>
  188. <!-- Название региона станции. Не обязателен. Используется для отображения в интерфейсе пользователя -->
  189. <region>Москва</region>
  190. <!-- ОКАТО станции. Не обязателен. Используется для поиска одинаковых станций и отображения в интерфейсе пользователя -->
  191. <okato>45000000000</okato>
  192. </Station>
  193. <Station>
  194. <id>853</id>
  195. <name>Варшавская АС</name>
  196. <region>Москва</region>
  197. <okato>45000000000</okato>
  198. </Station>
  199. <Station>
  200. <id>6</id>
  201. <name>Красногвардейская АС</name>
  202. <region>Москва</region>
  203. <okato>45000000000</okato>
  204. </Station>
  205. </Body>
  206. </GetDispatchStationsResponse>
  207. ```
  208. ```json
  209. {
  210. "body": [
  211. {
  212. "id": "983",
  213. "name": "ВДНХ АС",
  214. "region": "Москва",
  215. "okato": "45000000000"
  216. },
  217. {
  218. "id": "853",
  219. "name": "Варшавская АС",
  220. "region": "Москва",
  221. "okato": "45000000000"
  222. },
  223. {
  224. "id": "6",
  225. "name": "Красногвардейская АС",
  226. "region": "Москва",
  227. "okato": "45000000000"
  228. }
  229. ]
  230. }
  231. ```
  232. ### getArrivalStations
  233. Метод получения станций назначения от станции отправления. В параметре
  234. принимает идентификатор станции отправления. Станциями назначения могут
  235. быть любые остановочные пункты до которых есть хотя бы один рейс. Если
  236. станций назначения нет, метод должен вернуть пустой список.
  237. В случае отсутствия станций назначения для указанной станции отправления
  238. возвращать пустой ответ.
  239. **URL: \[BASE\_URL\]/sales/getArrivalStations**
  240. Запрос:
  241. ```xml
  242. <?xml version="1.0" encoding="UTF-8"?>
  243. <GetArrivalStationsRequest>
  244. <!-- Идентификатор станции отправления. Обязательно. -->
  245. <dispatchStationId>983</dispatchStationId>
  246. </GetArrivalStationsRequest>
  247. ```
  248. ```json
  249. {
  250. "dispatchStationId": "983"
  251. }
  252. ```
  253. Ответ:
  254. ```xml
  255. <?xml version="1.0" encoding="UTF-8"?>
  256. {
  257. "body": [
  258. {
  259. "id": "1069",
  260. "name": "Рыбинск",
  261. "region": "Ярославская область",
  262. "okato": "78415000000"
  263. },
  264. {
  265. "id": "1018",
  266. "name": "Сергиев Посад",
  267. "region": "Московская область",
  268. "okato": "46215501000"
  269. },
  270. {
  271. "id": "1084",
  272. "name": "Углич",
  273. "region": "Ярославская область",
  274. "okato": "78420000000"
  275. },
  276. {
  277. "id": "1078",
  278. "name": "Утена",
  279. "region": "Литва"
  280. }
  281. ]
  282. }
  283. ```
  284. ### searchTrips
  285. Метод возвращает список рейсов от станции отправления до станции
  286. назначения на заданную дату. В параметрах передается идентификатор
  287. станции отправления, идентификатор станции назначения и дата.
  288. В случае отсутствия рейсов для указанных параметров возвращать пустой ответ.
  289. Рейсы должны быть отсортированы по дате отправления.
  290. **URL: \[BASE\_URL\]/sales/searchTrips**
  291. Запрос:
  292. ```xml
  293. <?xml version="1.0" encoding="UTF-8"?>
  294. <SearchTripsRequest>
  295. <!-- Идентификатор станции отправления. Обязательно.-->
  296. <dispatchStationId>983</dispatchStationId>
  297. <!-- Идентификатор станции назначения. Обязательно. -->
  298. <arrivalStationId>678</arrivalStationId>
  299. <!-- Дата на которую выполняется поиск рейса. Обязательно. -->
  300. <date>2016-07-12</date>
  301. </SearchTripsRequest>
  302. ```
  303. Ответ:
  304. ```xml
  305. <?xml version="1.0" encoding="UTF-8"?>
  306. <SearchTripsResponse>
  307. <Body>
  308. <!-- Рейс-->
  309. <Trip>
  310. <!-- Идентификатор рейса. Обязательно. -->
  311. <id>570104</id>
  312. <!-- Номер маршрута. Не обязателен. -->
  313. <num>000</num>
  314. <!-- Идентификатор маршрута. Не обязательно -->
  315. <routeId>d1e39ba7-b9d6-48f6-a4ba-03674a381c90</routeId>
  316. <!-- Название маршрута. Обязателен. -->
  317. <name>ВДНХ АС - Пенза</name>
  318. <!-- Дата и время отправления. Обязателен. -->
  319. <dispatchDate>2016-07-13T19:30:00</dispatchDate>
  320. <!-- Дата и время прибытия. Обязателен. -->
  321. <arrivalDate>2016-07-14T05:30:00</arrivalDate>
  322. <!-- ID станции отправления. Обязателен. -->
  323. <dispatchStationId>983</dispatchStationId>
  324. <!-- Станция отправления рейса. Обязателен. -->
  325. <dispatchStationName>ВДНХ АС</dispatchStationName>
  326. <!-- ID станции назначения. Обязателен. -->
  327. <arrivalStationId>744</arrivalStationId>
  328. <!-- Станция назначения рейса. Обязателен. -->
  329. <arrivalStationName>Пенза</arrivalStationName>
  330. <!-- Цена полного проездного билета (включая сборы). Обязателен. -->
  331. <price>1391</price>
  332. <!-- Название перевозчика. Не Обязателен. -->
  333. <carrierName>ИП Ерашова Валентина Анатольевна</carrierName>
  334. <!-- ИНН перевозчика. Обязателен. -->
  335. <carrierInn>ИНН 582700056092</carrierInn>
  336. <!-- Описание автобуса. Обязателен. -->
  337. <busInfo>49 Мест Категория ТС &quot;М3&quot; </busInfo>
  338. <!--
  339. тип рейса. Обязателен. см. ФЗ-220
  340. INTERNATIONAL - Международный
  341. INTERREGIONAL - Межрегиональный.
  342. ADJACENT_INTERREGIONAL - Смежный межрегиональный.
  343. INTERMUNICIPAL - Межмуниципальный.
  344. MUNICIPAL - Муниципальный.
  345. -->
  346. <type>INTERREGIONAL</type>
  347. <!--
  348. Статус рейса. Обязателен.
  349. ON_SALE - В продаже. Можно продавать билеты на этот рейс,
  350. SUSPENDED - Приостановка продажи. Продажа запрещена.
  351. CANCELED - Рейс отменен. Продажа запрещена.
  352. DISPATCHED - Рейс отправлен. Продажа запрещена.
  353. UNKNOWN - Неопределенный статус. Рейс не доступен для продажи.
  354. -->
  355. <status>ON_SALE</status>
  356. <!--
  357. Класс рейса. Не обязателен. По умолчанию - регулярный
  358. REGULAR - Регулярный рейс
  359. CUSTOM - Заказной рейс
  360. -->
  361. <class>REGULAR</class>
  362. <!-- Количество мест в автобусе. Обязателен. -->
  363. <seatCount>49</seatCount>
  364. <!-- Кол-во мест, доступных для продажи. Обязателен.-->
  365. <freeSeatCount>49</freeSeatCount>
  366. </Trip>
  367. <Trip>
  368. <id>570105</id>
  369. <num>000</num>
  370. <routeId>904ede1a-95af-4db3-928f-e9a2c6302278</routeId>
  371. <name>ВДНХ АС - Пенза</name>
  372. <dispatchDate>2016-07-13T21:30:00</dispatchDate>
  373. <arrivalDate>2016-07-14T07:30:00</arrivalDate>
  374. <dispatchStationId>983</dispatchStationId>
  375. <dispatchStationName>ВДНХ АС</dispatchStationName>
  376. <arrivalStationId>744</arrivalStationId>
  377. <arrivalStationName>Пенза</arrivalStationName>
  378. <price>1391</price>
  379. <carrierName>ИП Ерашова Валентина Анатольевна</carrierName>
  380. <carrierInn>ИНН 582700056092</carrierInn>
  381. <busInfo>49 Мест Категория ТС &quot;М3&quot; </busInfo>
  382. <type>INTERREGIONAL</type>
  383. <status>ON_SALE</status>
  384. <seatCount>49</seatCount>
  385. <freeSeatCount>49</freeSeatCount>
  386. </Trip>
  387. </Body>
  388. </SearchTripsResponse>
  389. ```
  390. ### getFreeSeats
  391. Получение списка свободных мест для рейса. В параметре принимает
  392. идентификатор рейса, идентификатор станции отправления и идентификатор
  393. станции назначения.
  394. **URL: \[BASE\_URL\]/sales/getFreeSeats**
  395. Запрос:
  396. ```xml
  397. <?xml version="1.0" encoding="UTF-8"?>
  398. <GetFreeSeatsRequest>
  399. <!-- Идентификатор рейса. Обязательный. -->
  400. <tripId>570101</tripId>
  401. <!-- Идентификатор станции отправления. Обязательный. -->
  402. <dispatchStationId>983</dispatchStationId>
  403. <!-- Идентификатор станции назначения. Обязательный. -->
  404. <arrivalStationId>1080</arrivalStationId>
  405. </GetFreeSeatsRequest>
  406. ```
  407. Ответ:
  408. ```xml
  409. <?xml version="1.0" encoding="UTF-8"?>
  410. <GetFreeSeatsResponse>
  411. <Body>
  412. <!-- Место-->
  413. <Seat>
  414. <!-- Идентификатор места. Обязателен. Может совпадать с названием.-->
  415. <id>17926</id>
  416. <!-- Название места. Обязателен. Отображается в интерфейсе пользователя. -->
  417. <name>Место 1</name>
  418. <!-- Тип места. Не обязателен -->
  419. <type>Сидячее</type>
  420. </Seat>
  421. <Seat>
  422. <id>17927</id>
  423. <name>Место 2</name>
  424. <type>Сидячее</type>
  425. </Seat>
  426. <Seat>
  427. <id>17928</id>
  428. <name>Место 3</name>
  429. <type>Сидячее</type>
  430. </Seat>
  431. </Body>
  432. </GetFreeSeatsResponse>
  433. ```
  434. ### getTicketTypes
  435. Получение списка типов билетов, доступных для продажи. В параметре
  436. принимает идентификатор рейса, идентификатор станции отправления и
  437. идентификатор станции назначения.
  438. **URL: \[BASE\_URL\]/sales/getTicketTypes**
  439. Запрос:
  440. ```xml
  441. <?xml version="1.0" encoding="UTF-8"?>
  442. <GetTicketTypesRequest>
  443. <!-- Идентификатор рейса. Обязательный. -->
  444. <tripId>570101</tripId>
  445. <!-- Идентификатор станции отправления. Обязательный. -->
  446. <dispatchStationId>983</dispatchStationId>
  447. <!-- Идентификатор станции назначения. Обязательный. -->
  448. <arrivalStationId>1080</arrivalStationId>
  449. </GetTicketTypesRequest>
  450. ```
  451. Ответ:
  452. ```xml
  453. <?xml version="1.0" encoding="UTF-8"?>
  454. <GetTicketTypesResponse>
  455. <Body>
  456. <TicketType>
  457. <!-- Идентификатор типа билета. Обязателен. Может совпадать с названием. -->
  458. <id>1#1#0</id>
  459. <!-- Название типа билета. Обязателен. -->
  460. <name>Полный</name>
  461. <!-- Цена для заданного типа билета (со сборами). Обязателен. -->
  462. <price>1391</price>
  463. <!--
  464. Класс билета. Обязателен.
  465. PASSENGER Пассажирский билет, с выделением места
  466. BAGGAGE Багажный билет, без выделения места
  467. -->
  468. <ticketClass>PASSENGER</ticketClass>
  469. </TicketType>
  470. <TicketType>
  471. <id>38#6#0</id>
  472. <name>Детский</name>
  473. <price>696</price>
  474. <ticketClass>PASSENGER</ticketClass>
  475. </TicketType>
  476. <TicketType>
  477. <id>0#0#0</id>
  478. <name>Багажный</name>
  479. <price>40</price>
  480. <ticketClass>BAGGAGE</ticketClass>
  481. </TicketType>
  482. </Body>
  483. </GetTicketTypesResponse>
  484. ```
  485. ### getDocumentTypes
  486. Получение списка типов документов, допустимых для удостоверения личности
  487. при оформлении билетов через интернет. Система должна предоставить хотя
  488. бы один тип документа. Допустимые идентификаторы и названия документов
  489. перечислены в таблице 1 Приказа Минтранса РФ от 19 июля 2012 г. N 243
  490. "Об утверждении Порядка формирования и ведения автоматизированных
  491. централизованных баз персональных данных о пассажирах и персонале
  492. (экипаже) транспортных средств, а также предоставления содержащихся в
  493. них данных".
  494. Текст документа в системе ГАРАНТ: <http://base.garant.ru/70229008/>
  495. **URL: \[BASE\_URL\]/sales/getDocumentTypes**
  496. Запрос:
  497. ```xml
  498. <?xml version="1.0" encoding="UTF-8"?>
  499. <GetDocumentTypesRequest>
  500. <!-- Идентификатор рейса. Обязательный. -->
  501. <tripId>570101</tripId>
  502. <!-- Идентификатор станции отправления. Обязательный. -->
  503. <dispatchStationId>983</dispatchStationId>
  504. <!-- Идентификатор станции назначения. Обязательный. -->
  505. <arrivalStationId>1080</arrivalStationId>
  506. </GetDocumentTypesRequest>
  507. ```
  508. Ответ:
  509. ```xml
  510. <?xml version="1.0" encoding="UTF-8"?>
  511. <GetDocumentTypesResponse>
  512. <Body>
  513. <DocumentType>
  514. <!-- ID типа документа. Обязателен. -->
  515. <id>0</id>
  516. <!-- Название типа документа. Обязателен. -->
  517. <name>Паспорт РФ</name>
  518. </DocumentType>
  519. <DocumentType>
  520. <id>3</id>
  521. <name>Паспорт иностранного гражданина</name>
  522. </DocumentType>
  523. <DocumentType>
  524. <id>4</id>
  525. <name>Свидетельство о рождении</name>
  526. </DocumentType>
  527. /Body>
  528. </GetDocumentTypesResponse>
  529. ```
  530. Таблица 1. Коды документов, удостоверяющих личность, при передаче в АЦБПДП
  531. ---------------------------------------------------------------
  532. -------------------------------------------------------------------------
  533. Код Наименование документа
  534. --- -------------------------------------------------------------------
  535. 00 Паспорт гражданина Российской Федерации
  536. 01 Паспорт моряка
  537. 02 Общегражданский заграничный паспорт гражданина Российской Федерации
  538. 03 Паспорт иностранного гражданина
  539. 04 Свидетельство о рождении
  540. 05 Удостоверение личности военнослужащего
  541. 06 Удостоверение личности лица без гражданства
  542. 07 Временное удостоверение личности, выдаваемое органами внутренних дел
  543. 08 Военный билет военнослужащего срочной службы
  544. 09 Вид на жительство иностранного гражданина или лица без гражданства
  545. 10 Справка об освобождении из мест лишения свободы
  546. 11 Паспорт гражданина СССР
  547. 12 Паспорт дипломатический
  548. 13 Паспорт служебный (кроме паспорта моряка и дипломатического)
  549. 14 Свидетельство о возвращении из стран СНГ
  550. 15 Справка об утере паспорта
  551. --------------------------------------------------------------------------
  552. ### getTripStops
  553. Метод возвращает список остановочных пунктов для рейса. В параметре
  554. принимает идентификатор рейса. Информация имеет справочный характер.
  555. **URL: \[BASE\_URL\]/sales/getTripStops**
  556. Запрос:
  557. ```xml
  558. <?xml version="1.0" encoding="UTF-8"?>
  559. <GetTripStopsRequest>
  560. <!-- Идентификатор рейса. Обязателен. -->
  561. <tripId>569839</tripId>
  562. </GetTripStopsRequest>
  563. ```
  564. Ответ:
  565. ```xml
  566. <?xml version="1.0" encoding="UTF-8"?>
  567. <GetTripStopsResponse>
  568. <Body>
  569. <Stop>
  570. <!-- ID остановки. Совпадает с ID станции. Обязателен. -->
  571. <id>1011</id>
  572. <!-- Название остановки. Совпадает с названием станции. Обязателен. -->
  573. <name>Скопин (трасса)</name>
  574. <!-- Район расположения остановки. Не обязателен. -->
  575. <regionName>Рязанская область</regionName>
  576. <!-- Дата-время прибытия на остановку. Обязателен. -->
  577. <arrivalDate>2016-07-14T16:20:00</arrivalDate>
  578. <!-- Дата-время отправления с остановки. Обязателен. -->
  579. <dispatchDate>2016-07-13T21:00:00</dispatchDate>
  580. <!-- Время стоянки в минутах. Не Обязателен. -->
  581. <stopTime>10</stopTime>
  582. <!-- Расстояние от пункта отправления до остановки в км. Не Обязателен. -->
  583. <distance>260</distance>
  584. <!-- Цена полного билета. Обязателен. -->
  585. <price>1177</price>
  586. </Stop>
  587. <Stop>
  588. <id>1010</id>
  589. <name>Мичуринск (трасса)</name>
  590. <regionName>Тамбовская область</regionName>
  591. <arrivalDate>2016-07-14T16:20:00</arrivalDate>
  592. <dispatchDate>2016-07-13T21:00:00</dispatchDate>
  593. <stopTime>10</stopTime>
  594. <distance>385</distance>
  595. <price>1177</price>
  596. </Stop>
  597. <Stop>
  598. <id>818</id>
  599. <name>Тамбов (трасса)</name>
  600. <regionName>Тамбовская область</regionName>
  601. <arrivalDate>2016-07-14T16:20:00</arrivalDate>
  602. <dispatchDate>2016-07-13T21:00:00</dispatchDate>
  603. <stopTime>10</stopTime>
  604. <distance>455</distance>
  605. <price>1177</price>
  606. </Stop>
  607. </Body>
  608. </GetTripStopsResponse>
  609. ```
  610. ### bookOrder
  611. Бронирование заказа. Бронь сохраняется в течение ограниченного времени,
  612. от 20 до 60 минут. Если в указанный период времени не поступает
  613. подтверждение оплаты через метод confirmOrder(), то бронирование
  614. автоматически отменяется. Метод должен выполнить все возможные проверки
  615. корректности переданных данных. В случае ошибки заказ не должен быть
  616. создан. Допускается бронирование нескольких билетов в рамках одного
  617. заказа. В параметрах запроса передаются идентификатор рейса,
  618. идентификатор станции отправления, идентификатор станции назначения,
  619. информацию о бронируемых билетах, информацию об агенте совершивший эту
  620. операцию. Информации о бронируемых билетах включает в себя идентификатор
  621. типа билета, идентификатор места и информацию о пассажире. Информация об
  622. агенте включает в себя наименование и ИНН агента.
  623. **URL: \[BASE\_URL\]/sales/bookOrder**
  624. Запрос:
  625. ```xml
  626. <?xml version="1.0" encoding="UTF-8"?>
  627. <BookOrderRequest>
  628. <!-- Идентификатор рейса. Обязательный. -->
  629. <tripId>570101</tripId>
  630. <!-- Идентификатор станции отправления. Обязательный. -->
  631. <dispatchStationId>983</dispatchStationId>
  632. <!-- Идентификатор станции назначения. Обязательный. -->
  633. <arrivalStationId>1080</arrivalStationId>
  634. <!-- Информация о бронируемом билете. Для каждой брони отдельный тег Sale -->
  635. <Sale>
  636. <!-- Идентификатор места, полученный из getFreeSeats. Обязателен. -->
  637. <seatId>25862</seatId>
  638. <!-- Идентификатор типа билета, полученный из getDocumentTypes. Обязателен. -->
  639. <ticketTypeId>1#1#0</ticketTypeId>
  640. <!-- Персональные данные пассажира. Один пассажир на один билет -->
  641. <Passenger>
  642. <!-- Имя пассажира. Обязательно -->
  643. <firstName>goxUEpWCud</firstName>
  644. <!-- Фамилия пассажира. Обязательно-->
  645. <lastName>sKZXIloHFn</lastName>
  646. <!-- Отчество пассажира. Обязательно для Международных, Межобластных и Межреспубликанских рейсов-->
  647. <middleName>pCaEgXgfWO</middleName>
  648. <!-- Номер документа удостоверяющего личности. Обязателен.-->
  649. <docNum>jwcmdIrmcc</docNum>
  650. <!-- Серия документа удостоверяющего личности. Не Обязателен.-->
  651. <docSeries>iFAElsnFHn</docSeries>
  652. <!-- Идентификатор типа документа полученный при вызове getDocumentTypes. Обязателен. -->
  653. <docTypeId>1</docTypeId>
  654. <!-- Дата рождения. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
  655. <birthday>1986-01-01</birthday>
  656. <!-- Гражданство виде ISO2. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
  657. <citizenshipISO2>RU</citizenshipISO2>
  658. <!--
  659. Пол. Обязательно для Международных, Межобластных и Межреспубликанских рейсов
  660. MALE - Мужской
  661. FEMALE - Женский
  662. -->
  663. <gender>MALE</gender>
  664. <!-- Телефон пассажира. Не обязателен. -->
  665. <phone>999-888-77-66</phone>
  666. <!--
  667. Дополнительная произвольная информация. Не обязательно.
  668. -->
  669. <info>NjaqSdsD SDdsqlkr JFn</info>
  670. </Passenger>
  671. </Sale>
  672. <!-- Агент выполнивший операцию. Не Обязателен. -->
  673. <Agent>
  674. <!-- Имя агента. Не обязателен.-->
  675. <name>ИП Твои билеты</name>
  676. <!-- ИНН агента. Не обязателен.-->
  677. <inn>2225555777</inn>
  678. </Agent>
  679. </BookOrderRequest>
  680. ```
  681. Ответ:
  682. ```xml
  683. <?xml version="1.0" encoding="UTF-8"?>
  684. <BookOrderResponse>
  685. <Body>
  686. <!-- Идентификатор заказ. Обязателен. -->
  687. <orderId>9828350</orderId>
  688. <!-- Время жизни заказа. В минутах. Не обязателен. По умолчанию значение 30 -->
  689. <lifetime>30</lifetime>
  690. </Body>
  691. </BookOrderResponse>
  692. ```
  693. ### getOrder
  694. Получение информации о заказе. В параметрах принимает идентификатор
  695. заказа, полученный в результате bookOrder. Метод должен вернуть такое же
  696. количество билетов сколько было передано при вызове bookOrder. Метод
  697. должен работать на любом этапе жизни заказа т.е. после создания,
  698. подтверждения, отмены, возврата.
  699. **URL: \[BASE\_URL\]/sales/getOrder**
  700. Запрос:
  701. ```xml
  702. <?xml version="1.0" encoding="UTF-8"?>
  703. <GetOrderRequest>
  704. <!-- Идентификатор заказа, полученный при вызове bookOrder. Обязателен.-->
  705. <orderId>9828350</orderId>
  706. </GetOrderRequest>
  707. ```
  708. Ответ:
  709. ```xml
  710. <?xml version="1.0" encoding="UTF-8"?>
  711. <GetOrderResponse>
  712. <Body>
  713. <!-- Идентификатор заказа. Обязателен. -->
  714. <orderId>9828350</orderId>
  715. <!-- Информация о билетах. Отдельный тег для каждого билета -->
  716. <Ticket>
  717. <!-- Идентификатор билет. Обязателен. -->
  718. <id>12435438</id>
  719. <!-- Номер билета. Обязателен после подтверждения заказа. -->
  720. <number></number>
  721. <!-- Серия билета. Не обязателен. -->
  722. <series></series>
  723. <!-- Дата и время создания билета. Обязателен. -->
  724. <created>2016-07-13T05:48:15</created>
  725. <!-- Дата и время возврата билета. Обязателен после возврата или отмены. -->
  726. <returned></returned>
  727. <!--
  728. Статус билета
  729. RESERVED Забронирован. Данный статус билет получает после бронирования. bookOrder
  730. SOLD Продан. Данный статус билет получает после операции продажи. confirmOrder
  731. CANCELED Отмена билета. Данный статус билет получает после отмены билета. cancelTicket
  732. RETURNED Выполнен возврат билета. Данный статус билет получает после возврата билета. returnTicket
  733. -->
  734. <status>RESERVED</status>
  735. <!--
  736. Класс билета
  737. PASSENGER Пассажирский билет, с выделением места
  738. BAGGAGE Багажный билет, без выделения места
  739. -->
  740. <ticketClass>PASSENGER</ticketClass>
  741. <!-- Идентификато типа билета. Обязателен. -->
  742. <typeId>1#1#0</typeId>
  743. <!-- Номер маршрута. Не обязателен. -->
  744. <routeNum>000</routeNum>
  745. <!-- Название маршрута. Обязателен. -->
  746. <routeName>ВДНХ АС - Рыбинск</routeName>
  747. <!-- Информация об автобусе. Обязателен -->
  748. <busInfo>19 Мест Категория ТС &quot;М3&quot; </busInfo>
  749. <!-- Название перевозчика. Не обязателен -->
  750. <carrierName>ООО &quot;ВВМЛ&quot;</carrierName>
  751. <!-- ИНН перевозчика. Обязателен. -->
  752. <carrierInn>ИНН 7610074937</carrierInn>
  753. <!-- Платформа отправления. Не обязателен. -->
  754. <platform>Перрон 11</platform>
  755. <!-- Дата и время отправления рейса. Обязателен. -->
  756. <dispatchDate>2016-07-13T12:20:00</dispatchDate>
  757. <!-- Станция посадки. Обязателен.-->
  758. <dispatchStation>ВДНХ АС</dispatchStation>
  759. <!-- Адрес станции посадки. Не обязателен -->
  760. <dispatchAddress>пл.Шарля де Голля напротив Космонавтов2А,</dispatchAddress>
  761. <!-- Дата и время прибытия. Обязателен. -->
  762. <arrivalDate>2016-07-13T16:20:00</arrivalDate>
  763. <!-- Станция назначения. Обязателен. -->
  764. <arrivalStation>Углич</arrivalStation>
  765. <!-- Название места. Обязателен. -->
  766. <seatName>Место 1</seatName>
  767. <!-- Информация о пассажире. -->
  768. <Passenger>
  769. <lastName>Ckayuukvgn</lastName>
  770. <firstName>Bgkzxffotu</firstName>
  771. <middleName>Isdikvryin</middleName>
  772. <docNum>PUPrvbqlgU</docNum>
  773. <docSeries>fRHEoBHVbG</docSeries>
  774. <docTypeId>1</docTypeId>
  775. <birthday>1985-01-01</birthday>
  776. <citizenshipISO2>RU</citizenshipISO2>
  777. <gender>MALE</gender>
  778. <phone>999-888-77-66</phone>
  779. <info>FewwLks Mq</info>
  780. </Passenger>
  781. <!-- Тариф (руб). Обязателен после подтверждения. -->
  782. <fare>0</fare>
  783. <!-- Cборы (руб). Обязателен после подтверждения. Если нет то 0. -->
  784. <fees>0</fees>
  785. <!-- Удержано Остальные сборы (руб). Обязателен в случает возврата. -->
  786. <repayment>0</repaymentFare>
  787. <!-- Информация о страховании. Обязательно. Необходим при печати билета. -->
  788. <insuranceInfo>СТРАХОВЩИК: ПАО &quot;Росстрах&quot;; 119991; г. Москва; ул. Большая Ордынка; д. 40; стр.</insuranceInfo>
  789. </Ticket>
  790. </Body>
  791. </GetOrderResponse>
  792. ```
  793. ### confirmOrder
  794. Подтверждение оплаты заказа. Данный метод должен вызываться только после
  795. того как заказ действительно был оплачен покупателем. Метод не должен
  796. делать проверок корректности заказа, все проверки должны выполняться в
  797. bookOrder или updateTicket. Вызов этого метода означает подтверждение
  798. правильного приема данных и получение денег от покупателя. В параметрах
  799. принимает идентификатор заказа, полученный в результате bookOrder и
  800. информацию об агенте который совершил операцию
  801. **URL: \[BASE\_URL\]/sales/confirmOrder**
  802. Запрос:
  803. ```xml
  804. <?xml version="1.0" encoding="UTF-8"?>
  805. <ConfirmOrderRequest>
  806. <!-- ID заказа. Обязателен. -->
  807. <orderId>9828585</orderId>
  808. <!-- Агент выполнивший операцию. Не Обязателен. -->
  809. <Agent>
  810. <!-- Имя агента. Не обязателен.-->
  811. <name>ИП Твои билеты</name>
  812. <!-- ИНН агента. Не обязателен.-->
  813. <inn>2225555777</inn>
  814. </Agent>
  815. </ConfirmOrderRequest>
  816. ```
  817. Ответ:
  818. Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега ConfirmOrderResponse
  819. ### cancelTicket
  820. Отмена одного или нескольких билетов. Техническая операция, выполняет полный возврат билета без
  821. удержаний. Необходима при нештатных ситуациях: в случае сбоев ККМ или
  822. обнаружения ошибки выбора рейса, персональных данных. В параметрах
  823. принимает идентификаторы билета и информацию об агенте который совершил
  824. операцию. Все билеты должны быть обработы в рамках одной транзакции.
  825. т.е. если было передано 2 билета, первый был обработан а при обработке второго возникла ошибка
  826. то обработка первого должна быть отменена.
  827. Можно выполнять после создания заказа и в течении 5-30 минут
  828. после подтверждения заказа.
  829. **URL: \[BASE\_URL\]/sales/cancelTicket**
  830. Запрос:
  831. ```xml
  832. <?xml version="1.0" encoding="UTF-8"?>
  833. <CancelTicketRequest>
  834. <!-- ID билетов для возврата. произвольное количество тегов. -->
  835. <ticketId>34</ticketId>
  836. <ticketId>36</ticketId>
  837. <!-- Агент выполнивший операцию. Не Обязателен. -->
  838. <Agent>
  839. <!-- Имя агента. Не обязателен.-->
  840. <name>ИП Твои билеты</name>
  841. <!-- ИНН агента. Не обязателен.-->
  842. <inn>2225555777</inn>
  843. </Agent>
  844. </CancelTicketRequest>
  845. ```
  846. Ответ:
  847. Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега CancelTicketResponse
  848. ### returnTicket
  849. Возврат одного или нескольких билетов. При возврате возможны удержания. В параметрах принимает
  850. идентификатор билета и информацию об агенте который совершил операцию.
  851. Все билеты должны быть обработы в рамках одной транзакции.
  852. т.е. если было передано 2 билета, первый был обработан а при обработке второго возникла ошибка
  853. то обработка первого должна быть отменена.
  854. Билет можно вернуть только после подтверждения confirmOrder.
  855. **URL: \[BASE\_URL\]/sales/returnTicket**
  856. Запрос:
  857. ```xml
  858. <?xml version="1.0" encoding="UTF-8"?>
  859. <ReturnTicketRequest>
  860. <!-- ID билетов для возврата. произвольное количество тегов. -->
  861. <ticketId>35</ticketId>
  862. <ticketId>36</ticketId>
  863. <!-- Агент выполнивший операцию. Не Обязателен. -->
  864. <Agent>
  865. <!-- Имя агента. Не обязателен.-->
  866. <name>ИП Твои билеты</name>
  867. <!-- ИНН агента. Не обязателен.-->
  868. <inn>2225555777</inn>
  869. </Agent>
  870. </ReturnTicketRequest>
  871. ```
  872. Ответ:
  873. Ответ аналогичен ответу на запрос [getOrder](#getorder) c именем корневого тега ReturnTicketResponse
  874. ### updateTicket
  875. Изменение персональных данных пассажира в забронированном или проданном
  876. билете. В параметрах принимает идентификатор билета, информацию о
  877. пассажире и информацию об агенте который совершил операцию.
  878. **URL: \[BASE\_URL\]/sales/updateTicket**
  879. Запрос:
  880. ```xml
  881. <?xml version="1.0" encoding="UTF-8"?>
  882. <UpdateTicketRequest>
  883. <!-- Идентификатор билета. Обязательный -->
  884. <ticketId>12435438</ticketId>
  885. <Passenger>
  886. <!-- Имя пассажира. Обязательно -->
  887. <firstName>goxUEpWCud</firstName>
  888. <!-- Фамилия пассажира. Обязательно-->
  889. <lastName>sKZXIloHFn</lastName>
  890. <!-- Отчество пассажира. Обязательно для Международных, Межобластных и Межреспубликанских рейсов-->
  891. <middleName>pCaEgXgfWO</middleName>
  892. <!-- Номер документа удостоверяющего личности. Обязателен.-->
  893. <docNum>jwcmdIrmcc</docNum>
  894. <!-- Серия документа удостоверяющего личности. Не Обязателен.-->
  895. <docSeries>iFAElsnFHn</docSeries>
  896. <!-- Идентификатор типа документа полученный при вызове getDocumentTypes. Обязателен. -->
  897. <docTypeId>1</docTypeId>
  898. <!-- Дата рождения. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
  899. <birthday>1986-01-01</birthday>
  900. <!-- Гражданство виде ISO2. Обязательно для Международных, Межобластных и Межреспубликанских рейсов -->
  901. <citizenshipISO2>RU</citizenshipISO2>
  902. <!--
  903. Пол. Обязательно для Международных, Межобластных и Межреспубликанских рейсов
  904. MALE - Мужской
  905. FEMALE - Женский
  906. -->
  907. <gender>FEMALE</gender>
  908. <!--
  909. Дополнительная произвольная информация. Не обязательно.
  910. -->
  911. <info></info>
  912. </Passenger>
  913. <!-- Агент выполнивший операцию. Не Обязателен. -->
  914. <Agent>
  915. <!-- Имя агента. Не обязателен.-->
  916. <name>ИП Твои билеты</name>
  917. <!-- ИНН агента. Не обязателен.-->
  918. <inn>2225555777</inn>
  919. </Agent>
  920. </UpdateTicketRequest>
  921. ```
  922. Ответ:
  923. ```xml
  924. <?xml version="1.0" encoding="UTF-8"?>
  925. <UpdateTicketResponse>
  926. </UpdateTicketResponse>
  927. ```