Все запросы к Meridian API должны содержать заголовки X-API-Key и X-Signature.
Получение API ключей
Для мерчантов (самостоятельно)
- Войдите в личный кабинет Meridian
- Перейдите в раздел API Ключи в боковом меню
- Нажмите Создать ключ
- Введите описательное имя (например, “Production Server”)
- ВАЖНО: Скопируйте и сохраните Key ID и Secret немедленно
- Формат:
meridian_<32_символа> для обоих значений
- Secret больше никогда не будет показан
После создания ключа Secret отображается только один раз. Сохраните его в безопасном месте!
X-API-Key
Заголовок X-API-Key должен содержать комбинацию из Key ID и Secret в формате keyId:secret.
X-API-Key: meridian_abc123...:meridian_xyz789...
X-Signature
Заголовок X-Signature должен содержать строку, закодированную в формате Base64, которая подписана секретным ключом с использованием алгоритма HMAC-SHA256.
X-Signature: <Base64-encoded-signature>
Формирование строки для подписи
Строка для подписи формируется путем конкатенации следующих элементов в следующем порядке:
- HTTP-метод запроса в верхнем регистре (например,
GET, POST)
- Полный URL запроса, включая протокол, хост и путь (например,
https://api.meridian.vip/api/v1/resource)
- Тело запроса - если оно присутствует, как JSON-строка
Пример строки для подписи:
POSThttps://api.meridian.vip/api/v1/resource{"key":"value","data":"example"}
Запросы GET
Для типа запроса GET строка для подписи создается путем конкатенации только метода запроса и URL запроса (тело запроса - пустая строка).
Пример для GET запроса:
GEThttps://api.meridian.vip/api/v1/resource
Формирование подписи
Полученная строка подписывается секретным ключом secret с использованием алгоритма HMAC-SHA256, а результат кодируется в Base64 и передается в заголовке X-Signature.
Примеры кода
const crypto = require('crypto');
function calculateSignature(method, url, body, secret) {
// Формируем строку для подписи
const stringToSign = method + url + (body || '');
// Вычисляем HMAC-SHA256
const hmac = crypto.createHmac('sha256', secret);
hmac.update(stringToSign);
return hmac.digest('base64');
}
// Пример использования
const method = 'POST';
const url = 'https://api.meridian.vip/api/v1/resource';
const body = JSON.stringify({
key: 'value',
data: 'example'
});
// Ваш API ключ в формате: luma_keyId:luma_secret
const apiKey = 'luma_abc123...:luma_xyz789...';
const [keyId, secret] = apiKey.split(':');
const signature = calculateSignature(method, url, body, secret);
// Выполняем запрос
fetch(url, {
method,
headers: {
'Content-Type': 'application/json',
'X-API-Key': apiKey,
'X-Signature': signature
},
body
});