Интеграция и API СБП: схемы, webhooks, примеры и best practices

Получить CloudPayments бесплатно

Интеграция и API СБП: схемы, webhooks, примеры и best practices

Добро пожаловать в практическое руководство по тому, как устроена интеграция СБП для интернет‑бизнеса. Ниже — типовые схемы, структура API, примеры запросов и webhooks СБП, работа с deep link и QR payload SBP, а также best practices по безопасности и стабильности. Материал подходит разработчикам и продактам, которые выбирают или внедряют api СБП эквайринг.

Table of contents

Когда использовать API и какие задачи решает

Интеграция СБП даёт быстрый и недорогой прием платежей из банковских приложений клиента: по QR‑коду на сайте, deep link в мобильном сценарии или оплате по ссылке. Через api СБП эквайринг вы автоматически создаёте платеж, получаете динамический QR payload SBP, отслеживаете статусы через webhooks СБП и оформляете возвраты.

Схемы интеграции СБП

Ниже — три базовые схемы. Вы можете комбинировать их в одном проекте.

  1. Динамический QR на сайте
  1. Deep link СБП в приложении
  1. Оплата по ссылке

Основные эндпоинты и модель данных

Ниже типовой набор методов (конкретные пути и поля могут отличаться у вашего провайдера; примеры — иллюстративные):

Метод Путь Назначение
POST /api/sbp/v1/payments Создать платёж (динамический QR + deep link)
GET /api/sbp/v1/payments/{id} Получить платёж и статус
POST /api/sbp/v1/refunds Создать возврат по оплате
GET /api/sbp/v1/banks Получить список банков СБП
POST /api/sbp/v1/qrs/{id}/close Принудительно закрыть QR
POST /api/sbp/v1/test/webhook Отправить тестовый webhook

Особенности модели:

Смотрите также: QR‑платежи СБП и общий обзор СБП‑эквайринга.

Пример создания платежа и получение QR/deep link

Запрос (создание платежа):

{
  "order_id": "ORD-100500",
  "amount": 125000,
  "currency": "RUB",
  "description": "Оплата заказа #100500",
  "expires_at": "2025-12-31T23:59:00+03:00",
  "return_url": "https://shop.ru/thanks",
  "callback_url": "https://shop.ru/webhooks/sbp",
  "customer": { "phone": "+79990001122" },
  "qr": { "format": "svg", "size": 256 },
  "features": { "deep_link": true },
  "metadata": { "cart_id": "c_789" }
}

Ответ (усечённый):

{
  "payment_id": "pay_abc123",
  "status": "created",
  "qr_payload": "https://qr.nspk.ru/XXXXYYYY?sum=125000&cur=RUB&purpose=ORD-100500",
  "qr_svg": "data:image/svg+xml;base64,PHN2ZyB...",
  "deep_link": "sbp://pay?amount=125000&order=ORD-100500&ref=pay_abc123",
  "payment_url": "https://pay.example.ru/p/pay_abc123",
  "expires_at": "2025-12-31T23:59:00+03:00"
}

Покажите QR на веб‑странице, а в мобильном сценарии предложите «Оплатить в приложении банка» через deep link. Возврат статуса выполняйте по webhook; опрашивать GET рекомендуется только как резервный механизм.

Webhooks СБП: события, ретраи и HMAC подпись

Webhooks СБП — основной источник финальных статусов. Типовые события:

Пример уведомления:

Headers:

Body:

{
  "event": "payment.paid",
  "payment_id": "pay_abc123",
  "order_id": "ORD-100500",
  "amount": 125000,
  "status": "paid",
  "paid_at": "2025-11-07T12:01:02+03:00",
  "metadata": { "cart_id": "c_789" }
}

Проверка подписи HMAC SHA‑256 (пример Node.js):

// rawBody — неизменённая строка JSON из запроса
// secret — ваш webhook_secret из личного кабинета
const crypto = require('crypto');
function verifySignature(rawBody, signatureHeader, timestamp, secret) {
  const base = `${timestamp}.${rawBody}`;
  const digest = crypto.createHmac('sha256', secret).update(base, 'utf8').digest('hex');
  const expected = `t=${timestamp},v1=${digest}`;
  return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected));
}

Python (альтернатива):

import hmac, hashlib

def verify_signature(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    base = timestamp.encode() + b'.' + raw_body
    digest = hmac.new(secret.encode(), base, hashlib.sha256).hexdigest()
    expected = f"t={timestamp},v1={digest}"
    return hmac.compare_digest(signature, expected)

Рекомендации:

Подробнее о возвратах и спорах — на странице возвраты и споры.

Deep link СБП: мобильный сценарий

Deep link СБП открывает выбранное банковское приложение сразу на платёж, минуя сканирование QR. Полезно в:

Типичное поведение:

  1. Создаёте платёж через API с флагом deep_link: true.
  2. Получаете deep_link и/или bank_choice_url (страница выбора банка).
  3. Открываете ссылку в мобильном браузере/приложении; пользователь подтверждает и возвращается на return_url.

Сценарии глубже раскрыты в разделах мобильный приём и оплата по ссылке СБП.

QR payload SBP: что внутри кода

QR payload SBP — это строка (обычно URL с параметрами), которую банки распознают и инициируют перевод по СБП. Динамический payload содержит идентификатор платежа, сумму, назначение и срок жизни. Пример (сокращённый):

https://qr.nspk.ru/XXXXYYYY?type=01&sum=125000&cur=RUB&purpose=ORD-100500

Практические моменты:

Подробнее о форматах — в разделе QR‑платежи СБП.

Возвраты, статусы и идемпотентность

Статусы платежа:

Статус Описание Финальный
created Платёж создан, QR выдан нет
processing Банк обрабатывает перевод нет
paid Оплачено (получен webhook) да
expired Время действия истекло да
failed Ошибка при оплате да
refunded / partial_refunded Возврат проведён да

Пример возврата:

{
  "payment_id": "pay_abc123",
  "refund_id": "rfd_555",
  "amount": 125000,
  "reason": "Отмена заказа"
}

Идемпотентность:

Развёрнуто про кейсы и споры — на странице возвраты и споры.

Безопасность, 54-ФЗ и хранение данных

Минимальные требования:

Если требуется фискализация чеков, смотрите раздел касса 54‑ФЗ. Дополнительно о методах защиты — в разделе безопасность и юридических вопросах — договор и право.

Инструменты, плагины и тарифы

Не обязательно писать интеграцию «с нуля»:

Best practices и чеклист интеграции

Лучшие практики:

Чеклист перед запуском:

Вывод и следующий шаг

Интеграция СБП через API — быстрый способ повысить конверсию платежей и снизить комиссию. Используйте динамический QR и deep link, принимайте статусы через webhooks СБП с HMAC‑подписью и внедряйте практики идемпотентности и безопасности.

Готовы подключиться или хотите демо? Посмотрите как подключить и тарифы и комиссии, а затем выберите подходящий сценарий: СБП‑эквайринг или интернет‑эквайринг СБП. Мы поможем с пилотом и ответим на вопросы.

Получить CloudPayments бесплатно