По любому вопросу мы в одном клике

Задать вопрос

СБП

Введение

Вы можете принимать платежи через СБП (Систему Быстрых Платежей) Национальной Системы Платежных Карт (НСПК). В этом случае вместо ввода карточных данных на платежной странице в браузере клиент сканирует динамический или статический QR-код и производит оплату. Если используется мобильное приложение, клиент нажимает на кнопку оплаты СБП и переходит по ссылке, выбирая приложение банка для оплаты.

Чтобы включить возможность принимать платежи через СБП, обратитесь в службу технической поддержки.

Оплата по динамическому QR-коду

Оплата на платёжной странице

sequenceDiagram autonumber actor Client as Клиент participant Merchant as Мерчант participant Payment Gateway as Платежный шлюз participant NSPK as НСПК Client->>Merchant: Формирование заказа Merchant->>Payment Gateway: Регистрация заказа Payment Gateway-->>Merchant: orderId, formUrl Merchant-->>Client: Передача URL Client->>Payment Gateway: Запрос платёжной формы Payment Gateway-->>Client: Платёжная форма Client->>Payment Gateway: Запрос QR-кода Payment Gateway->>NSPK: Запрос QR-кода NSPK-->>Payment Gateway: Результат Payment Gateway-->>Client: Отображение QR-кода/кнопки Client->>NSPK: Сканирование QR-кода/нажатие кнопки, оплата NSPK-->>Payment Gateway: Callback с результатом оплаты opt Payment Gateway-->>Merchant: Callback о неуспешной оплате opt Merchant-->>Client: Callback/email end end Payment Gateway->>NSPK: Запрос статуса платежа NSPK-->>Payment Gateway: Callback со статусом платежа Payment Gateway->>Payment Gateway: Статус платежа "Завершён" Payment Gateway-->>Merchant: Callback об оплате opt Merchant-->>Client: Callback/email end opt Merchant->>Payment Gateway: Запрос статуса заказа Payment Gateway-->>Merchant: Статус заказа end
  1. Клиент оформляет заказ и переходит к оплате.
  2. Мерчант отправляет в Платежный шлюз запрос на регистрацию заказа register.do.
  3. В ответе на запрос регистрации Платежный шлюз возвращает уникальный идентификатор заказа в платёжной системе (в параметре orderId) и URL, на который необходимо перенаправить Клиента для получения платёжной формы (в параметре formUrl).
  4. Система Мерчанта передаёт браузеру Клиента redirect на URL (см. Шаг 3).
  5. Браузер Клиента запрашивает платёжную форму по указанному URL.
  6. Браузер отображает платёжную страницу, где Клиент выбирает оплату через СБП.
  7. Платёжная страница запрашивает у Платежного шлюза QR-код.
  8. Платежный шлюз отправляет в НСПК запрос QR-кода.
  9. НСПК возвращает ответ на запрос QR-кода.
  10. Клиенту на платёжной странице отображается QR-код или (в случае мобильного приложения) кнопка для оплаты.
  11. Клиент считывает QR-код при помощи специализированного ПО или (в случае мобильного приложения) нажимает кнопку, после чего производит оплату.
  12. Платежный шлюз получает ответ с результатом оплаты.
  13. Если оплата прошла неуспешно, то уменьшается количество попыток оплаты и Платежный шлюз направляет callback о неуспешной оплате системе Мерчанта.

    Если оплата прошла успешно, Шаги 13–14 пропускаются и выполняется переход на Шаг 15.

  14. Если у Мерчанта настроена отправка уведомлений (callbacks, email), то отправляется уведомление Клиенту о неуспешной оплате заказа. Процесс останавливается.

  15. Платежный шлюз направляет в НСПК запрос о конечном статусе платежа.

  16. НСПК возвращает callback со статусом платежа.

  17. Платежный шлюз переводит заказ в состояние "Завершен".

  18. Платежный шлюз направляет callback об успешной оплате системе Мерчанта.

  19. Если у Мерчанта настроена отправка уведомлений (callbacks, email), то отправляется уведомление Клиенту об успешной оплате заказа.

  20. (Необязательно) Мерчант отправляет запрос статуса заказа getOrderStatusExtended.do в Платежный шлюз.

  21. Платежный шлюз возвращает статус заказа.

