Подготавливаем страницу…
Подготавливаем страницу…
Самый надёжный способ: ключ sk_ живёт на сервере, можно ограничить по IP или подписать HMAC.
sk_ (secret — только server-side)forms_scope=[id1, id2, …] — и в каждом запросе передаёте form_id в body.Создать ключ для своего сайта → ваш ЛК 1ОПД · Все endpoints → API Reference
Самый простой вариант. Выясните внешний IP сервера (curl ifconfig.me) и внесите в ЛК. Подходит, когда IP не меняется месяцами.
Подписываете каждый запрос секретом. Не зависит от IP — годится для динамических сред: контейнеры, serverless, Cloud Run, Lambda. Защищает и от утечки самого ключа (без секрета подделать нельзя).
<?php
$body = json_encode([
"form_id" => 1,
"hash_field" => $_POST["email"],
"fields" => [
["field" => "email", "value" => $_POST["email"]],
["field" => "name", "value" => $_POST["name"]],
["field" => "phone", "value" => $_POST["phone"]],
],
]);
$ch = curl_init("https://v2.1opd.ru/api/v2/create-agreement");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => [
// sk_ + IP whitelist в ЛК ИЛИ sk_ + HMAC (см. вкладку)
"API-KEY: sk_xxxxxxxxxxxxxxxxxxxx",
"Content-Type: application/json",
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
error_log("1ОПД hash: " . ($data["hash"] ?? "(error)"));Подпись считается над конкатенацией timestamp и тела запроса, разделённых переводом строки. Алгоритм — HMAC-SHA256, результат в base64. Секрет хранится в base64 и декодируется в bytes перед вычислением.
API-SIGN = base64( HMAC-SHA256( ts + "\n" + body_bytes, base64_decode(secret) ) )ts — unix-timestamp в секундах (строка).body_bytes — точные байты JSON, которые вы отправляете. Сериализуйте один раз и используйте и для подписи, и для отправки.Откройте ЛК → раздел «Интеграция». Там персональные snippet'ы с уже подставленным API-ключом и form_id.
Открыть ЛК →Запросите тестовый доступ — выдаём ключ под ваш домен и помогаем подключиться.
Связаться →Все endpoints, коды ошибок, форматы HMAC/Origin/IP. Таблица «какую защиту выбрать».
Открыть →