Git Product home page Git Product logo

extern-java-sdk's Introduction

SDK для работы с API Контур.Экстерна

Maven Central oss.sonatype

License

Предназначен для интеграции внешних систем с API Контур.Экстерна. Библиотека предоставляет классы и методы для работы с сервисами СКБ Контур.

Подключение SDK к проекту

Указать библиотеку как зависимость из maven.central:

maven
<dependency>
  <groupId>ru.kontur.extern-api</groupId>
  <artifactId>extern-api-java-sdk</artifactId>
  <version>${version}</version>
</dependency>
gradle
dependencies {
  compile group: 'ru.kontur.extern-api', name: 'extern-api-java-sdk', version: '${version}'
}
maven

Для использования SNAPSHOT версий sdk нужно разрешить использование sonatype snapshot repository. Для этого добавьте в ~/.m2/settings.xml

<profiles>
  <profile>
     <id>allow-snapshots</id>
        <activation><activeByDefault>true</activeByDefault></activation>
     <repositories>
       <repository>
         <id>snapshots-repo</id>
         <url>https://oss.sonatype.org/content/repositories/snapshots</url>
         <releases><enabled>false</enabled></releases>
         <snapshots><enabled>true</enabled></snapshots>
       </repository>
     </repositories>
   </profile>
</profiles>
build.gradle
repositories {
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
}

Snapshot версии полезно использовать для активной разработки, оперативного исправления багов и получения самых свежих обновлений.

Версионирование

Информацию самых новых версиях sdk можно найти здесь

Maven Central oss.sonatype

указывать без префикса v

Название тега соответствует существующей версии sdk в maven.central или версии snapshot'а в репозитории oss.sonatype.org

Компиляция из исходного кода:

  1. Склонировать репозиторий SDK:

    git clone git@github.com:skbkontur/extern-java-sdk.git
  2. Собрать и установить проект в локальный maven репозиторий (пропуская шаг интеграционных тестов: о них будет ниже):

    mvn clean install -DskipITs
  3. Добавить в pom.xml проекта артефакт extern-api-java-sdk:

    <dependency>
        <groupId>ru.kontur.extern-api</groupId>
        <artifactId>extern-api-java-sdk</artifactId>
        <version>${extern-api-java-sdk.version}</version>
    </dependency>

Конфигурирование

Для того чтобы начать работу с SDK, необходимо создать и сконфигурировать ExternEngine. Для этого стоит воспользоваться ExternEngineBuilder. Например, для базового создания движка с аутентификацией по сертификату код будет выглядеть так:

ExternEngine ee = ExternEngineBuilder
        .createExternEngine("http://extern-api.testkontur.ru")
        .apiKey("ваш api-key")
        .buildAuthentication("http://api.testkontur.ru", authBuilder -> authBuilder
                .certificateAuthentication(/* place certificate content here */)
        )
        .doNotUseCryptoProvider()
        .doNotSetupAccount()
        .build()

Больше информации можно найти в документации к коду или на wiki проекта.

Аутентификация

  1. Api-Key – идентификатор, который выдается сервису, от которого отправляются запросы к API СКБ Контура.

  2. AuthenticationProvider – провайдер токена аутентификации пользователя (см. auth.sid). Чтобы создать провайдеры для стандартных методов аутентификации можно воспользоваться AuthenticationProviderBuilder.

Account:

  • AccountId — предоставляет идентификатор аккаунта, который передается при отправки данных на сервис. Данный идентификатор связан с лицевым счетом в системе СКБ Контур. UUID. (см. ExternEngine#setAccountId)

CryptoProvider

  • Реализация для работы с MSCapi - класс CryptoProviderMSCap; Предназначена для вычисления электронной подписи и расшифрования зашифрованных документов, с использованием алгоритмов ГОСТ. Для расшифрования и вычисления электронной подписи требуется доступный ключевой носитель, содержащий сертификат открытого ключа.
  • Реализация для RSA-криптографии CryptoProviderRSA. Предназначена для подписания идентификационных данных для доверительной аутентификации. Конструктор принимает на вход пароль для ключевого хранилища JAVA (JKS) и пароль для секретного ключа. Если в качестве паролей передать значение null, то это будет означать его отсутствие.

Архитектура

В SDK реализован класс ExternEngine, обеспечивающий доступ к операциям Контур Экстерн. Все операции разделены на следующие группы:

  • сервис для работы с учетными записями конечных пользователей (AccountService);
  • сервис для получения информации о сертификатах конечных пользователей (CertificateService);
  • сервис для работы со списком организаций (OrganizationService);
  • сервис для работы с черновиками (DraftService);
  • сервис для работы с документооборотами (DocflowService);
  • сервис для работы с лентой событий (EventService).

Для получения доступа к сервису необходимо у объекта ExternEngine вызвать соответствующий метод типа get<имя сервиса>. Например для того чтобы получить доступ к операциям сервиса для работы с учетными записями необходимо использовать метод getAccountService(), который вернет экземпляр класса, реализующий интерфейс AccountService.

QueryContext

Warning! Всё что здесь написано имеет место, но не является рекомендуемым сценарием использования SDK так как является местом потенциальных ошибок отсутствия параметров в контексте.

Актуальная информация
  • Методы использующие QueryContext в качестве входного параметра помечены @Deprecated и будут удалены в следующих версиях

  • QueryContext возвращаемый из метода предназначен только для

    • получения результата метода в случае успеха .get()
    • получения/пробрасывания сервисной ошибки ApiException: .isFail()/.getServiceError()/.getOrThrow()
Deprecated

Класс QueryContext содержит коллекцию типа Map, для сохранения входных и выходных параметров. Для каждого используемого параметра существует свой сеттер, например, для установки передаваемого контента есть метод setContent.

Как уже упоминалось выше, метод isFail возвращает признак операции, завершившейся с ошибкой. В этом случае метод getServiceError вернет ошибку. Если операции выполнилась успешно, то метод isSuccess вернет истину, а метод get результат операции, который указан в качестве параметра класса QueryContext. Более подробное описание смотри в javadoc.

extern-java-sdk's People

Contributors

alexandrovda avatar alexvolkow avatar andection avatar arxa1l avatar asbest62 avatar brittlefoot avatar dependabot[bot] avatar dmitrybabenkov avatar evgeniaratner avatar igorlukanin avatar kosolapiy avatar leequidman avatar maa avatar nikita314 avatar raurck avatar ruslangatin avatar svetlananesterova avatar veronikavasilyeva avatar vova2999 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extern-java-sdk's Issues

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.