Giter VIP home page Giter VIP logo

ru-post-soap-client's Introduction

Russian Post SOAP client v0.2

Gitter

Russian Post SOAP API client class

License: LGPL v3

Требования

  • python == 2.7.*
  • 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 - Полный список типов операций и установка пакета.

ru-post-soap-client's People

Contributors

atorich avatar gitter-badger avatar luntegg avatar qnub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ru-post-soap-client's Issues

Официальная поддержка модулей Почты России

Добрый день!

Мы невероятно нуждаемся в создании SDK и разработке официальных модулей для платформы otpravka точка pochta точка ru ради встраивания во все основные CMS / CRM / ERP. На текущий момент у нас нет возможности организации какого-то партнёрства и единственный доступный вариант это трудоустройство в Почту России. Подробные описания вакансий доступны на hr точка pochta точка tech слэш teams слэш maksim-zhukov

Пишите на maxim точка zhukov собака russianpost точка ru, очень надеюсь на обратную связь.

Хорошего дня!

Ошибка в opertypeids?

RPOST_OPERTYPEIDS = { # также в текстовом виде в operation._OperName
1: u'Приём',
2: u'Вручение',
2: u'Возврат',
8: u'Обработка',
9: u'Импорт',
11: u'Передано таможне',
12: u'Неудачная попытка вручения',
14: u'Таможенное оформление завершено',
}

2 вручение и 2 же возврат? Откуда Вы, кстати, коды эти брали? В регламенте о них ни слова :(

Incorrect schema if no error

Schema differs from README

{u'*****': 
    [
        {u'****': {
            'data': [
                {'oper_ctg': 1,
                 'oper_type': 1,
                 'date': datetime.datetime(2014, 3, 17, 0, 0),
                 'attribute': u'Вручение адресату',
                 'operation': u'Приём', 'zipcode': u'******'},

                {'oper_ctg': 4,
                 'oper_type': 8,
                 'date': datetime.datetime(2014, 3, 18, 4, 4),
                 'attribute': u'Покинуло сортировочный центр',
                 'operation': u'Обработка',
                 'zipcode': u'******'}, 

                {'oper_ctg': 4,
                 'oper_type': 8,
                 'date': datetime.datetime(2014, 3, 21, 9, 11),
                 'attribute': u'Покинуло сортировочный центр',
                 'operation': u'Обработка',
                 'zipcode': u'*****'},

                 {'oper_ctg': 4,
                 'oper_type': 8,
                 'date': datetime.datetime(2014, 4, 6, 0, 0),
                 'attribute': u'Покинуло сортировочный центр',
                 'operation': u'Обработка',
                 'zipcode': u'*****'}
                ]
            }
        }
    ]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.