Skip to Content

Сценарий: СБП

Запрос идентичен сценарию банковской карты — в обоих протоколах. Способ оплаты выбирается параметрами к адресу оплаты из ответа (AuthorizationUrl в XML, authorization.url в JSON), а не полем запроса: без параметров открывается форма карты, ?useSbp=true — СБП, ?payType=Sber&deviceType=Desktop и ?payType=Sber&deviceType=Mobile — SberPay. Один счёт открывается любым способом, пока не оплачен.

SberPay и СБП мок не различает — оба сводятся к QR-флоу, отличается только экран, выбранный по deviceType.

  1. CreateInvoice — так же, как для карты.
  2. Перенаправить пользователя на адрес оплаты с параметром ?useSbp=true.
  3. Клиент оплачивает — сценарий зависит от устройства (ниже) → коллбек с BillingChannel=BankRtp.

Поле payment_method в теле запроса — deprecated и будет снято в 3.0.0. Переданное значение не меняет состав ответа: песочница отдаёт тот же адрес оплаты, только с уже дописанными параметрами. Значение вне перечня sbp / sberpay_desktop / sberpay_mobile по-прежнему отвергается 422 INVALID_PAYMENT_METHOD с перечислением допустимых — опечатка не выглядит как «СБП не работает».

Два сценария оплаты

Страница СБП сама определяет устройство по User-Agent и показывает то, что работает в боевом СБП.

УстройствоЧто видит клиент
ДесктопУниверсальный QR-код. Клиент сканирует его телефоном — камерой или в приложении банка — и подтверждает оплату там. Банк на сайте не выбирается: выбор происходит в приложении
ТелефонКнопка «Оплатить через СБП» и список банков. QR сканировать нечем — тем же устройством это невозможно, — поэтому клиент выбирает банк и переходит в его приложение по диплинку

Посмотреть оба сценария с одной машины: добавьте к адресу страницы СБП ?view=qr или ?view=banks — параметр переопределяет автоопределение устройства. Язык страницы определяется отдельно, по заголовку браузера — см. «Сценарий: банковская карта».

Отличия от сценария карты

JSON — POST /invoices, ровно как для карты
{ "customer": { "type": "undefined_bank_card", "source": "my_source", "country": "RU", "merchant_customer_id": "user_123" }, "order": { "merchant_order_id": "ORDER-001", "price": { "amount": "99.00", "currency": "RUB", "vat_included": true } } } // Ответ тот же; СБП открывается по authorization.url + "?useSbp=true"