Оплата в платежной форме на стороне Мерчанта

sequenceDiagram autonumber actor Client as Клиент participant Merchant as Мерчант participant Payment Gateway as Платежный шлюз participant NSPK as НСПК Client->>Merchant: Формирование заказа Merchant->>Payment Gateway: Регистрация заказа Payment Gateway-->>Merchant: orderId Merchant-->>Client: Предоставление платёжной формы Client->>Merchant: Выбор оплаты через СБП Merchant->>Payment Gateway: Запрос получения QR-кода Payment Gateway->>NSPK: Запрос QR-кода NSPK-->>Payment Gateway: Ответ Payment Gateway-->>Merchant: Ответ на запрос QR-кода Merchant-->>Client:Отображение QR-кода/переход по Deep Link Client->>NSPK: Сканирование QR-кода/оплата в приложении банка NSPK-->>Payment Gateway: Callback с результатом оплаты opt Payment Gateway-->>Merchant: Callback о неуспешной оплате opt Merchant-->>Client: Callback/email end end Merchant->>Payment Gateway: Запрос статуса платежа Payment Gateway-->>Merchant: Callback со статусом платежа opt Merchant-->>Client: Callback/email end Merchant->>Payment Gateway: Запрос статуса заказа Payment Gateway-->>Merchant: Статус заказа
  1. Клиент оформляет заказ и инициирует оплату заказа. См. Идентификация покупателя.
  2. Мерчант отправляет в Платежный шлюз запрос на регистрацию заказа register.do.
  3. В ответе на запрос регистрации Платежный шлюз возвращает уникальный идентификатор заказа в платежной системе (в параметре orderId).
  4. Мерчант перенаправляет Клиента на свою платёжную форму.
  5. Клиент выбирает оплату через СБП.
  6. Мерчант направляет в Платежный шлюз запрос на получение QR-кода sbp/c2b/qr/dynamic/get.do
  7. Платежный шлюз отправляет в НСПК запрос QR-кода.
  8. НСПК возвращает ответ на запрос QR-кода.
  9. Платежный шлюз возвращает в систему Мерчанта ответ на запрос QR-кода.
  10. В зависимости от того, где происходит оплата, действие на данном шаге может быть одним из следующих:

    • На платежной форме Мерчанта в браузере — Мерчант отображает Клиенту QR-код из параметра renderedQr.
    • В WebView с платежной формой Мерчанта, открытом из мобильного приложения — Мерчант открывает в WebView ссылку из параметра payload. При открытии payload через WebView запускается JS СБП виджет, который при выборе банка формирует прямую ссылку Deep Link. После этого можно выполнить переход по Deep Link.
    • В самом мобильном приложении (кнопка оплаты на шаге 5 находится непосредственно в приложении Мерчанта, а не на платежной форме в WebView) — есть несколько вариантов:

      • Мерчант использует SDK СБП виджета, чтобы Клиент мог выбрать банк. В результате выбора SDK виджета сформирует прямую ссылку, и необходимо будет выполнить переход по Deep Link по этой ссылке.
      • Мерчант открывает ссылку из параметра payload в WebView. Так же, как и при использовании платежной формы через WebView, при открытии payload через WebView запускается JS СБП виджет, который при выборе банка также формирует прямую ссылку Deep Link. После этого можно выполнить переход по Deep Link.
  11. Клиент считывает QR-код при помощи специализированного ПО или (в случае мобильного приложения) нажимает кнопку, после чего производит оплату.

  12. Платёжный шлюз получает ответ c результатом оплаты.

  13. Если оплата прошла не успешно, то уменьшается количество попыток оплаты и Платежный шлюз направляет callback о неуспешной оплате системе Мерчанта.

    Если оплата прошла успешно, Шаги 13–14 пропускаются и выполняется переход на Шаг 15.

  14. Если у Мерчанта настроена отправка уведомлений (callbacks, email), то отправляется уведомление Клиенту о неуспешной оплате заказа.

  15. Мерчант запрашивает у Платёжного шлюза статус платежа sbp/c2b/qr/dynamic/status.do.

  16. Платежный шлюз возвращает callback со статусом платежа.

  17. Если у Мерчанта настроена отправка уведомлений (callbacks, email), то отправляется уведомление Клиенту об успешной оплате заказа.

  18. Мерчант отправляет запрос статуса заказа getOrderStatusExtended.do в Платежный шлюз.

  19. Платежный шлюз возвращает статус заказа.

