- Тип способа оплаты в API:
sbp
- Сценарий подтверждения: Redirect и QR-код
- Срок оплаты: 1 час
- Холдирование: нельзя платить в две стадии
- Код в реестре: CP
- Возврат: да, полный и частичный
- Срок возврата: на следующий день
- Автоплатежи: да, но есть особенности
- Лимиты: минимальный размер платежа — 1 рубль, максимальный — 1 млн рублей
Готовые решения:
Самостоятельная интеграция:
- Оплата через СБП на готовой странице ЮKassa
- Оплата с самостоятельным перенаправлением в приложение участника СБП
При оплате через СБП пользователю нужно подтвердить платеж в мобильном приложении банка или платежного сервиса, поддерживающем эту функцию. Список банков и платежных сервисов с оплатой через СБП
Платежи через СБП можно принимать на сайте и в мобильном приложении:
- Пользователь выбирает СБП в качестве способа оплаты.
- Пользователь переходит к оплате: в полной версии сайта — сканирует QR-код с помощью своего устройства и переходит по ссылке; в мобильной версии сайта или в мобильном приложении — переходит по кнопке.
- При необходимости пользователь выбирает из списка нужного ему участника СБП (банк или платежный сервис) и переходит в мобильное приложение выбранного участника СБП.
- Пользователь в приложении участника СБП подтверждает платеж.
- Пользователь возвращается к вам на сайт или в приложение и узнает статус платежа.
Некоторые банки и платежные сервисы, подключенные к СБП, пока не поддерживают проведение автоплатежей.
Если вы проводите платеж через СБП с сохранением способа оплаты (передаете параметр
save_payment_method
со значением true
), то в процессе платежа в списке участников СБП будут отображаться только те банки и платежные сервисы, которые поддерживают автоплатежи.
Если пользователю нужен тот банк или сервис, которого нет в списке, то оплатить не получится.При платеже предупредите об этом пользователя и при необходимости предложите использовать другой способ для оплаты.
Чтобы узнать, какие банки и платежные сервисы уже поддерживают автоплатежи, перейдите на сайт СБП и выберите фильтр Привязка счета.
В этом сценарии после создания платежа вы перенаправляете пользователя на страницу ЮKassa, где он сканирует QR-код или переходит по кнопке в мобильное приложение участника СБП.
Шаг 1. Создайте платеж :
- в объекте
amount
передайте сумму, которую нужно списать с пользователя; сумма должна укладываться в лимиты; - в объекте
payment_method_data
передайте типsbp
; - в объекте
confirmation
передайте типredirect
и адрес страницы на вашей стороне, на которую пользователь вернется после оплаты (в параметреreturn_url
); - в параметре
capture
передайте значениеtrue
, чтобы платеж автоматически перешел в статусsucceeded
после оплаты.
Пример запроса
curl https://api.yookassa.ru/v3/payments \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payment_method_data": { "type": "sbp" }, "confirmation": { "type": "redirect", "return_url": "https://www.example.com/return_url" }, "capture": true, "description": "Заказ №72" }'
Шаг 2. Перенаправьте пользователя на страницу ЮKassa, адрес которой придет в
confirmation_url
. Откроется страница ЮKassa, на которой в полной версии сайта отобразится QR-код, а в мобильной — кнопка для перехода в приложение участника СБП.Пример тела ответа
{ "id": "264e0b53-000f-5000-8000-17409ff6554a", "status": "pending", "paid": false, "amount": { "value": "2.00", "currency": "RUB" }, "confirmation": { "type": "redirect", "confirmation_url": "https://yoomoney.ru/checkout/payments/sbp?orderId=272b3eb5-000f-5000-9000-1766dbc50f19" }, "created_at": "2020-05-13T13:35:15.183Z", "description": "Заказ №72", "metadata": {}, "payment_method": { "type": "sbp", "id": "264e0b53-000f-5000-8000-17409ff6554a", "saved": false }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": false, "test": false }
Шаг 3. Дождитесь успешного завершения платежа: подождите, когда придет уведомление от ЮKassa, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Пример тела ответа
{ "id": "264e0bc0-000f-5000-a000-109b22344b4c", "status": "succeeded", "paid": true, "amount": { "value": "2.00", "currency": "RUB" }, "income_amount": { "value": "1.97", "currency": "RUB" }, "captured_at": "2020-05-13T13:49:16.887Z", "created_at": "2020-05-13T13:37:04.389Z", "description": "Заказ №72", "income_amount": { "value": "2.00", "currency": "RUB" }, "metadata": {}, "payment_method": { "type": "sbp", "id": "264e0bc0-000f-5000-a000-109b22344b4c", "saved": false }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": true, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "test": false }
Шаг 4. Когда пользователь вернется на
return_url
, отобразите результат проведения платежа (успех или неудача) в зависимости от статуса платежа.Готово!
В этом сценарии после создания платежа вы самостоятельно генерируете и отображаете QR-код или перенаправляете пользователя в мобильное приложение участника СБП.
Шаг 1. Создайте платеж :
- в объекте
amount
передайте сумму, которую нужно списать с пользователя; сумма должна укладываться в лимиты; - в объекте
payment_method_data
передайте типsbp
; - в объекте
confirmation
передайте типqr
; - в параметре
capture
передайте значениеtrue
, чтобы платеж автоматически перешел в статусsucceeded
после оплаты.
Пример запроса
curl https://api.yookassa.ru/v3/payments \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payment_method_data": { "type": "sbp" }, "confirmation": { "type": "qr" }, "capture": true, "description": "Заказ №72" }'
Шаг 2. В параметре
confirmation_data
ЮKassa передаст URL. В полной версии сайта сгенерируйте QR-код с помощью любого доступного инструмента и отобразите его пользователю. В мобильной версии сайта или в мобильном приложении перенаправьте пользователя по этому URL (например, при нажатии на кнопку Оплатить).Пример тела ответа
{ "id": "264e0b53-000f-5000-8000-17409ff6554a", "status": "pending", "paid": false, "amount": { "value": "2.00", "currency": "RUB" }, "confirmation": { "type": "qr", "confirmation_data": "https://qr.nspk.ru/QR_ID" }, "created_at": "2020-05-13T13:35:15.183Z", "description": "Заказ №72", "metadata": {}, "payment_method": { "type": "sbp", "id": "264e0b53-000f-5000-8000-17409ff6554a", "saved": false }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": false, "test": false }
Шаг 3. Дождитесь успешного завершения платежа: подождите, когда придет уведомление от ЮKassa, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Пример тела ответа
{ "id": "264e0bc0-000f-5000-a000-109b22344b4c", "status": "succeeded", "paid": true, "amount": { "value": "2.00", "currency": "RUB" }, "income_amount": { "value": "1.97", "currency": "RUB" }, "captured_at": "2020-05-13T13:49:16.887Z", "created_at": "2020-05-13T13:37:04.389Z", "description": "Заказ №72", "income_amount": { "value": "2.00", "currency": "RUB" }, "metadata": {}, "payment_method": { "type": "sbp", "id": "264e0bc0-000f-5000-a000-109b22344b4c", "saved": false }, "recipient": { "account_id": "100500", "gateway_id": "100700" }, "refundable": true, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "test": false }
Шаг 4. Отобразите пользователю результат проведения платежа (успех или неудача) в зависимости от статуса платежа.
Готово!
Основы проведения платежейНеуспешные платежиОтправка чеков в налоговую