Parallel

Авторизация

Заголовки X-API-Key и X-Signature — для обратной совместимости с Meridian

Legacy

Эта схема — только для обратной совместимости с Meridian: интеграция, написанная под Meridian, продолжит работать без изменений. Для новых интеграций передавайте токен в заголовке Authorization: Bearer <токен>.

Запросы в формате Meridian должны содержать заголовки X-API-Key и X-Signature.

X-API-Key

Заголовок X-API-Key должен содержать токен целиком — комбинацию из Key ID и Secret в формате keyId:secret.

X-API-Key: parallel_abc123...:parallel_xyz789...

X-Signature

Заголовок X-Signature должен содержать строку, закодированную в формате Base64, которая подписана секретным ключом с использованием алгоритма HMAC-SHA256.

X-Signature: <Base64-encoded-signature>

Формирование строки для подписи

Строка для подписи формируется путем конкатенации следующих элементов в следующем порядке:

  1. HTTP-метод запроса в верхнем регистре (например, GET, POST)
  2. Полный URL запроса, включая протокол, хост и путь (например, https://api.parallel-pay.com/api/v1/resource)
  3. Тело запроса — если оно присутствует, как JSON-строка

Пример строки для подписи:

POSThttps://api.parallel-pay.com/api/v1/resource{"key":"value","data":"example"}

Запросы GET

Для типа запроса GET строка для подписи создается путем конкатенации только метода запроса и URL запроса (тело запроса — пустая строка).

Пример для GET запроса:

GEThttps://api.parallel-pay.com/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.parallel-pay.com/api/v1/resource';
const body = JSON.stringify({
  key: 'value',
  data: 'example'
});

// Ваш токен в формате keyId:secret
const apiKey = 'parallel_abc123...:parallel_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
});

На этой странице