Домашняя
Описание#
Remote — метод интеграции с сервисом Облачного ЭЦП посредством использования frontend-клиента Biometric.
Данный метод предполагает создание сессии и дальнейшее перенаправление конечного пользователя на клиент для завершения процесса подписания документов.
Этапы:#
1. Получение API KEY#
Для начала работы с сервисом необходимо получить API KEY, который выдается менеджером компании.
2. Создание Сессии#
Для взаимодействия с сервисом необходимо создать сессию.
Это делается путем выполнения POST-запроса, передавая в заголовке API KEY, а также ИИН и номер телефона клиента
в теле запроса.
При необходимости, возможно скрытие кнопки скачивания архива с копиями документов.
Это возможно через передачу поля show_download_button со значением true внутри поля metadata.
По умолчанию, значение всегда является true (т.е. показывать кнопку скачивания).
Время жизни сессии составляет 30 минут. Сессию нельзя перепроходить. При такой необходимости нужно создать новую сессию и пройти процесс подписания документов заново.
URL для запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/create/ -
Prod:
https://api.b-key.kz/api/v1/session/create/
| Формат запроса | Метод запроса |
|---|---|
| JSON | POST |
API KEY передается в заголовке запроса:
При подписании поддерживаются файлы форматов .xml и .pdf. Тип файла указывается при создании сессии.
Параметры тела запроса:
| Наименование поля | Тип | Обязательно | Описание |
|---|---|---|---|
| iin | String | Да | ИИН клиента |
| phone | String | Да | Телефон клиента компании, формат 77********* |
| document_type | String | Нет | Тип подписываемого документа: .pdf или .xml. По умолчанию - .pdf |
| metadata | Hashtable | Нет | Метаданные, которые можно установить при создании сесссии, например, show_download_button (см. выше) |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/create/"
headers = {
"Content-Type": "application/json",
"x-api-key": "API_KEY"
}
data = {
"iin": "<subjects_iin>",
"phone": "7*********",
"document_type": "pdf",
"metadata": {
"show_download_button": False
}
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://dev.b-key.kz/api/v1/session/create/";
const headers = {
"Content-Type": "application/json",
"x-api-key": "API_KEY"
};
const data = {
iin: "<subjects_iin>",
phone: "7*********",
document_type: "pdf",
metadata: {
"show_download_button": true
}
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => console.log("Session created:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/create/";
const headers: Record<string, string> = {
"Content-Type": "application/json",
"x-api-key": "API_KEY"
};
const data: Record<string, string> = {
iin: "<subjects_iin>",
phone: "7*********",
document_type: "pdf",
metadata: {
show_download_button: true
}
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("Session created:", result))
.catch(error => console.error("Error:", error));
В качестве ответа придет JSON со следующими полями:
- session_id - одноразовый идентификатор сессии для прохождения flow.
- created_at - время создания сессии.
- check_id - идентификатор для последующей проверки подлинности документа.
Пример ответа:
{
"session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"created_at": "2024-01-01T00:00",
"check_id": "43f384e2-770f-4b6c-99c0-7f280befaf01"
}
3. Загрузка файлов для подписи#
URL для запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/documents/upload/ -
Prod:
https://api.b-key.kz/api/v1/session/documents/upload/
| Формат запроса | Метод запроса |
|---|---|
| form-data | POST |
API KEY передается в заголовке запроса.
Файлы форматов .xml или .pdf могут быть загружены, в зависимости от типа, выбранного при создании сессии.
Параметры тела запроса:
| Наименование поля | Тип | Обязательно | Описание |
|---|---|---|---|
| session_id | String | Да | ID сессии |
| name | String | Да | Отображаемое название файла |
| file | file | Да | Файл в формате .pdf (макс. размер для dev - 30КБ) |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/documents/upload/"
headers = {
"x-api-key": "API_KEY"
}
files = {
"session_id": ("<session_id>"),
"name": ("example_file.pdf"),
"file": open("path/to/example_file.pdf", "rb")
}
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200:
print("File uploaded successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
const url = "https://dev.b-key.kz/api/v1/session/documents/upload/";
const headers = {
"x-api-key": "API_KEY"
};
const formData = new FormData();
formData.append("session_id", "<session_id>");
formData.append("name", "example_file.pdf");
formData.append("file", document.querySelector('input[type="file"]').files[0]);
fetch(url, {
method: "POST",
headers: headers,
body: formData
})
.then(response => response.json())
.then(result => console.log("File uploaded successfully:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/documents/upload/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY"
};
const formData: FormData = new FormData();
formData.append("session_id", "<session_id>");
formData.append("name", "example_file.pdf");
// Assume a file input in the DOM or file blob
const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement;
if (fileInput.files && fileInput.files[0]) {
formData.append("file", fileInput.files[0]);
}
fetch(url, {
method: "POST",
headers: headers,
body: formData
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("File uploaded successfully:", result))
.catch(error => console.error("Error:", error));
В качестве ответа придет JSON со следующими полями:
- id - одноразовый идентификатор сессии для прохождения flow.
- name - название файла, которое вы указали при создании сессии.
- sign - подпись в формате CMS, можно узнать больше в FAQ, на данном этапе, поле будет пустым.
- created_at - время создания сессии.
- updated_at - время последнего обновления данных сессии.
Пример ответа:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"sign": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
Загрузка файлов для подписи в формате base64#
URL для запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/documents/upload/base64/ -
Prod:
https://api.b-key.kz/api/v1/session/documents/upload/base64/
| Формат запроса | Метод запроса |
|---|---|
| JSON | POST |
API KEY передается в заголовке запроса.
Файлы форматов .xml или .pdf могут быть загружены, в зависимости от типа, выбранного при создании сессии.
Параметры тела запроса:
| Наименование поля | Тип | Обязательно | Описание |
|---|---|---|---|
| session_id | String | Да | ID сессии |
| name | String | Да | Отображаемое название файла |
| base64_file | String | Да | Файл в формате base64 |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
curl --request POST \
--url https://dev.b-key.kz/api/v1/session/documents/upload/base64/ \
--header 'x-api-key: API_KEY' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
-d '{
"session_id": "<session_id>",
"name": "example_file.pdf",
"base64_file": "<base64_string>"
}'
import requests
headers = {
'x-api-key': 'API_KEY',
'accept': 'application/json',
'Content-Type': 'application/json',
}
json_data = {
'session_id': '<session_id>',
'name': 'example_file.pdf',
'base64_file': '<base64_string>',
}
response = requests.post('https://dev.b-key.kz/api/v1/session/documents/upload/base64/', headers=headers, json=json_data)
const url = "https://dev.b-key.kz/api/v1/session/documents/upload/base64/";
const headers = {
"x-api-key": "API_KEY",
"accept": "application/json",
"Content-Type": "application/json"
};
fetch('https://dev.b-key.kz/api/v1/session/documents/upload/base64/', {
method: 'POST',
headers: headers,
body: JSON.stringify({
'session_id': '<session_id>',
'name': 'example_file.pdf',
'base64_file': '<base64_string>'
})
})
.then(response => response.json())
.then(result => console.log("File uploaded successfully:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/documents/upload/base64/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY",
"accept": "application/json",
"Content-Type": "application/json",
};
const jsonData = {
session_id: "<session_id>",
name: "example_file.pdf",
base64_file: "<base64_string>",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(jsonData),
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("File uploaded successfully:", result))
.catch(error => console.error("Error:", error));
В качестве ответа придет JSON со следующими полями:
- id - одноразовый идентификатор сессии для прохождения flow.
- name - название файла, которое вы указали при создании сессии.
- sign - подпись в формате CMS, можно узнать больше в FAQ, на данном этапе, поле будет пустым.
- created_at - время создания сессии.
- updated_at - время последнего обновления данных сессии.
Пример ответа:
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"sign": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
4. Перенаправление конечного пользователя#
После получения session_id необходимо перенаправить пользователя на frontend-клиент для
завершения процесса подписания документов.
Формат URL для двух сред:
-
Dev:
https://dev.b-key.kz/sign?session=session_id&redirect_url=redirect_url -
Prod:
https://remote.b-key.kz/sign?session=session_id&redirect_url=redirect_url
Параметры:
- session_id - ID сессии.
- redirect_url - URL для перенаправления после завершения процесса (пример -
redirect_url=https://google.com?test=test). - language - стартовый язык интерфейса (
kz,en,ru).
Пример ссылок для двух сред:
-
Dev:
https://dev.b-key.kz/sign?session=session_id&redirect_url=redirect_url&language=kz&theme=0 -
Prod:
https://remote.b-key.kz/sign?session=session_id&redirect_url=redirect_url&language=kz&theme=0
Далее пользователь перейдет на вкладку с биометрической верификацией, созданием сертификата и подписью документов.
При успешном прохождении результирующий url будет иметь параметры status со значением равным true и reason со значением None.
status - параметр для отображения успешности подписания, reason - параметр для отображения возможной ошибки.
Примечание: при наличии webhook у организации информация о завершенном статусе сессии будет отправлена на webhook url.
Секретный ключ для webhook создается после обновления информации об организации в личном кабинете.
Данная логика позволяет клиенту отслеживать всю информацию, связанную с проходимой сессией.
5. Получение результата#
Для получения результата сессии необходимо выполнить GET-запрос с передачей session_id в параметрах запроса.
URL запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/result/ -
Prod:
https://api.b-key.kz/api/v1/session/result/
| Формат запроса | Метод запроса |
|---|---|
| JSON | GET |
API KEY передается в заголовке запроса.
Параметры запроса:
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
| session_id | String | Да | Идентификатор сессии УЦ |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/result/"
headers = {
"x-api-key": "API_KEY"
}
params = {
"session_id": "<session_id>"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
print("Session result:", response.json())
else:
print("Error:", response.status_code, response.text)
const url = "https://dev.b-key.kz/api/v1/session/result/";
const headers = {
"x-api-key": "API_KEY"
};
const params = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => response.json())
.then(result => console.log("Session result:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/result/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY"
};
const params: URLSearchParams = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("Session result:", result))
.catch(error => console.error("Error:", error));
Пример:
https://dev.b-key.kz/api/v1/session/result/?session_id=session_id
Пример ответа:
{
"session_id": "Id сессии",
"docs": [
{
"id": "Id документа",
"name": "Отображаемое название файла",
"sign": "Подпись документа в формате CMS"
},
"..."
]
}
6. Скачивание архива с копиями документов#
Сервис УЦ предоставляет возможность для скачивания загруженных для подписи копий документов в архиве. Архив будет содержать копию каждого загруженного документа с QR-кодом и информацией о клиенте на самой последней странице.
QR-код перенаправляет клиента на страницу проверки подлинности документа через параметр check_id.
Один check_id соответствует одной сессии.
Проверка подлинности документов происходит посредством сравнения хэш-сумм загруженного на сервер документа и документа, который отправил пользователь.
Каждый скачанный файл внутри архива имеет внутри себя метаданные с тэгом DocumentId, который соответствует
Id загруженного и подписанного документа на сервере.
Для скачивания архива со копиями документов существует два способа:
- Скачивание результата через frontend-клиент
Скачивание происходит через нажатие на ссылку скачать подписанные документы в zip файле .

- Скачивание через отправку запроса на сервис
Для скачивания архива с копиями документов через запрос необходимо выполнить GET-запрос с передачей session_id в параметрах запроса.
Также существует возможность скачивания списка документов с QR-кодами в конце через добавление флага in_base64=true в параметрах запроса.
URL запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/result/download -
Prod:
https://api.b-key.kz/api/v1/session/result/download
| Формат запроса | Метод запроса |
|---|---|
| JSON | GET |
API KEY передается в заголовке запроса.
Параметры запроса:
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
| session_id | String | Да | Идентификатор сессии УЦ |
| in_base64 | Boolean | Нет | Отправка данных в формате base64 |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/result/download/"
headers = {
"x-api-key": "API_KEY"
}
params = {
"session_id": "<session_id>"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
with open("documents.zip", "wb") as file:
file.write(response.content)
print("Archive downloaded successfully.")
else:
print("Error:", response.status_code, response.text)
const url = "https://dev.b-key.kz/api/v1/session/result/download/";
const headers = {
"x-api-key": "API_KEY"
};
const params = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => response.blob())
.then(blob => {
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "documents.zip";
link.click();
})
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/result/download/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY"
};
const params: URLSearchParams = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => response.blob())
.then(blob => {
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "documents.zip";
link.click();
})
.catch(error => console.error("Error:", error));
Пример:
https://dev.b-key.kz/api/v1/session/result/?session_id=session_id
В ответе на запрос придет файл в binary-формате.
Примеры запроса для формата base64:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/result/download/"
headers = {
"x-api-key": "API_KEY"
}
params = {
"session_id": "<session_id>",
"in_base64": True,
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
print("Session result:", response.json())
else:
print("Error:", response.status_code, response.text)
const url = "https://dev.b-key.kz/api/v1/session/result/download/";
const headers = {
"x-api-key": "API_KEY"
};
const params = new URLSearchParams({
session_id: "<session_id>",
in_base64: true,
});
ffetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => response.json())
.then(result => console.log("Session result:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/result/download/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY"
};
const params: URLSearchParams = new URLSearchParams({
session_id: "<session_id>",
in_base64: true,
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("Session result:", result))
.catch(error => console.error("Error:", error));
Пример:
https://dev.b-key.kz/api/v1/session/result/?session_id=session_id&in_base64=true
Пример ответа:
Проверка статуса сессии#
При необходимости имеется возможность для проверки статуса подписания сессии.
У сессии имеется 4 статуса:
STARTED- ИнициализированаPROCESS- В прогрессеFINISHED- Успешно завершенаCANCELED- Провалена/Отменена
Для получения статуса сессии необходимо выполнить GET-запрос с передачей session_id в параметрах запроса.
URL запроса:
-
Dev:
https://dev.b-key.kz/api/v1/session/status/ -
Prod:
https://api.b-key.kz/api/v1/session/status/
| Формат запроса | Метод запроса |
|---|---|
| JSON | GET |
API KEY передается в заголовке запроса.
Параметры запроса:
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
| session_id | String | Да | Идентификатор сессии УЦ |
Приведенные ниже примеры содержат тестовые данные. В реальных запросах значения полей будут соответствовать информации конкретного субъекта.
В случае использования production-среды нужно использовать субдомен api.b-key.kz
Примеры запроса:
import requests
import json
url = "https://dev.b-key.kz/api/v1/session/status/"
headers = {
"x-api-key": "API_KEY"
}
params = {
"session_id": "<session_id>"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
print("Session status:", response.json())
else:
print("Error:", response.status_code, response.text)
const url = "https://dev.b-key.kz/api/v1/session/status/";
const headers = {
"x-api-key": "API_KEY"
};
const params = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => response.json())
.then(result => console.log("Session status:", result))
.catch(error => console.error("Error:", error));
const url: string = "https://dev.b-key.kz/api/v1/session/status/";
const headers: Record<string, string> = {
"x-api-key": "API_KEY"
};
const params: URLSearchParams = new URLSearchParams({
session_id: "<session_id>"
});
fetch(`${url}?${params.toString()}`, {
method: "GET",
headers: headers
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(result => console.log("Session status:", result))
.catch(error => console.error("Error:", error));
Пример:
https://dev.b-key.kz/api/v1/session/status/?session_id=session_id
Возможные значения поля failure_reason в ответе:
| Тип | Детали | Описание |
|---|---|---|
| EXPIRED | Session has expired | Время жизни сессии истекло |
| LIVENESS | Liveness or F2F failed | Провал по причине непрохождения живости |
| FACE2FACE | Liveness or F2F failed | Провал по причине непрохождения сличения |
| EDOCUMENT | Could not send request to edocument service | Провал по причине непрохождения цифрового документа |
| OTHER | Other | Провал по другим причинам |
Пример ответа:
Подписание документа несколькими клиентами#
Функционал сервиса предусматривает возможность подписания документов несколькими пользователями.
Для реализации данного процесса после каждого подписания необходимо извлечь CMS-подпись в формате Base64 из поля «sign», преобразовать ее в PDF и повторить шаги 2–5.
При скачивании архива с копиями документов в конце каждого файла будут отображаться сведения о подписантах, включая их ФИО, даты подписей, а также QR-код, ведущий на страницу проверки документа.
Примечание: Для проверки документа при переходе на соответствующую страницу требуется загрузить исходный файл, который был подписан первым пользователем.
Действия после завершения сессии#
По завершению сессии происходит перенаправление и возвращаются такие параметры, как status и reason.
В случае если сессия завершилась успешно, возвращается:
При условии провала сессии, возвращаетсяstatus = False, а также параметр reason, значение которого может быть следующим.
| Значение | Описание |
|---|---|
| refresh | Сессия не была найдена, пожалуйста, не обновляйте страницу с течении всего процесса |
| f2f | Ошибка при прохождении F2F |
| lv | Ошибка при прохождении Liveness |
| closed | Вы закрыли окно во время прохождения проверки на живость |
| lv-unavailable | Сервис Liveness недоступен в настоящее время |
| password | Вы превысили допустимое количество попыток по вводу пароля |
| otp | Вы превысили допустимое количество попыток по вводу смс кода |
| request | Ошибка при отправке запроса на сервис E-Document |
| reissue | Ошибка при перевыпуске сертификата |
| certificate | Ошибка при инициализации создании сертификата |
| password-otp | Вы превысили допустимое количество попыток по вводу смс кода для создания пароля |
| accept-certificate | Ошибка выпуска сертификата", |
| sign-doc | Ошибка при подписании документа |
| video | Ошибка загрузки видео |
Возможные ошибки#
В случае возникновения ошибки, вам придет ответ с соответствующим кодом и описанием ошибки.
| Код ответа | Текст ошибки | Описание |
|---|---|---|
| 403 | Verification not passed | Верификация была провалена |
| 404 | Organization not found | Запрашиваемая организация не была найдена |
| 404 | Organization api-key not found | api-key организации не был найден |
| 404 | Session not found | Сессия не была найдена |
| 404 | Liveness session not found | Liveness-сессия не была найдена А |
| 404 | F2F session not found | Face2face-сессия не была найдена |
| 404 | Subject not found in MCDB | Субъект не был найден в Базе Мобильных Граждан |
| 404 | Certificate not found | Сертификат не был найден |
| 404 | Document file(-s) not found | Документ(-ы) не был найден |
| 404 | Document file(-s) not found on server | Файл документа(-ов) отсутствует на сервере |
| 409 | You don't have access to these session actions | Действия над сессией запрещены |
| 409 | Could not send request to edocument service | Сервис edocument не отвечает |
| 503 | Digital service signature is not available | Сервис УЦ недоступен |
FAQ (Часто задаваемые вопросы)#
- Есть ли у данного сервиса OpenAPI документация?
- Есть. Она находится на тестовой среде по адресу dev.b-key.kz/swagger.
- В каком формате хранится подпись документа? Что означает набор символов, который приходит после подписи?
- Подпись хранится в формате CMS (Cryptograghic Message Syntax). Для понимания содержимого CMS можно воспользоваться данным сервисом.
- Можно ли переиспользовать сессию для повторного прохождения?
- Нельзя. В случае необходимости прохождения сессии заново, рекомендуется создать новую сессию и пройти ее.
- Что такое
check_id? Зачем нужен этот параметр? - Параметр
check_idнужен для перехода на страницу проверки подлинности документа. Об этом написано в документации в этапе Скачивание архива с документами. - Какие статусы может иметь сессия?
- Сессия имеет 4 статуса:
STARTED,PROCESS,FINISHED,CANCELED. Подробнее смотрите этап Проверка статуса сессии. - Как можно связаться с менеджером компании Biometric?
- Чтобы связаться с менеджером компании Biometric нужно обратиться в Telegram техподдержки Biometric.