ufs_sdk

UFS Python SDK


Keywords
gateway, python, python3, rails, railway, sdk, ufs
License
MIT
Install
pip install ufs_sdk==1.3.1

Documentation

Ufs SDK CircleCI

Данное SDK позволяет получить доступ к методам Ufs и исправляет недостатки их системы.

Установка

pip3 install ufs_sdk

Подключение

Для подключения необходимо иметь логин, пароль и терминал.

from ufs_sdk import API

api = API('username', 'password', 'terminal')

Далее для работы понадобятся enum структуры и обёртка для PassDoc(для метода BuyTickets)

from ufs_sdk.wrapper.types import (...)
from ufs_sdk.wrapper import PassDoc

Методы

TimeTable

Запрос:

  • from - Наименование или код станции отправления (7 символов)
  • to - Наименование или код станции прибытия (7 символов)
  • day - День отправления от 1 до 31
  • month - Месяц отправления от 1 до 12
  • time_sw - Влияет на применение ограничивающих параметров Time_from и Time_to
  • time_from - Левая граница временного диапазона (отправления или прибытия)
  • time_to - Правая граница временного диапазона (отправления или прибытия)
  • suburban - Признак получения расписания пригородных поездов

Пример запроса:

time_table = api.time_table('МОСКВА', 'САНКТ-ПЕТЕРБУРГ', 24, 12, TimeSw.NO_SW)

Ответ:

  • is_clarify - Признак уточнения станции. Если True, то переменная data - объект типа Clarify иначе TimeTable
  • train_point - Признак начальной или конечной станции следования
  • data - объект типа Clarify или TimeTable

StationRoute

Запрос:

  • from - Наименование или код станции отправления (7 символов)
  • day - День отправления от 1 до 31
  • month - Месяц отправления от 1 до 12
  • use_static_schedule - Признак обращения в статическую базу полугодового расписания. Если тег принимает значение «0», то информация от АСУ «Экспресс-3».
  • suburban - Признак получения расписания пригородных поездов

Пример запроса:

station_route = api.station_route(4043, 5, 8, True, True)

Ответ:

  • additional_info - УФС слишком крутые, им не надо описание данного поля. Нам, видимо, тоже...
  • route_params - Параметры маршрута

TrainList

Запрос:

  • from - Наименование или код станции отправления (7 символов)
  • to - Наименование или код станции прибытия (7 символов)
  • day - День отправления от 1 до 31
  • month - Месяц отправления от 1 до 12
  • advert_domain - Доменное имя адверта
  • time_sw - Влияет на применение ограничивающих параметров Time_from и Time_to
  • lang - Язык
  • time_from - Левая граница временного диапазона (отправления или прибытия)
  • time_to - Правая граница временного диапазона (отправления или прибытия)
  • train_with_seat - Признак отображения поездов без свободных мест. Если параметр не передан или передано значение Train_with_seat=1, то в выдачи вернутся только поезда со свободными местами.
  • join_train_complex - Признак отображения маршрутов с пересадками. Если параметр не передан или передано значение false, то в выдачи вернутся только поезда без пересадок
  • grouping_type - Признак группировки поездов. Если значение не передано, то группировка поездов осуществляется по типу вагона
  • join_trains - Признак склейки поездов. Если значение не передано, то в выдаче список поездов возвращается со склейкой
  • search_option - Вариант поиска

Пример запроса:

train_list = api.train_list('МОСКВА', 'АГАПОВКА', 24, 12)

Ответ:

  • is_clarify - Признак уточнения станции. Если True, то переменная data - объект типа Clarify иначе TrainList + balance и balance_limit
  • train_point - Признак начальной или конечной станции следования
  • data - объект типа Clarify или TrainList
  • balance - Информация о балансе
  • balance_limit - Актуальный кредит Агента в ЖД шлюзе.

CarListEx

Запрос:

  • from - Наименование или код станции отправления (7 символов)
  • to - Наименование или код станции прибытия (7 символов)
  • day - День отправления от 1 до 31
  • month - Месяц отправления от 1 до 12
  • train - Номер поезда
  • time - Время отправления поезда
  • lang - Язык
  • type_car - Тип вагона
  • advert_domain - Доменное имя адверта
  • grouping_type - Признак группировки поездов. Если значение не передано, то группировка поездов осуществляется по типу вагона

