Skip to content

Atorich/ru-post-soap-client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Russian Post SOAP client v0.2

Gitter

Russian Post SOAP API client class

License: LGPL v3

Требования

  • python == 2.7.* || 3.x
  • suds >= 0.4

Config

settings.py содержит все необходимые настройки для работы класса. Обязательные: RPOST_LOGIN и RPOST_PASSWORD. Также эти параметры можно передавать напрямую в конструктор класса:

RuPostClient(login='', password='', url='', tracks_per_ticket=100)

API

Создание тикета

Объект клиента принимает в метод make_ticket список трекинг-номеров, разбивает по группам согласно настроек и создаёт на WSDL сервисе Почты России (далее сервис) тикеты на каждую группу.

Возвращает ответ в формате:

{
    ticket_number: [track_list_part],
}

Где:

  • ticket_number - номера тикетов (по-одному на ключ словаря) возвращаемые сервисом;
  • track_list_part - часть трекинг номеров (согласно настройкам) из переданного в метод списка, относящаяся к данному тикету.

Ошибки

Если запрос на создание тикета возвращает ошибку - выбрасывается исключение MakeTicketException.

Если запрос на создание тикета не возвращает ни номер тикета ни ошибку - выбрасывается исключение UnrecognizedAnswer (потомок MakeTicketException).

Запрос данных по тикету ***********************

Объект клиента принимает в метод get_tracks список номеров тикетов (для их получения воспользуйтесь методом make_ticket), запрашивает по ним состояние у сервиса и возвращает ответ в формате:

{
    ticket_number: {
        'error': (error_number, error_text),
        track_number: {
            'error': (error_number, error_text),
            'data': [
                {
                    'oper_type': OperTypeID,
                    'oper_ctg': OperCtgID,
                    'operation': OperName,
                    'date': DateOper,
                    'zipcode': IndexOper,
                    'attribute': text_version_OperCtgId
                },
            ]
        },
    }
}

где:

  • ticket_number - номера тикетов (по-одному на ключ словаря), возвращаемые make_ticket;
  • 'error' (в словаре ticket_number) - указывается, если произошла ошибка в запросе тикета (тикет не готов, не существует и т.д.), содержит кортеж с номером и текстовым значением ошибки;
  • track_number - указывается, если не произошло ошибки. Содержит номера треков (по-одному на ключ словаря), запрошенные в этом тикете;
  • 'error' (в словаре track_number) - указывается, если произошла ошибка в обработке состояния конкретного отправления с этим номером трека (не найден такой номер), содержит кортеж с номером и текстовым значением ошибки;
  • 'data' - указывается, если не произошло ошибки. Содержит список словарей с данными по поперациям над отправлением;
  • 'oper_type' - цифровой код операции;
  • 'oper_ctg' - цифровой код аттрибута операции;
  • 'operation' - текстовое наименование операции;
  • 'date'- дата и время операции как объект datetime;
  • 'zipcode' - почтовый индекс отделения где происходила операция;
  • 'attribute' - текстовое наименование аттрибута операции (какие удалось расшифровать).

Тестирование

  1. Заполните авторизационные данные в файле settings.py.
  2. Добавьте пару трекинг-номеров в список TRACKS файла test_data.py.
  3. Первый прогон тестов выполнит 2 из 3х тестов и, в случае удачи, выведет в консоль номер тикета, который нужно будет внести в список TICKETS файла test_data.py (список TRACKS теперь можно очистить, чтоб не создавать лишних тикетов)
  4. Через 15 минут (регламент сервиса - запросы результатов по тикету можно делать не чаще раза в 15 минут и не ранее 15 минут после создания самого тикета) можно повторять тестирование уже с полученным тикетом.

Варианты ошибок

  • 2 - Формат данных запроса не соответствует установленному в регламенте обмена
  • 3 - Неуспешная авторизация ФК для передачи запроса компоненту получения запросов и выдачи ответов
  • 6 - Ответ для ФК ещё не готов
  • 12 - Сообщение не найдено
  • 16 - Внутренняя ошибка работы сервиса обмена данными
  • 17 - Время хранения ответа истекло, ответ был удален с сервера
  • 18 - Превышено максимально допустимое количество отправлений в запросе

В ролях

  • Atorich - Полный список типов операций и установка пакета.

About

Russian Post SOAP API client class

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%