Идентификация покупателя

Для идентификации Покупателя перед оплатой заказа Мерчант:

Далее генерируется динамический QR-код для оплаты заказа (шаг 2) с данными Покупателя, по которому должна быть произведена оплата.

При обработке оплаты ПШ сверяет данные, указанные при генерации QR-кода:

с данными Покупателя. Если они совпадают (Покупатель=Плательщик), то ПШ подтверждает возможность оплаты заказа.

В случае несовпадения хотя бы одного из указанных параметров оплата отклоняется.

В случае если ни один из трех параметров (ФИО, номер телефона, БИК) Плательщика не указан при запросе регистрации заказа (шаг 2), параметры не передаются и регистрация и оплата заказа производятся без предварительной идентификации Покупателя.

Оплата через сервис "мгновенный счёт"

Оплата через сервис "мгновенный счёт" возможна как на платёжной странице, так и на стороне Мерчанта.

При этом сценарий оплаты аналогичен сценарию Оплата на платёжной странице.

При включенной функциональности отображаемый Клиенту в мобильном устройстве QR-код также является ссылкой. Для проведения платежа Клиент не сканирует QR-код, а нажимает на него, после чего открывается онлайн-банк.

По запросу мерчанта использование функционала мгновенного счёта может быть заменено на использование виджета НСПК. В данном случае на мобильном устройстве при выборе оплаты по СБП не будет отображаться QR-код, а сразу откроется ссылка с выбором банка для оплаты.

Отмена и возврат средств

Отмена запроса на оплату

sequenceDiagram autonumber actor Client as Клиент participant Merchant as Мерчант participant Payment Gateway as Платежный шлюз participant NSPK as НСПК Client->>Merchant: Желает отменить оплату Merchant->>Payment Gateway: Запрос отмены QR Payment Gateway->>Payment Gateway: Проверка возможности отмены Payment Gateway->>NSPK: Запрос статуса заказа opt NSPK-->>Payment Gateway: Ответ. Статус=ACWP Payment Gateway->>Payment Gateway: Статус заказа = Завершен Payment Gateway-->>Merchant: Ответ с ошибкой отмены end opt NSPK-->>Payment Gateway: Ответ. Статус=RCVD Payment Gateway-->>Merchant: Ответ с ошибкой отмены end NSPK-->>Payment Gateway: Ответ. Статус=RJCT или NTST Payment Gateway->>Payment Gateway: Статус QR = REJECTED_BY_USER Payment Gateway-->>Merchant: Ответ с успешной отменой opt NSPK-->>Payment Gateway: Уведомление об успешной оплате NSPK-->>Payment Gateway: Ответ. Статус=ACWP Payment Gateway->>NSPK: Запрос на автовозврат NSPK-->>Payment Gateway: Уведомление об успешном возврате end
  1. Клиент желает отменить заказ/оплату по уже созданному QR-коду.
  2. Мерчант отправляет в Платежный шлюз запрос на отмену QR-кода sbp/c2b/qr/dynamic/reject.do, передавая mdOrder и qrId.
  3. Платежный шлюз проверяет возможность отмены QR-кода.
  4. Платежный шлюз запрашивает статус QR-кода.
  5. НСПК присылает ответ: Статус QR = ACWP (см. Статусы заказа).

    Если в ответе пришел другой статус, переход на Шаг 8.

  6. Платежный шлюз присваивает заказу статус = Завершен.

  7. Платежный шлюз отправляет ответ с ошибкой отмены.

  8. НСПК присылает ответ: Статус QR = RCVD (см. Статусы заказа).

    Если в ответе пришел другой статус, переход на Шаг 10.

  9. Платежный шлюз отправляет ответ с ошибкой отмены.

  10. НСПК присылает ответ: Статус QR = RJCT или NTST (см. Статусы заказа).

  11. Платежный шлюз обновляет статус QR-кода: Статус QR=REJECTED_BY_USER.

  12. Платежный шлюз отправляет ответ с успешной отменой.

  13. НСПК присылает уведомление об успешной оплате

  14. НСПК присылает ответ со статусом QR = ACWP (см. Статусы заказа).

  15. Платежный шлюз запрашивает автовозврат.

  16. НСПК уведомляет Платежный шлюз об успешном возврате.