Пример запроса:

station_route = api.car_list_ex(4043, 5, 8, True, True)

Ответ:

BuyTicket

Запрос:

  • from - Наименование или код станции отправления (7 символов)
  • to - Наименование или код станции прибытия (7 символов)
  • day - День отправления от 1 до 31
  • month - Месяц отправления от 1 до 12
  • train - Номер поезда (от 3 до 5 цифр и одна-две буквы)
  • type_car - Тип вагона
  • pass_doc - Документ пассажира, по которому оформляется билет
  • in_one_kupe - Признак поиска мест только в одном купе. Значения «2» и «3» имеют смысл только в случае плацкартного вагона – в остальных случаях их указание некорректно.
  • remote_check_in - Признак установки электронной регистрации
  • pay_type - Тип оплаты электронного билета
  • n_car - Номер вагона (две-три цифры) Обязателен в случае покупки билет в QM/DM вагоны
  • service_class - Класс обслуживания вагона
  • sex - Тип купе (мужское/женское/смешанное)
  • diapason - Требуемый диапазон мест в вагоне
  • n_up - Требуемое количество верхних мест
  • n_down - Требуемое количество нижних мест
  • bedding - Признак того, включать ли в стоимость постельное белье (только для плацкартных вагонов), отказ от постельного белья доступен только для ограниченного количества направлений
  • stan - Идентификатор заказа в веб-системе партнера. Бывает полезен для обеспечения взаимно-однозначного соответствия заказов во взаимодействующих системах
  • advert_domain - Доменное имя адверта
  • phone - Необходимо для выполнения клиентом последующих операций с заказом посредством SMS-сообщений.
  • lang - Язык
  • id_cust - Id клиента
  • storey
  • time - Время отправления поезда
  • comment - Комментарии к заказу (длина не более 128 символов). Если передается больше 128 символов, то остальные символы отрезаются и не сохраняются. После символов «! # &» комментарий отрезается и не сохраняется.
  • placedemands - Требования к местам
  • international_service_class - Информация о вагоне. Записывается в виде «X/Y», где X- класс обслуживания вагона, У – количество мест в купе Тег может быть заполнен для DirectionGroup = 1 и DirectionGroup =2 Тег является обязательным: 1) Если код тарифа Tariff (Таблица 94)для пассажира соответствует тарифам Senior или Junior 2) Для оформления пассажира в internationalServiceClass=1/1, если internationalServiceClass=1/1 не передан, то идет оформление билета по internationalServiceClass=1/2
  • full_kupe - Возможность выкупа купе целиком

Пример запроса:

pass_doc = PassDoc('ЗП', 'ЗЗ934647165', '01051956', '1', 'KEN', first_name='Вася', last_name='Пупкин')
buy_tickets = api.buy_ticket(2000000, 1000001, 2, 3, '032A', 'М', pass_doc, InOneKupe.NOT_SIDE,
                             RemoteCheckIn.TRY_AUTO_ER, PayType.CASH)

Ответ:

ConfirmTicket

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • confirm - Признак подтверждения / отмены резервирования заказа
  • site_fee - Комиссия с клиента за оформленный заказ
  • lang - Язык

Пример запроса:

confirm_ticket = api.confirm_ticket(48715626, Confirm.CONFIRM, 0)

Ответ:

  • status - Статус операции
  • transaction_id - Номер транзакции в системе «УФС»
  • confirm_time_limit - Дата и время, до которого можно подтвердить заказ.(DateTime)
  • electronic_registration - Признак установки электронной регистрации
  • order_number - Номер заказа в АСУ «Экспресс-3»
  • electronic_registration_expire - Дата и время, до которого можно пройти электронную регистрацию и вернуть билет с ЭР в системе «УФС».(DateTime)
  • blank - Информация о бланке заказа
  • is_test - Рекомендуется сверять значение этого признака со статусом терминала, использованного в запросе (значения не должны противоречить друг другу).
  • reservation - Отложенная оплата.

UpdateOrderInfo

Запрос:

  • id_trans - Номер транзакции в системе «УФС»

Пример запроса:

update_order_info = api.update_order_info(48715626)

