Прием платежей через SberPay
Этот сценарий описывает прием платежа через SberPay. Для оплаты не требуется вводить данные карты. Имеется возможность проводить платежи с автоподтверждением платежа. При подключении уточните у менеджера, какая схема работы вам необходима.
Гайдлайны и SDK можно найти здесь.
На оплату методом SberPay после подтверждения платежа дается 20 минут. Если в течение 20 минут вы не передадите Банку подтверждение в методе
session/confirm
, оплата не будет произведена, и сессия автоматически завершится в статусеcanceled
.
Сценарий оплаты
- Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров, в том числе с каналом оплаты в параметреchannel
и со ссылкой для перехода плательщика в параметреreturn_url
.Если вы создали сессию отдельно от платежа, отправьте запрос
session/start/payment
. - Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. - Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
.Опционально: вы можете вызвать методы отправки дополнительных уведомлений, СМС или PUSH, используя метод
sberpay/push
. Выбор для отправки СМС или PUSH производится на стороне провайдера (Сбер). Мы не рекомендуем использовать методsberpay/push
вместе с параметромchannel = app
, в данном случае успешная оплата не гарантируется! - Для канала оплаты
channel = app
илиchannel = mobile_web
получите вебхукaction_required
для перенаправления плательщика в приложение Сбера по URL из параметраredirect.url
.Для канала оплаты
channel = web
вебхукaction_required
не приходит, пункты 5 и 6 сценария можно пропустить. - Для устройств на iOS перенаправьте плательщика по диплинку из параметра
redirect.url
в одно из приложений Сбера (СберБанк Онлайн или СБОЛ) для оплаты. Для выбора приложения используйте следующий алгоритм (см. пример кода):- Открытие ссылки
btripsexpenses://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
budgetonline-ios://sbolpay....
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
ios-app-smartonline://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sberpay://...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sbolpay://...
. - Ожидание 50мс.
- Обновление страницы.
- Переход по ссылке на лендинг Сбер.
- Открытие ссылки
- Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. Сбер отправляет плательщика в ваше приложение или на сайт по диплинку или URL, который был передан в параметре
return_url
. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа или периодически опрашивайте статус транзакции (не чаще чем 1 раз в 5 секунд).Если плательщик откажется от оплаты, то об этом станет известно только по истечении 20 минут — как только закончится срок жизни заказа на оплату через SberPay.
- Сообщите пользователю статус платежа.
Канал оплаты
В зависимости от канала обращения плательщика (мобильное приложение app
, мобильный браузер mobile_web
или десктопный браузер web
), предусмотрены различные наборы параметров, которые необходимо передавать в запросах.
Значение, определяющее канал оплаты, передаётся в запросах session/create
или session/init/payment
в параметре payment_details.internet_banking.sber_pay.channel
.
app
— оплата из мобильного приложения
- Параметр
phone
не является обязательным. При его наличии отправка PUSH-уведомления или СМС не происходит. - Не рекомендуется использовать вызов
sberpay/push
- в этом случае успешная оплата не будет гарантирована. - В вебхуке
action_required
передается значение параметраredirect.url
, на которое нужно перенаправить плательщика.