После отмены QR-кода заказ снова можно оплачивать любыми, ранее доступными способами оплаты, в том числе вновь начать СБП C2B оплату регистрацией нового QR-кода.

Статусы заказа

Статус Описание
NTST NOT STARTED. Выставляется при создании QR-кода
RCVD RECIEVED. Операция в обработке, Клиент отсканировал QR-код
ACWP ACCEPTED. Операция завершена, оплата прошла успешно
RJCT REJECTED. Операция отклонена. Считается как попытка оплаты

Возврат денежных средств через API

sequenceDiagram autonumber participant Merchant as Мерчант participant Payment Gateway as Платежный шлюз participant NSPK as НСПК Merchant->>Payment Gateway:1. Запрос на проведение возврата Payment Gateway->>NSPK:2. Запрос возможности возврата NSPK-->>Payment Gateway:3. Ответ Payment Gateway->>NSPK:4. Запрос на возврат NSPK-->>Payment Gateway:5. Ответ
status=[PENDING, REJECT] alt если статус REJECT Payment Gateway-->>Merchant:6. Ошибка выполнения возврата else если статус Pending Payment Gateway->>Payment Gateway:7. Ожидание финального статуса NSPK-->>Payment Gateway:8. Callback-уведомление с результатом возврата
status=[ACCEPTED, REJECT] alt если статус ACCEPTED Payment Gateway-->>Merchant: 9. Успешное выполнение возврата else если статус REJECT Payment Gateway-->>Merchant: 10. Ошибка выполнения возврата else если не получено callback-уведомление с результатом возврата за 10 сек Payment Gateway-->>Merchant: 11. Возврат в процессе end opt Мерчант может получить статус возврата, выполнив аналогичный повторный запрос Merchant->>Payment Gateway: 12. Запрос на проведение возврата Payment Gateway->>Payment Gateway: 13. Статус заказа
PENDING Payment Gateway->>NSPK: 14. Запрос статуса возврата NSPK-->>Payment Gateway: 15. Ответ
status=[ACCEPTED, REJECT, PENDING] Payment Gateway->>Payment Gateway: 16. Обновление статуса заказа alt Если статус ACCEPTED Payment Gateway-->>Merchant: 17. Успешное выполнение возврата else Если статус REJECT Payment Gateway-->>Merchant: 18. Ошибка выполнения возврата else Если статус PENDING Payment Gateway-->>Merchant: 19. Возврат в процессе end end end
  1. Мерчант отправляет в Платежный шлюз запрос на возврат денежных средств refund.do.
  2. Платежный шлюз отправляет в НСПК запрос возможности возврата оплаты.
  3. НСПК отвечает на запрос возможности возврата оплаты успешно.
  4. Платежный шлюз отправляет в НСПК запрос на возврат оплаты.
  5. НСПК в ответ присылает в Платежный шлюз статус возврата: PENDING или REJECT.
    Если статус возврата REJECT, то далее Шаг 6.
    Если результат возврата PENDING, то далее Шаг 7.
  6. Платежный шлюз возвращает Мерчанту ответ с ошибкой и соответствующим сообщением в параметре errorMessage.
  7. Платежный шлюз ожидает от НСПК финальный статус возврата.
  8. НСПК присылает в Платежный шлюз callback с результатом возврата: ACCEPTED или REJECT.
    Если статус ACCEPTED, то далее Шаг 9.
    Если статус REJECT, то далее Шаг 10.
    Если в течение интервала времени, установленного в настройках Платежного шлюза, не получено callback-уведомление, то далее Шаг 11.
  9. Платежный шлюз возвращает Мерчанту ответ с кодом ошибки 0. Выполнение сценария завершается.
  10. Платежный шлюз возвращает Мерчанту ответ с ошибкой и соответствующим сообщением в параметре errorMessage. Выполнение сценария завершается.
  11. Платежный шлюз возвращает Мерчанту ответ с ошибкой и соответствующим сообщением в параметре errorMessage. В этом случае для получения статуса возврата выполняются следующие шаги с Шага 12.
  12. Мерчант повторно отправляет в Платежный шлюз запрос на возврат денежных средств refund.do.
  13. Платежный шлюз, получив повторный запрос, проверяет статус возврата - PENDING.
  14. Платежный шлюз запрашивает статус возврата в НСПК.
  15. НСПК возвращает ответ на запрос статуса: ACCEPTED, REJECT, PENDING.
  16. Платежный шлюз обновляет статус возврата.
    Если статус ACCEPTED, то далее Шаг 17.
    Если статус REJECT, то далее Шаг 18.
    Если статус PENDING, то далее Шаг 19.
  17. Платежный шлюз возвращает Мерчанту ответ с кодом ошибки 0.
  18. Платежный шлюз возвращает Мерчанту ответ с ошибкой и соответствующим сообщением в параметре errorMessage.
  19. Платежный шлюз возвращает Мерчанту ответ с ошибкой и соответствующим сообщением в параметре errorMessage.

