Интегрируйте RolliePay в свой проект за несколько часов. Принимайте P2P-платежи через карты, СБП и переводы.
RolliePay — процессинговая платформа для приёма P2P-платежей. Мерчант создаёт платёж через API, система автоматически назначает оператора с подходящими реквизитами. Покупатель переводит деньги напрямую оператору, после чего оператор подтверждает получение.
Создайте платёж
POST /api/payments/create с суммой и методом
Перенаправьте
Покупатель оплачивает по реквизитам оператора
Получите webhook
Уведомление об успехе или неуспехе
Все запросы к API должны содержать ваш API-ключ в заголовке X-Api-Key. Ключ выдаётся администратором и начинается с mk_.
X-Api-Key: mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxОсновная операция — создание платежа. В ответ получаете объект платежа с реквизитами оператора.
/api/payments/createСоздать новый платёж
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
| amount | number | ✓ | Сумма платежа в рублях |
| currency | string | ✓ | "RUB" |
| method | string | ✓ | "card" | "sbp" | "c2c" |
| traffic_type | string | "classic" | "bt" | "mk". Для Onyx влияет на плавающий процент; по умолчанию "classic". | |
| order_id | string | Ваш внутренний ID заказа. Возвращается без изменений в webhook — используйте для сверки. | |
| callback_url | string | URL для webhook-уведомлений | |
| success_url | string | Редирект при успешной оплате | |
| fail_url | string | Редирект при неуспешной оплате | |
| customer_email | string | Email покупателя | |
| description | string | Описание платежа |
curl -X POST https://merch-production-f1cb.up.railway.app/api/payments/create \
-H "Content-Type: application/json" \
-H "X-Api-Key: mk_ваш_ключ" \
-d '{
"amount": 1000,
"currency": "RUB",
"method": "card",
"traffic_type": "classic",
"order_id": "ORDER-123",
"callback_url": "https://yoursite.com/webhook",
"success_url": "https://yoursite.com/success",
"fail_url": "https://yoursite.com/fail"
}'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"amount": 1000,
"currency": "RUB",
"method": "card",
"traffic_type": "classic",
"status": "pending",
"order_id": "ORDER-123",
"expires_at": "2024-01-15T12:30:00Z",
"created_at": "2024-01-15T12:00:00Z",
"requisite": {
"type": "card",
"bank": "sberbank",
"value": "4276 **** **** 1234",
"owner_name": "Иван И."
}
}Получить текущий статус платежа по его UUID (без авторизации — для страницы покупателя).
/api/payments/:id/publicПубличный статус платежа (без авторизации)
curl https://merch-production-f1cb.up.railway.app/api/payments/550e8400-e29b-41d4-a716-446655440000/public| Статус | Описание | Финальный |
|---|---|---|
| pending | Ожидает оплаты от покупателя | |
| success | Оплата подтверждена оператором | ✓ |
| failed | Платёж не прошёл / открыт спор | ✓ |
| expired | Истекло время ожидания (30 мин) | ✓ |
| cancelled | Отменён | ✓ |
При изменении статуса платежа RolliePay отправляет POST-запрос на ваш callback_url. Ваш сервер должен вернуть 200 OK.
Сейчас отправляется только событие успешной оплаты. Для отслеживания истёкших и неуспешных платежей опрашивайте GET /api/payments/:id/public.
Webhook отправляется плоским JSON-объектом (без вложенности). Поля:
| Поле | Тип | Описание |
|---|---|---|
| event | string | Тип события, напр. "payment.success" |
| payment_id | string | UUID платежа в RolliePay |
| order_id | string | Ваш ID заказа — то же значение, что вы передали в order_id при создании платежа. Используйте его для сверки со своей системой. |
| amount | number | Сумма платежа в рублях |
| currency | string | "RUB" |
| method | string | "card" | "sbp" | "c2c" |
| traffic_type | string | "classic" | "bt" | "mk" |
| status | string | Статус платежа, напр. "success" |
| fee_amount | number | Комиссия платформы в рублях |
| tx_hash | string | null | Хеш транзакции (null для P2P) |
| created_at | string | ISO-дата создания платежа |
| timestamp | number | Unix-время (мс) отправки webhook |
POST https://yoursite.com/webhook
Content-Type: application/json
X-Webhook-Event: payment.success
X-Webhook-Signature: sha256=<hmac>
{
"event": "payment.success",
"payment_id": "a09f36b0-05a5-4f30-8b3c-6e60450cfb5e",
"order_id": "ORDER-123",
"amount": 3065,
"currency": "RUB",
"method": "c2c",
"traffic_type": "classic",
"status": "success",
"fee_amount": 459.75,
"tx_hash": null,
"created_at": "2026-06-10T19:50:58.586Z",
"timestamp": 1781121457358
}null. Поле payment_id — это UUID платежа на стороне RolliePay.Каждый webhook содержит заголовок X-Webhook-Signature в формате sha256=<hmac>. Это HMAC-SHA256 от сырого тела запроса с вашим секретом. Сравните его со своим расчётом, чтобы убедиться в подлинности.
const crypto = require('crypto');
const raw = JSON.stringify(req.body); // сырое тело запроса
const expected = 'sha256=' + crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(raw)
.digest('hex');
if (req.headers['x-webhook-signature'] !== expected) {
return res.sendStatus(401); // подпись не совпала
}app.post('/webhook', express.json(), async (req, res) => {
const { event, order_id, payment_id, amount, status } = req.body;
if (event === 'payment.success') {
// order_id — ваш ID заказа, переданный при создании платежа
await creditsService.add(order_id, amount);
}
res.sendStatus(200); // обязательно вернуть 200
});| method | Описание | Валюта |
|---|---|---|
| card | Перевод на банковскую карту | RUB |
| sbp | СБП — Система быстрых платежей | RUB |
| c2c | Card2Card перевод | RUB |
| HTTP | message | Причина |
|---|---|---|
| 401 | Invalid API key | Неверный или отсутствующий X-Api-Key |
| 400 | Validation failed | Неверные параметры запроса |
| 404 | Payment not found | Платёж с таким ID не существует |
| 503 | No operators available | Нет доступных операторов для суммы/метода |
Наш менеджер ответит на все вопросы по API и настройке
Написать в Telegram