Skip to main content
Ecom — приём платежей через hosted-страницу оплаты картой. Клиент перенаправляется на защищённую страницу, где вводит данные карты. Выбор банка не требуется.

Создание платежа

POST https://api.meridian.vip/api/v1/ecom/payments

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

ПараметрТипОписание
amountnumberСумма платежа в рублях
currencystringКод валюты. На данный момент есть поддержка "RUB"
internalIdstringУникальный идентификатор заказа в вашей системе для идемпотентности
customerEmailstringEmail клиента, необязательно настоящий. Строка должна быть в формате email
notificationUrlstringURL для webhook уведомлений по этому платежу
notificationTokenstringСекретный токен для подписи webhook уведомлений, мин длина 32 символа

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

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/ecom/payments';
const body = JSON.stringify({
  amount: 1000,
  currency: 'RUB',
  internalId: 'order-12345',
  customerEmail: '[email protected]',
  notificationUrl: 'https://your-site.com/webhooks/ecom',
  notificationToken: 'your-webhook-secret-token'
});

const apiKey = 'meridian_abc123...:meridian_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);
// result.paymentUrl — перенаправьте клиента на этот URL

Пример ответа (успех)

HTTP Status: 201 Created
{
  "id": "cm3k8x7y80001z8j4k5m6n7o8",
  "status": "new",
  "amount": "1000",
  "currency": "RUB",
  "paymentUrl": "https://web.tele.store/pay/card?...",
  "dealRate": "95.50",
  "expireAt": "2025-11-03T15:10:00.000Z",
  "createdAt": "2025-11-03T15:00:00.000Z",
  "updatedAt": "2025-11-03T15:00:00.000Z",
  "internalId": "order-12345"
}
Важно: Перенаправьте клиента на paymentUrl сразу после создания платежа. Ссылка имеет ограниченный срок действия (expireAt).

Поля ответа

ПолеТипОписание
idstringУникальный идентификатор платежа в системе Meridian
statusstringСтатус: new, paid, expired, canceled
amountstringСумма платежа
currencystringВалюта (RUB)
paymentUrlstringURL hosted-страницы оплаты картой. Перенаправьте клиента на этот URL
dealRatestringКурс сделки
expireAtstringВремя истечения платежа. ISO 8601
createdAtstringВремя создания платежа. ISO 8601
updatedAtstringВремя последнего обновления. ISO 8601
internalIdstringВаш идентификатор заказа

Webhook-уведомления

Подробнее см. Webhook-уведомления.

Пример тела webhook для ecom-платежа

{
  "id": "cm3k8x7y80001z8j4k5m6n7o8",
  "amount": "1000.0000",
  "status": "paid",
  "currency": "RUB",
  "dealRate": "95.50",
  "expireAt": "2025-11-03T15:10:00.000Z",
  "createdAt": "2025-11-03T15:00:00.000Z",
  "direction": "in",
  "updatedAt": "2025-11-03T15:05:00.000Z",
  "paymentMethod": "ECOM",
  "internalId": "order-12345",
  "merchantName": "MerchantName"
}