Download the PHP package alexeydg/rzd-api without Composer
On this page you can find all versions of the php package alexeydg/rzd-api. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package rzd-api
Api сайта rzd.ru
Описание интерфейса пользователя
Что умеет Api
- Получает маршруты в одну точку
- Получает маршруты туда-обратно
- Получает список вагонов выбранного поезда
- Получает список станций в пути следования выбранного маршрута
- Получает список кодов станций (Поиск по первым символам города)
- Авторизация на сайте pass.rzd.ru
- Получет данные профиля пользователя
Пример запроса
Процесс приобретения билетов на сайте pass.rzd.ru разделен на несколько этапов
Открытая часть
Выбор маршрута - выбор поезда - выбор вагона
Закрытая часть
- Информация о пассажирах - Проверка заказа - Оплата заказа - Подтверждение заказа
Этапы
-
В первом этапе пользователь указывают станцию отправления и станцию прибытия поезда, а также дату желаемой поездки. В этот момент на сайте pass.rzd.ru происходит отправка ajax-запроса, с которым мы и будем работать, запрос возвращает сформированный JSON пакет с ответом, в нем и находится требуемая нами информация или сообщение об ошибке
-
Во втором этапе мы можем выбрать необходимый нам поезд и получить полную информацию о свободных местах
- В третьем этапе необходимо выбрать места и заполнить данные необходимые на оплаты и регистрации на сайте
Допустимые запросы через Curl (POST и GET) Для обхода защиты сайта необходимо предварительно отправить запрос для получения cookies и номера идентификатора RID (REQUEST_ID) Вторым запросом подставляем уникальный идентификатор RID и отправляем cookie
Ответы с сайта
Статус ответа содержится в переменной result RID - означает что сайт выдал нам уникальный идентификатор и куки OK - получен полный ответ с запрошенными нами данными Во всех остальных ответах Error или FAIL означает ошибку получения данных
Получение cookie
Каждый запрос к сайту должен содержать куки примерного вида:
- lang=ru - текущий язык
- JSESSIONID=0000w74wcMhGMfeoE6ibmsh4i4W:17obq9kpt - уникальный ключ
- AuthFlag=false - авторизован ли пользователь на сайте
Пример запроса
Все запросы идут на адрес http://pass.rzd.ru/timetable/public/ru?layer_id=подкатегория&ключ=значение
Где подкатегория это
- 5827 - выбор маршрута (Получения списка поездов)
- 5764 - детальная информация выбранному по поезду, список вагонов
- 5804 - просмотр маршрута со всеми остановками
Первый запрос
Второй и следующие запросы
https://pass.rzd.ru/timetable/public/ru?layer_id=5827&rid={{rid}}
Второй запрос выполняется с уже полученным нами уникальным идентификатором который хранит в себе данные предыдущего запроса и куками Поэтому в целях оптимизации можно не отправлять некоторые параметры указанные нами в первом запросе
Реализованные запросы
Необходимо реализовать отдачу данных через ajax-запросы, в текущих примерах это не реализовано
trainRoutes - получает маршруты поездов, количество свободных мест, цены итд в нем в один конец
Принимает параметры обязательные параметр при первом запросе
- layer_id - подкатегория (5827)
необязательные параметр при повторном запросе
- dir - 0 только в один конец, 1 - туда-обратно
- tfl - тип поезда (1- все, 2 - дальнего следования, 3- электрички)
- checkSeats - 1, 0 - поиск в поездах только если есть свободные места
- code0 - код станции отправления
- code1 - код станции прибытия
- dt0 - дата отправления
Возвращает массив поездов и свободных мест
- from - название станции отправления (САНКТ-ПЕТЕРБУРГ)
- where - название станции прибытия (КИРОВ ПАСС)
- date - дата отправления (27.03.2016)
- fromCode - код станции отправления (2004000)
- whereCode - код станции прибытия (2060600)
Массив поездов содержит
- date0 - дата отправления
- date0 - дата прибытия
- time0 - время отправления
- time1 - время прибытия
- route0 - код станции отправления С-ПЕТ-ЛАД
- route1 - код станции прибития ТЮМЕНЬ
- number - номер поезда
- timeInWay - время в пути
- brand - Название поезда (Демидовский экспресс)
-
carrier - тип поезда ФПК (Фирменный)
- cars - массив свободных мест купе, плацкарт и люкс
- cars.freeSeats - кол. свободных мест
- cars.itype
- cars.servCls
- cars.tariff - стоимость билета
- cars.pt - баллы
- cars.typeLoc - полное наименование (Плацкартный, СВ, Купе, Люкс)
-
cars.type - сокращенное наименование (Купе, плац, люкс)
- time0 - время отправления
- tnum0 - номер поезда
trainRoutesReturn - получает маршруты поездов, количество свободных мест, цены итд, туда-обратно
Принимает параметры обязательные параметр при первом запросе
- layer_id - подкатегория (5827)
необязательные параметр при повторном запросе
- dir - 0 только в один конец, 1 - туда-обратно
- tfl - тип поезда (1- все, 2 - дальнего следования, 3- электрички)
- checkSeats поиск в поездах без свободных мест
- code0 - код станции отправления
- code1 - код станции прибытия
- dt0 - дата отправления
- dt1 - дата возвращения
Ответы точно такие же как и в методе trainRoutes, только содержит 2 массива, в первом - туда, во-втором - обартно
trainCarriages - получает список вагонов, свободные места, схема вагона, стоимость билетов, тип и класс обслуживания
необязательные параметр при повтрном запросе
- dir - 0 только в один конец, 1 - туда-обратно
- code0 - код станции отправления
- code1 - код станции прибытия
- dt0 - дата отправления (28.03.2016)
- time0 - время отправления (15:30)
- tnum0 - номер вагона (072Е)
Возвращает следующий массив вагонов
- Стандартный ответ из запросов выше
- cnumber - номер вагона
- type - тип вагона
- typeLoc - полное наименование (Плацкартный, СВ, Купе, Люкс)
- clsType - 2Л, 2Э
- tariff - стоимость билета
-
tariffServ - сервис сбор
- seats - массив мест
- seats.type - сокр. наименование мест (up)
- seats.free - количество мест
-
seats.label - полное наименование мест (Верхние)
- schemes схемы вагонов
- html - json массив схемы вагонов занято, свободно, нижнее, верхнее, туалет итд (Парсить нужно отдельным методов, если будет время сделаю)
-
image - ссылка на картинку
- insuranceCompany - массив с компаниями страхователями и правилами страхования
- shortName - наименование организации
- offerUrl - ссылка на файл с правилами, обычно PDF файл
trainStationList - получение списка всех станций в текущем маршруте движения
Пример запроса http://pass.rzd.ru/timetable/public/ru?layer_id=5804&train_num=072%D0%95&date=13.03.2016 Обращение через незащищенный протокол http://
Формат получения данных XML
Принимает параметры обязательные параметр при первом запросе
- layer_id - подкатегория (5804)
необязательные параметр при повтрном запросе
- train_num - номер поезда 072Е
- date - дата отправления 13.03.2016
Возвращает следующий массив станций
- Station - название станции
- Code - код станции
- ArvTime - время прибытия
- WaitingTime - время стоянки
- DepTime - время отправления
- Distance - пройденная дистанция
stationCode - Получение списка кодов станций
Принимает параметры
- stationNamePart - часть названия станции, минимум 2 символа
- lang - язык, по умолчанию 'ru',
- compactMode - по умолчанию 'y'
Возвращает массив найденных данных
- station - имя станции
- code - код станции
К примеру при значении stationNamePart = 'ЧЕБ' будут возващены все станции начинающиеся на ЧЕБ (11 станций)
License
The class is open-sourced software licensed under the MIT license
All versions of rzd-api with dependencies
ext-json Version *
ext-curl Version *
ext-mbstring Version *
php-curl-class/php-curl-class Version ^8.1