Введение
@jx_code/rsimzo-client
Лёгкий JavaScript-клиент для взаимодействия с провайдером RsImzo, позволяющий аутентифицировать пользователей, получать сертификаты и подписывать документы с помощью ЭЦП.
@jx_code/rsimzo-client
Лёгкий JavaScript-клиент для работы с RsImzo через безопасные popup и iframe — позволяет выполнять аутентификацию, получать сертификаты и подписывать контент при помощи ЭЦП.
📦 Установка
# через npm
npm install @jx_code/rsimzo-client
# или через pnpm
pnpm add @jx_code/rsimzo-client
# или через yarn
yarn add @jx_code/rsimzo-client
🚀 Начало работы
1. Импорт и инициализация
import { RsimzoClient } from "@jx_code/rsimzo-client";
const rsimzo = new RsimzoClient({
publicKey: "YOUR_PUBLIC_KEY",
locale: "ru", // необязательно, по умолчанию 'uz'
});
⚠️
publicKeyобязателен при создании экземпляра. Если не указан — будет выброшена ошибка.
🧩 API Справочник
new RsimzoClient(options)
Параметры:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
publicKey | string | ✅ Да | — | Публичный ключ, выданный RsImzo |
locale | 'uz' | 'ru' | 'en' | ❌ Нет | 'uz' | Язык интерфейса всплывающего окна |
Пример:
const rsimzo = new RsimzoClient({ publicKey: "ABC123", locale: "ru" });
getCertificates(options?)
Получает список доступных ЭЦП-сертификатов через невидимый iframe.
Параметры:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
locale | 'uz' | 'ru' | 'en' | ❌ Нет | текущая локаль экземпляра | Язык интерфейса провайдера |
Возвращает:
Promise<RsPostMessageResult<{ serialNumber: string; owner: string }[]>>;
Пример:
const result = await rsimzo.getCertificates();
console.log(result);
sign(serialNumber, content, options?)
Открывает окно для подписи контента с помощью выбранного сертификата.
Параметры:
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
serialNumber | string | ✅ Да | — | Серийный номер сертификата |
content | string | ✅ Да | — | Подписываемое содержимое (например, base64-строка) |
options.locale | 'uz' | 'ru' | 'en' | ❌ Нет | локаль экземпляра | Язык окна подписи |
options.attached | boolean | ❌ Нет | true | Указывает, будет ли подпись прикреплённой |
Возвращает:
Promise<RsPostMessageResult<string>>;
Пример:
const signed = await rsimzo.sign("123456789", "Hello world!");
console.log(signed);
auth(options?)
Выполняет процесс аутентификации через RsImzo, возвращая токен личности или данные пользователя.
Параметры:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
locale | 'uz' | 'ru' | 'en' | ❌ Нет | локаль экземпляра | Язык окна аутентификации |
Возвращает:
Promise<RsPostMessageResult<string>>;
Пример:
const authResult = await rsimzo.auth();
console.log(authResult);
⚙️ Обработка ошибок
Каждый метод возвращает стандартную структуру:
type RsPostMessageResult<T> = {
data: T | null;
error?: {
errorCode: number;
errorMessage: string;
};
};
| Код | Сообщение | Описание |
|---|---|---|
13 | Неверный пароль | Введён неверный пароль при подписи |
10001 | Окно закрыто | Пользователь закрыл всплывающее окно |
10002 | Ошибка токена | Не удалось получить или проверить токен |
10003 | Нет результата | Действие завершено без результата |
10004 | Сертификат не найден | Не найден соответствующий ЭЦП-сертификат |
10005 | Недействительный токен | Ошибка проверки токена |
10006 | Неверные параметры | Некорректные или отсутствующие входные данные |
10008 | Таймаут | Операция превысила 60 секунд |
10009 | Popup заблокирован | Браузер заблокировал всплывающее окно |
🌐 Пример интеграции
import { RsimzoClient } from "@jx_code/rsimzo-client";
const rsimzo = new RsimzoClient({ publicKey: "ABC123", locale: "ru" });
async function run() {
const auth = await rsimzo.auth();
if (auth.error) return console.error(auth.error);
const certs = await rsimzo.getCertificates();
if (certs.error) return console.error(certs.error);
const signed = await rsimzo.sign(certs.data[0].serialNumber, "text-to-sign");
console.log("Подписанные данные:", signed);
}
run();