Ответ:

  • status - Текущий статус операции
  • blank - Информация о билете заказа
  • change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП(DateTime)
  • order - Информация о заказе

UpdateOrderInfo

Запрос:

  • id_trans - Номер транзакции в системе «УФС»

Пример запроса:

update_order_info = api.update_order_info(48715626)

Ответ:

  • status - Текущий статус операции
  • blank - Информация о билете заказа
  • change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП(DateTime)
  • order - Информация о заказе

ElectronicRegistration

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • reg - Признак запрашиваемого действия:
  • id_blank - Идентификаторы электронных билетов в системе «УФС», на которые необходимо установить/отменить электронную регистрацию (указываются через запятую)

Пример запроса:

electronic_registration = api.electronic_registration(48715620, Registration.CONFIRM)

Ответ:

  • status - Текущий статус операции
  • blank - Информация о билете заказа

GetTicketBlank

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • format - Формат вывода

Пример запроса:

get_ticket_blank = api.get_ticket_blank(1, TicketFormat.HTML)

Ответ:

У объект ответа есть поле content, которое хранит либо html код, либо pdf файл, а так же метод save_blank, который позволяет сохранить pdf/html файл по указанному пути

AvailableFood

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • advert_domain - Доменное имя адверта
  • lang - Язык

Пример запроса:

available_food = api.available_food(48715620, '')

Ответ:

  • change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП.(DateTime)
  • food - Список доступных РП

ChangeFood

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • blanks_id - Идентификатор бланка в системе «УФС»
  • food_allowance_code - Код РП
  • advert_domain - Доменное имя адверта
  • lang - Язык

Пример запроса:

change_food = api.change_food(48715620, 1, '', '')

Ответ:

  • number - Порядковый номер документа
  • train_number - Номер поезда
  • departure_date - Дата отправления поезда
  • departure_number - од станции отправления
  • arrival_number - Код станции прибытия
  • car_number - Номер вагона
  • service_class - Класс обслуживания
  • place_number - Номера мест
  • passengers_amount - Количество пассажиров
  • food_code - Код РП
  • food_name - Название РП
  • food_description - Описание РП

RefundAmount

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • id_blank - Идентификаторы билетов в системе «УФС», для которых необходимо произвести возврат (указываются через запятую)
  • doc - Номер документа, удостоверяющего личность
  • lang - Язык

Пример запроса:

refund_amount = api.refund_amount(48715620, 1, 0)

Ответ:

  • status - Статус операции
  • fee - Сумма сервисного сбора за возврат
  • tax_percent - Величина комиссионного сбора УФС в %, В случае, если комиссия является фиксированной величиной, то передается в данном параметре «0»
  • amount - Общая сумма к возврату
  • blanks - Информация о билете заказа

Refund

Запрос:

  • id_trans - Номер транзакции в системе «УФС»
  • id_blank - Идентификаторы билетов в системе «УФС», для которых необходимо произвести возврат (указываются через запятую)
  • doc - Номер документа, удостоверяющего личность
  • stan - Уникальный идентификатор операции (транзакции), необходимый, в частности, для получения информации о транзакции в случае потери ответа (таймаут, разрыв связи и т.п.)
  • lang - Язык

Пример запроса:

refund = api.refund(48715620, 1, 0)

Ответ:

  • status - Статус операции: «0» – успешная
  • refund_id - Номер транзакции возврата
  • refund_date - Время осуществления возврата
  • fee - Сумма сервисного сбора за возврат
  • tax_percent - Величина комиссионного сбора УФС в %, В случае, если комиссия является фиксированной величиной, то передается в данном параметре «0»
  • amount - Общая сумма к возврату
  • blanks - Информация о билете заказа

GetCatalog

Запрос:

  • code - Код справочника
  • all_languages - Признак ответа на всех языках.
  • lang - Язык
  • is_description - Признак выдачи описания справочника

Пример запроса:

get_catalog = api.get_catalog(ReferenceCode.LOYALTY_CARDS, 1)

Ответ:

  • loyalty_cards - Справочник Классов обслуживания
  • co_services - Справочник карт лояльности

Contact us.

If you have any issues or questions regarding the API or the SDK it self, you are welcome to create an issue, or You can write an Email to artyom.slobodyan@gmail.com or roquie0@gmail.com

License.

SDK is released under the MIT License.