Россия
Оплата через СБП по QR-коду в RUB
Перед тем как начать
Авторизация
Как подписывать запросы API-токеном.
Создание платежа
Базовый запрос на создание заказа, который расширяет эта страница.
Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.
Обзор
| Валюта | Способ оплаты | Схема |
|---|---|---|
RUB | СБП (QR-код) | Вы запрашиваете QR-ссылку и сами показываете её плательщику |
Если СБП включена на вашем терминале, платёжная страница предлагает её без дополнительных параметров. На этой странице описана схема host-to-host: вы получаете QR-ссылку СБП напрямую из API и отображаете её в собственном интерфейсе.
Требования к заказу
Для СБП доступны два варианта интеграции: с объектом customer и без него. Какой из них включён для вашего аккаунта, определяется настройками терминала.
Не уверены, какой вариант у вас? Уточните у менеджера.
Телефон и IP-адрес плательщика передаются в объекте customer, сумма — в целых рублях: заказ с копейками не получит QR-ссылку.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ✅ Да | Телефон плательщика в формате +79991234567 |
ip | string | ✅ Да | IP-адрес плательщика (реальный) |
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "9000",
"currency": "RUB",
"externalId": "external_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"customer": {
"phone": "+79991234567",
"ip": "198.51.100.24"
}
}Объект customer не передаётся: отправьте обычный запрос на создание ордера с валютой RUB.
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "9000",
"currency": "RUB",
"externalId": "external_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments"
}Схема работы
Запросите QR-ссылку
POST /v1/orders/{orderId}/h2h/sbpcurl -X POST "https://api.platinout.com/v1/orders/{orderId}/h2h/sbp" \
-H "Content-Type: application/json" \
-H "X-Api-Token: YOUR_API_TOKEN"QR-ссылка генерируется на стороне банка. Установите таймаут запроса от 30 секунд.
Ответ:
{
"qrLink": "https://qr.nspk.ru/..."
}Если реквизиты выдать не удалось, API отвечает 503 с кодом NO_REQUISITES в сообщении. Создайте новый заказ.
Покажите QR-код
Отобразите qrLink в виде QR-кода или откройте его как ссылку на мобильных устройствах. Плательщик подтверждает перевод в приложении своего банка.
Дождитесь результата
Статус заказа меняется на COMPLETED, когда перевод подтверждён. Вы получаете webhook или можете опрашивать заказ по ID.
Статус заказа и webhook-уведомления
Статусы заказа
| Статус | Финальный | Описание |
|---|---|---|
CREATED | Нет | Заказ создан, платёжная ссылка ещё не открыта |
PENDING | Нет | Ожидает оплаты |
COMPLETED | Да | Платёж успешно завершён, средства получены |
FAILED | Условно | Ошибка оплаты |
CANCELED | Условно | Заказ отменён системой |
EXPIRED | Условно | Срок действия заказа истёк до оплаты |
BLOCKED | Условно | Транзакция заблокирована банком |
REFUND | Да | Платёж возвращён плательщику (например, завершён ваш возврат). Устанавливается после COMPLETED |
CHARGEBACK | Да | Платёж оспорен плательщиком и отменён банком. Устанавливается после COMPLETED |
FAILED, CANCELED, EXPIRED и BLOCKED не являются строго финальными. Если банк позже подтверждает платёж из-за ошибки на своей стороне, заказ переходит в COMPLETED, и webhook-уведомление об этом отправляется автоматически. Будьте готовы получить COMPLETED по заказу, который вы уже отметили как неуспешный.