Установка на фронтэнд

Откройте терминал и используйте следующую команду для установки плагина на ваш проект.

      
npm install @jx_code/rsimzo-client

Использование

new RsimzoClient(options)
Инитиализация класса
      
import { RsimzoClient, RsOptions } from "@jx_code/rsimzo-client"; const options: RsOptions = { paths: { fetchToken: '/path/to/generate/token' } } const rsimzo = new RsimzoClient(options)

Возможны параметры options: RsOptions

baseURL
  • Type: string
  • Default: window.location.origin
Базовый URL, используемый для всех HTTP-запросов в приложении.
locale
  • Type: string
  • Default: en
Указывает поддерживаемые языки приложения. Возможные значения: en, ru, uz, uz-kr.
headers
  • Type: Record<string, string>
  • Default: {}
Метаданные для запросов, содержащие информацию о запросе или передаваемых данных. Например, может использоваться для передачи параметра Authorization.
paths.generateTokenrequired
  • Type: string
URL для API, который используется для генерации токена.
instantCertsFetch
  • Type: boolean
Если установлено в true, метод rsimzo.getCertificates() вернет список всех сертификатов без необходимости подтверждения. По умолчанию - false
storage
  • Type: boolean | StorageOptions
  • Default: true
Этот параметр отвечает за сохранение результатов метода rsimzo.getCertificates() в localStorage. Значение может быть boolean или объект StorageOptions.
storage.prefix
  • Type: string
  • Default: rs.
Префикс, используемый для сохранения данных в localStorage

Поля

rsimzo.certificates
  • Type: RsCertificate[]
Список сертификатов, сохраненных в localStorage. Если данных в localStorage нет, возвращается пустой массив []
      
const list = rsimzo.certificates console.log(list)
      
interface RsCertificate { pin?: string tin?: string address: string country: string expireAt: number expireFrom: number fullName: string serial: string uid: string isLegalEntity: boolean orgName?: string isExpired: boolean }

Методы

rsimzo.getCertificates(options?: {locale: string, instantCertsFetch: boolean})
  • Type: RsCertificate[] | null
Открывает окно rs-imzo.uz для синхронизации ключей. После вызова метода, откроется окно, где пользователь должен выбрать ЭЦП ключи для загрузки на ваш сайт. Данные ключа можно сохранить в localStorage. Если instantCertsFetch установлено в true, окно закроется автоматически после сохранения всех сертификатов клиента.
      
const { data: list } = await rsimzo.getCertificates() if (list) { console.log(list) }

Если клиент закроет окно, результатом метода будет null

Возможны параметры options

locale
  • Type: string
Указывает поддерживаемые языки приложения. Возможные значения: en, ru, uz, uz-kr.
instantCertsFetch
  • Type: boolean
Если установлено в true, метод rsimzo.getCertificates() вернет список всех сертификатов без необходимости подтверждения.

rsimzo.sign(serial: string, content: string, options?: RsSignOptions)
  • Type: string | null
Открывает окно rs-imzo.uz для подписи документа. После вызова метода, откроется окно, где пользователь должен ввести пароль. Результат метода pkcs7
      
const content = 'string you want to sign' const serial = 'get serial number from rsimzo.getCertificates() method' const { data: pkcs7 } = await rsimzo.sign(serial, btoa(content)) console.log(pkcs7)

Подписываемый контент обязательно должен быть в формате base64

Возможны параметры options: RsSignOptions

locale
  • Type: string
Указывает поддерживаемые языки приложения. Возможные значения: en, ru, uz, uz-kr.
attached
  • Type: boolean
  • Default: true
Привязывает подписываемый контент к окончательному pkcs7.

rsimzo.auth(options?: RsAuthOptions)
  • Type: string | null
Открывает окно rs-imzo.uz для подписи документа. После вызова метода, откроется окно, где пользователь должен выбрать ключ и ввести пароль. Результат метода pkcs7
      
const { data: pkcs7 } = await rsimzo.auth() console.log(pkcs7)

Возможны параметры options: RsAuthOptions

locale
  • Type: string
Указывает поддерживаемые языки приложения. Возможные значения: en, ru, uz, uz-kr.

Обработка ошибки

При каждом запросе вы должны проверять на наличии ошибок

      
const { error } = await rsimzo.sign(serial, btoa(content)) if(error && error.errorCode === 13) { console.log('Invalid password') }

Параметры error

errorCode
  • Type: number
Уникальный код ошибки
  • 13 - Неверный пароль
  • 10001 - Окно закрыто
  • 10002 - Ошибка при HTTP запросе
  • 10003 - Действие завершилось без результата
  • 10004 - Сертификат не найден
  • 10005 - Недействительный токен
  • 10006 - Получены неверные параметры
errorMessage
  • Type: string
Текст ошибки. Текст всегда на английском языке. Если необходимо сделать перевод, то используйте errorCode
rawError
  • Type: any
Необработанная ошибка