Skip to main content

Создание заявки

Endpoint для создания заявки на прием платежа:
POST https://api.meridian.vip/api/v1/invoices

Обязательные параметры

ПараметрТипОписание
internalIdstringУникальный идентификатор заявки в вашей системе для защиты от дубликатов.
directionstringНаправление платежа. Для приема используйте "in". Допустимые значения: "in" (входящий), "out" (исходящий)
amountnumberСумма платежа. Примеры: 1000 = 1000 RUB
currencystringКод валюты ISO 4217. Пока доступно: "RUB", "AZN"
startDealbooleanВсегда ‘“true“‘
notificationUrlstringURL для webhook уведомлений о смене статуса заявки. Требования: валидный HTTPS URL. Пример: "https://your-site.com/webhooks/meridian"
notificationTokenstringСекретный токен для HMAC-SHA256 подписи webhook. Требования: 32-255 символов

Опциональные параметры

ПараметрТипОписание
paymentMethodstringМетод платежа: "SBP" (Система быстрых платежей, рекомендуется), "TO_CARD" (перевод на карту), “MOBILE” (мобильная коммерция)
paymentOptionstringБанк для платежа (зависит от доступности реквизитов): "sberbank", "tinkoff", "alfa", "vtb", "raiffeisen"
successUrlstringURL для редиректа после успешной оплаты. При наличии successUrl, cancelUrl и errorUrl в ответе вернётся paymentUrl — ссылка на hosted-страницу оплаты. Должен использовать HTTPS (кроме localhost)
cancelUrlstringURL для редиректа при отмене клиентом. Должен использовать HTTPS (кроме localhost)
errorUrlstringURL для редиректа при ошибке или истечении срока. Должен использовать HTTPS (кроме localhost)

Пример запросач

const crypto = require('crypto');

// Функция для расчета подписи
function calculateSignature(method, url, body, secret) {
  const stringToSign = method + url + (body || '');
  const hmac = crypto.createHmac('sha256', secret);
  hmac.update(stringToSign);
  return hmac.digest('base64');
}

// Данные заявки
const method = 'POST';
const url = 'https://api.meridian.vip/api/v1/invoices';
const body = JSON.stringify({
  internalId: 'order-12345',
  direction: 'in',
  amount: 1000,
  currency: 'RUB',
  startDeal: true, 
  paymentMethod: 'SBP',
  paymentOption: 'sberbank',
  notificationUrl: 'https://your-site.com/webhooks/meridian',
  notificationToken: 'your-secret-webhook-token-min-32-chars'
});

// Ваш API ключ
const apiKey = 'luma_abc123...:luma_xyz789...';
const [keyId, secret] = apiKey.split(':');
const signature = calculateSignature(method, url, body, secret);

// Отправка запроса
const response = await fetch(url, {
  method,
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': apiKey,
    'X-Signature': signature
  },
  body
});

const result = await response.json();
console.log(result);

Пример ответа (H2H интеграция)

HTTP Status: 200 OK При создании заявки без redirectUrls — стандартный H2H-ответ с реквизитами:
{
  "id": "cm3k8x7y80001z8j4k5m6n7o8",
  "direction": "in",
  "status": "new",
  "paymentMethod": "SBP",
  "paymentOption": "sberbank",
  "amount": "1000",
  "currency": "RUB",
  "expireAt": "2025-11-03T15:10:00.000Z",
  "requisiteId": "req_abc123xyz789",
  "dealRequisites": "{\"bankName\":\"Sberbank\",\"cardNumber\":\"**** 1234\",\"fullName\":\"Ivan Ivanov\"}",
  "dealRate": "95.50",
  "createdAt": "2025-11-03T15:00:00.000Z",
  "updatedAt": "2025-11-03T15:00:00.000Z",
  "internalId": "order-12345",
  "merchantName": "MerchantName"
}

Пример ответа (Redirect интеграция)

HTTP Status: 201 Created При создании заявки с redirectUrls — ответ содержит paymentUrl для редиректа клиента на hosted-страницу оплаты:
{
  "id": "cm3k8x7y80001z8j4k5m6n7o8",
  "direction": "in",
  "status": "new",
  "amount": "1000",
  "currency": "RUB",
  "dealRate": "95.50",
  "createdAt": "2025-11-03T15:00:00.000Z",
  "updatedAt": "2025-11-03T15:00:00.000Z",
  "internalId": "order-12345",
  "merchantName": "MerchantName",
  "paymentUrl": "https://luma-gate.com/pay/V1StGXR8_Z5jdHi6B-myT9a2xHplkR4w"
}

Примеры ошибок

Ошибка: Нет доступных реквизитов

HTTP Status: 503 Service Unavailable Эта ошибка возникает когда все трейдеры с подходящими реквизитами заняты
{
  "error": "Нет доступных реквизитов"
}

Поля ответа

ПолеТипОписание
idstringУникальный идентификатор заявки в системе Meridian. Используйте для проверки статуса через GET /api/v1/invoices/:id
directionstringНаправление платежа: "in" (входящий) или "out" (исходящий)
statusstringТекущий статус заявки. Для direction="in": "new" (создана, ожидает трейдера), "paid" (оплачена, средства распределены), "expired" (истек срок 10 мин), "canceled" (отменена), "dispute" (открыт спор). Следите за: newprocessingpaid
amountstringСумма заявки в указанной валюте (строка для точности)
currencystringКод валюты: "RUB", "USD", "EUR", "USDT"
paymentMethodstringМетод платежа: "SBP" или "TO_CARD"
paymentOptionstringВыбранный банк для платежа (например, "sberbank", "tinkoff")
requisiteIdstringID назначенного реквизита (только если startDeal=true)
dealRequisitesstringJSON-строка с реквизитами для оплаты (номер карты, счет, имя получателя). Важно: Передайте эту информацию клиенту для совершения платежа
dealRatestringКурс обмена USDT/RUB на момент создания заявки
expireAtstringВремя истечения заявки ISO 8601. Для IN: истекает через 10 минут. После истечения средства автоматически размораживаются
createdAtstringВремя создания заявки в формате ISO 8601
updatedAtstringВремя последнего обновления заявки в формате ISO 8601
internalIdstringУникальный идентификатор заявки в вашей системе (тот же, что был передан при создании). Используйте для сопоставления с вашими внутренними записями
merchantNamestringОтображаемое имя мерчанта (ваша организация)
paymentUrlstringURL hosted-страницы оплаты. Присутствует только при создании заявки с redirectUrls. Перенаправьте клиента на этот URL для оплаты