Система быстрых платежей (СБП)
Особенности
Сценарии интеграции
Готовые решения:
Самостоятельная интеграция:
Подключение способа оплаты
Чтобы получить возможность принимать платежи через СБП, вам нужно:
  1. Быть клиентом ЮKassa, получить идентификатор магазина (shopId в личном кабинете) и сгенерировать секретный ключ для аутентификации запросов.
  2. Заключить дополнительный договор для проведения платежей через СБП.
Для аутентификации всех запросов к API нужно использовать идентификатор магазина, выданный при подключении к ЮKassa.
Процесс платежа
При оплате через СБП пользователю нужно подтвердить платеж в мобильном приложении банка, поддерживающем эту функцию. Список банков с оплатой через СБП
Платежи через СБП можно принимать на сайте и в мобильном приложении:
  1. Пользователь выбирает СБП в качестве способа оплаты.
  2. Пользователь переходит в приложение банка: в полной версии сайта — сканирует QR-код с помощью своего устройства и переходит по ссылке; в мобильной версии сайта или в мобильном приложении — переходит по кнопке.
  3. Пользователь в приложении банка подтверждает платеж.
  4. Пользователь возвращается к вам на сайт или в приложение и узнает статус платежа.
Оплата через СБП на готовой странице ЮKassa
В этом сценарии после создания платежа вы перенаправляете пользователя на страницу ЮKassa, где он сканирует QR-код или переходит по кнопке в мобильное приложение банка.
Шаг 1. Создайте платеж, в объекте
payment_method_data
передайте тип
sbp
, в объекте
confirmation
 — тип
redirect
и адрес страницы завершения оплаты в 
return_url
.
В запросе можно передать любые другие параметры, кроме
save_payment_method
,
payment_method_id
payment_token
,
airline
.
Пример запроса
cURL
PHP
Python
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-код, а в мобильной — кнопка для перехода в приложение банка.
Пример тела ответа
JSON
{
  "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, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Пример тела ответа
JSON
{
  "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. Создайте платеж, в объекте
payment_method_data
передайте тип
sbp
, в объекте
confirmation
 — тип
qr
.
В запросе можно передать любые другие параметры, кроме
save_payment_method
,
payment_method_id
payment_token
,
airline
.
Пример запроса
cURL
PHP
Python
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 (например, при нажатии на кнопку Оплатить).
Пример тела ответа
JSON
{
  "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/AD100003R7J3368J8NPAB6VV8I8U62QD?type=02&bank=100000000022&sum=40440&cur=RUB&crc=8385"
  },
  "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, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Пример тела ответа
JSON
{
  "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. Отобразите пользователю результат проведения платежа (успех или неудача) в зависимости от статуса платежа.
Готово! Если вы проводите платежи в две стадии, подтвердите или отмените платеж.

Есть вопросы или замечания по документации?

Можем созвониться и обсудить их лично: мы поможем вам разобраться, а вы нам — понять, что тут нужно улучшить. Для этого оставьте свои контакты и выберите время.
Да, хочу обсудить
Что почитать еще
Основы проведения платежейНеуспешные платежиОплата по 54-ФЗ