Инструкции
Помощь
Подключить ЮKassa
Система быстрых платежей (СБП)
Особенности
Сценарии интеграции
Готовые решения:
Самостоятельная интеграция:
Процесс платежа
При оплате через СБП пользователю нужно подтвердить платеж в мобильном приложении банка или платежного сервиса, поддерживающем эту функцию. Список банков и платежных сервисов с оплатой через СБП
Платежи через СБП можно принимать на сайте и в мобильном приложении:
  1. Пользователь выбирает СБП в качестве способа оплаты.
  2. Пользователь переходит к оплате: в полной версии сайта — сканирует QR-код с помощью своего устройства и переходит по ссылке; в мобильной версии сайта или в мобильном приложении — переходит по кнопке.
  3. При необходимости пользователь выбирает из списка нужного ему участника СБП (банк или платежный сервис) и переходит в мобильное приложение выбранного участника СБП.
  4. Пользователь в приложении участника СБП подтверждает платеж.
  5. Пользователь возвращается к вам на сайт или в приложение и узнает статус платежа.
Особенности проведения платежей с сохранением способа оплаты
Для тех, кто использует автоплатежи.
Некоторые банки и платежные сервисы, подключенные к СБП, пока не поддерживают проведение автоплатежей.
Если вы проводите платеж через СБП с сохранением способа оплаты (передаете параметр
save_payment_method
со значением
true
), то в процессе платежа в списке участников СБП будут отображаться только те банки и платежные сервисы, которые поддерживают автоплатежи. Если пользователю нужен тот банк или сервис, которого нет в списке, то оплатить не получится.
При платеже предупредите об этом пользователя и при необходимости предложите использовать другой способ для оплаты.
Каждый банк и платежный сервис самостоятельно определяет сроки, когда начнет поддерживать автоплатежи. Это закрытая информация.
Чтобы узнать, какие банки и платежные сервисы уже поддерживают автоплатежи, перейдите на сайт СБП и выберите фильтр Привязка счета.
Оплата через СБП на готовой странице ЮKassa
В этом сценарии после создания платежа вы перенаправляете пользователя на страницу ЮKassa, где он сканирует QR-код или переходит по кнопке в мобильное приложение участника СБП.
  • в объекте
    amount
    передайте сумму, которую нужно списать с пользователя; сумма должна укладываться в лимиты;
  • в объекте
    payment_method_data
    передайте тип
    sbp
    ;
  • в объекте
    confirmation
    передайте тип
    redirect
    и адрес страницы на вашей стороне, на которую пользователь вернется после оплаты (в параметре
    return_url
    );
  • в параметре
    capture
    передайте значение
    true
    , чтобы платеж автоматически перешел в статус
    succeeded
    после оплаты.
В запросе можно передать любые другие параметры, кроме
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-код или перенаправляете пользователя в мобильное приложение участника СБП.
  • в объекте
    amount
    передайте сумму, которую нужно списать с пользователя; сумма должна укладываться в лимиты;
  • в объекте
    payment_method_data
    передайте тип
    sbp
    ;
  • в объекте
    confirmation
    передайте тип
    qr
    ;
  • в параметре
    capture
    передайте значение
    true
    , чтобы платеж автоматически перешел в статус
    succeeded
    после оплаты.
В запросе можно передать любые другие параметры, кроме
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/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, или периодически отправляйте запросы, чтобы получить информацию о платеже .
Пример тела ответа
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. Отобразите пользователю результат проведения платежа (успех или неудача) в зависимости от статуса платежа.
Готово!
Что почитать еще
Основы проведения платежейНеуспешные платежиОтправка чеков в налоговую