Возврат через Личный кабинет

Возможен частичный или полный возврат денежных средств на карту покупателя в случае его отказа от получения товара (услуги) или его возврата. Операция возврата денежных средств выполняется после списания денежных средств со счета покупателя. При операции возврата есть возможность указать сумму меньше или равную сумме, списанной со счета покупателя. Сумма возврата указывается в копейках. Операция применима к заказам в состояниях Deposited и Refunded.

Операция частичного возврата средств доступна сколько угодно много раз, пока не возвращена вся сумма заказа.

Данная функция доступна Мерчантам при наличии соответствующих прав (по согласованию с банком). Кнопка возврата доступна пользователям с соответствующим разрешением.

Описание возврата в личном кабинете доступно здесь.

Автовозврат денежных средств

sequenceDiagram autonumber participant Merchant as Мерчант participant Payment Gateway as Платежный шлюз participant NSPK as НСПК autonumber Payment Gateway->>Payment Gateway:Изменение статуса заказа: DECLINED Payment Gateway->>NSPK:Запрос статуса операции
СБП C2B NSPK-->>Payment Gateway:Ответ
status=ACWP Payment Gateway->>NSPK:Запрос на возврат
по операции
СБП C2B NSPK->>NSPK: Выполнение возврата NSPK-->>Payment Gateway: Уведомление
о финальном статусе возврата Payment Gateway->>Payment Gateway: Сохранение события
в истории заказа Payment Gateway-->>Merchant: Callback-уведомление
с информацией о возврате Merchant-->>Payment Gateway: Запрос расширенной информации о заказе
getOrderStatusExtended.do. Payment Gateway-->>Merchant: Ответ
  1. Статус заказа изменяется на DECLINED.
  2. Платежный шлюз запрашивает статус операции СБП C2B в НСПК.
  3. НСПК возвращает в ответе статус операции status=ACWP.
  4. Платежный шлюз запрашивает выполнение возврата по операции СБП C2B.
  5. В НСПК выполняется возврат по операции.
  6. В Платежный шлюз возвращается уведомление о финальном статусе возврата.
  7. Платежный шлюз сохраняет событие возврата в историю заказа.
  8. Платежный шлюз отправляет Мерчанту callback-уведомление с информацией о возврате (содержит тип операции operation=refund и признак успешного выполнения операции status=1).
  9. Мерчант запрашивает статус заказа, направляя в Платежный шлюз запрос getOrderStatusExtended.do.
  10. Платежный шлюз возвращает информацию о заказе.

Возврат заказа, оплаченного по КС

Для возврата заказа, оплаченного по КС, используется стандартный сценарий и веб-методы, см. описание.

Двухстадийная оплата и СБП

Заказ считается двухстадийным, если для его регистрации был использован метод registerPreAuth.do.

СБП не поддерживает двухстадийные платежи, но оплата двухстадийных заказов по СБП через Платежный шлюз возможна. Для этого требуется отдельное разрешение в Платежном шлюзе. Это разрешение не сделает платеж двухстадийным, а только даст возможность оплатить двухстадийный заказ с помощью СБП.

Двухстадийный заказ, оплаченный с помощью СБП, сразу будет завершен — его статус будет DEPOSITED, а не APPROVED, как при обычной двухстадийной оплате. При этом средства будут сразу списаны со счета Клиента, для этого не нужно выполнять завершение платежа в Личном кабинете или вызывать метод deposit.do.

Для отмены такого заказа используется функция возврата в Личном кабинете или метод refund.do — см. Возврат денежных средств.

Пример

На автозаправке используется двухстадийная оплата, чтобы холдировать средства на счете клиента, а затем списать ту сумму, на которую действительно был залит бензин (она может отличаться от предавторизованной).

В приложении автозаправки клиент может оплачивать заказы картой и СБП. Заранее неизвестно, какой способ оплаты выберет клиент. Поэтому заказ регистрируется как двухстадийный, и после оплаты картой выполняется стандартное подтверждение или отмена заказа. А если клиент решит оплатить заказ с помощью СБП, то средства сразу списываются со счета (/deposit.do не требуется), и для корректировки суммы используется /refund.do.

Оплата по динамическому УПК

Для работы с универсальным QR-кодом (универсальным платежным кодом, УПК) обратитесь к контактному лицу в Банк для включения соответствующей настройки. При включённой настройке доступна оплата по СБП и с помощью Цифрового рубля.

Интеграция этого платежного метода аналогична интеграции СБП. Описание схем подключения доступно в разделе Оплата по динамическому QR-коду.

API методы

Описание API методов смотрите по ссылке.

Callback-уведомления

В сторону Мерчанта направляется callback-уведомление в следующих случаях:

При создании связки

В сторону Мерчанта направляется callback-уведомление при создании связки без оплаты или с оплатой.

В случае неудачи при создании связки без оплаты или создании связки с оплатой в сторону Мерчанта направляется callback-уведомление с кодом ответа от НСПК в параметре sbp.c2b.operation.nspkCode.

Пример отправки callback-уведомления при создании связки, status=1

https://test.com/callback?amount=1000&orderNumber=136007&checksum=4BE878188646A0BEEA459F14FF9D9BEFE09D25E3945B98959BBC7B9D6B6941D0&mdOrder=03013b49-ecba-7792-806a-03f80203b80c&operation=bindingCreated&refundedAmount=0&memberId=100000000008&status=1

Если в запросе на получение QR-кода (get.do) мерчант передавал параметры subscriptionServiceName (наименование типа предоставляемой услуги для привязки счета) и/или subscriptionServiceId (идентификатор типа предоставляемой услуги для привязки счета), то callback-уведомление также будет содержать эти параметры.

При отказе оплаты по связке

В случае получения отказа оплаты по связке в сторону Мерчанта направляется callback-уведомление с кодом ответа от НСПК в параметре sbp.c2b.operation.nspkCode.

В истории заказа сохраняется информация об отказе.

Пример отправки callback-уведомления при отказе оплаты по связке, status=0, sbp.c2b.operation.nspkCode=RQ05031

https://test.com/callback?sbp.c2b.operation.nspkCode=RQ05031&amount=10000&orderNumber=169008&mdOrder=036d42d3-78c3-77a9-af76-49fa00a3e120&operation=deposited&status=0

Если в запросе на получение QR-кода (get.do) мерчант передавал параметры subscriptionServiceName (наименование типа предоставляемой услуги для привязки счета) и/или subscriptionServiceId (идентификатор типа предоставляемой услуги для привязки счета), то callback-уведомление также будет содержать эти параметры.

Коды ответа от НСПК

Код ответа Описание
RQ05031 Отказ банка-Плательщика. Привязка счета не найдена
RQ05032 Отказ банка-Плательщика в проведении платежа
RQ05060 Недостаточно денежных средств для проведения операции
RQ05061 Превышен лимит по сумме операций по СБП
RQ05062 Превышен лимит по количеству операций по СБП
RQ05063 Подозрение в мошенничестве
RQ05064 Выполнение операций в данной категории ТСП запрещено
RQ05065 Счет заблокирован
RQ05066 Счет закрыт
RQ05067 Выполнение операции запрещено по требованию законодательства
Категории:
eCommerce API V1
Категории
Результаты поиска