Мы все уже освоились с «переводами по телефону» друг другу, но пришла пора поговорить про оплату через СБП. Тем более что эту функцию реализовали уже больше 60 российских банков, то есть новый инструмент для платежа смартфоном есть теперь у большинства жителей страны.

В этой статье я хочу рассказать, что такое C2B-операции в Системе быстрых платежей:

  • сценарии со стороны клиента

  • с точки зрения реализации

  • и немного – про выгоду

Итак:

  • C2B-операция - это платеж клиента-физика в пользу бизнес-клиента за товар или услугу. 

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

Принцип такой: данные о предстоящем платеже хранятся в ОПКЦ (Операционно-Процессинговый и Клиринговый Центр) СБП. Для платежа эти данные (назовем это платежной ссылкой) должны попасть в смартфон клиента, чтобы ему осталось нажать “ОК”, а потом банк плательщика запустит процесс.

Исторически первым механизмом транспорта этих платежных данных был QR-код. Продавец показывает картинку, покупатель сканирует и “ок, согласен”. Поэтому большинство примеров здесь как раз с QR-кодом.

Котик сканирует QR-кодик
Котик сканирует QR-кодик

Какие сценарии можно реализовать? 

QR-наклейка на кассе

Распечатанная наклейка с QR-кодом, наклеенная на кассу, на билборд, на автобус, на колонку АЗС, показанная на большом экране на конференции и т.п. Покупатель сканирует камерой QR-код, у него открывается приложение банка, в котором видны детали платежа:

  • кому платим - всегда;

  • за что платим и сумма - опционально, если продавец указал это при генерации QR-кода;

  • если сумма не указана - её придется ввести вручную.

Этот вариант подходит тем, кто не может генерировать QR’ы под каждый платеж, но клиенты готовы вводить сумму. Если вы читаете эту статью с настольного компьютера, вот пример: на сайте благотворительного фонда Хабенского есть QR-код, который вы можете отсканировать телефоном и при желании пожертвовать сотню. https://bfkh.ru/help/qr-kod.php

Фото из facebook Андрея Ковригина
Фото из facebook Андрея Ковригина

Динамический QR на экране.

Если у продавца есть под рукой экран (смартфон или настольный компьютер), то он может генерировать одноразовые QR’ы под каждый платеж, и тогда в каждом коде уже точно будет сумма. Покупателю остается только проверить, кому платит, и нажать “ОК”.

QR-наклейка на кассе, но с индивидуальной суммой.

Что делать, если экрана рядом с кассой нет, но хочется упростить каждому покупателю UX на пару нажатий? Можно к долговременному QR-коду на наклейке прикрутить одноразовые кассовые ссылки под конкретную покупку, чтобы покупатель не вводил сумму. Сложнее реализовать, но проще платить. И экономия на наклейках и экранах.

Привязка счета (подписка).

Это долговременное разрешение конкретному продавцу отправлять безакцептные запросы на списание денег с моего счета. Например, такси: я один раз дал разрешение списывать оператору такси плату с моего счета, и по окончании поездки просто выхожу из машины, не доставая кошелек или телефон, ничего не подтверждая. Вариант посложнее - кофейня, где я идентифицируюсь по карте лояльности, по лицу или еще как-то. То есть я не достаю смартфон вообще - меня каждое утро дают кофе и при этом еще называют по имени. Или пункт выдачи заказа, где я назвал код заказа, примерил заказ и всё. Деньги спишутся, когда я сказал сотруднику “мне подошло, беру”.

Однако платежная ссылка (данные о платеже) может попадать в смартфон покупателя не только по воздуху через QR-коды. Ссылку можно зашить в самую дешевую NFC-метку, которую тоже приклеить где-то на кассе. А в остальном UX такой же.

Что кроме QR-кода?

А какие сценарии оплаты есть для онлайн-платежей, когда нет физической кассы и нет QR-кода? Все просто - платежная ссылка может быть на мобильном сайте или в мобильном приложении. Например, я набрал товары в корзину на сайте, нажал “перейти к оплате” и вижу варианты: ввести номер карты; кто-то-Pay; СБП. Кнопка “СБП” - это ссылка, которая откроет на смартфоне мобильный банк и все как описано раньше - я увижу сумму, назначение платежа, получателя и нажму “ОК”. Если вы читаете эту статью с мобильного, то вот пример реализации: на сайте того же Фонда Хабенского https://bfkh.ru/help пользователь может кликнуть по плашке “Оплатить по QR-коду СБП” и пожертвовать фонду Хабенского еще сотню.

Абсолютно то же самое - в мобильном приложении интернет-магазина. При этом покупатель при платеже не выходит из доверенной зоны: за пределы приложения магазина и приложения банка. Есть еще пара дополнительных сценариев:

  • Возврат платежа. Он тоже быстрый, почти мгновенный.

  • Диспут, когда полюбовно о возврате договориться не удалось и покупатель жалуется в свой банк на недобросовестного продавца или некачественный товар.

Вот теперь с пользовательскими сценариями все, и можно поговорить про реализацию.

Реализация

Быстро сказка сказывается, да долго дело делается.

Давайте сначала напомню про участников операции:

Плательщик - физическое лицо, покупатель, который хочет за что-то заплатить. Владеет счетом в Банке Плательщика. У него есть телефон, на котором установлен банк-клиент (приложение) Банка Плательщика и какой-то сканер QR-кодов.

ТСП, продавец - торгово-сервисное предприятие; лицо, которое продает товар или оказывает услугу и ждет за это оплату. Получатель платежа. Держит счет в Банке Получателя.

Агент ТСП - организация, оказывающая Продавцу информационно-технические услуги. Например, взаимодействие по API с ОПКЦ СБП. Как правило, роль Агента ТСП исполняет Банк Получателя.

ОПКЦ СБП - Операционно-процессинговый и клиринговый центр Системы быстрых платежей - организатор информационного обмена между Банком Плательщика, Банком Получателя, Банком России и ТСП. ОПКЦ СБП выступает Национальная система платежных карт (НСПК).

Банк России - Центральный банк РФ, который управляет корреспондентскими счетами банков.

C2B-платеж состоит из трех фаз, две из которых подготовительные, а третья - сам платеж покупателем.

  • Регистрация продавца в системе,

  • Генерация платежной ссылки и/или генерация QR-кода,

  • Сам платеж.

1. Регистрация ТСП

Ничего сложного, к тому же это единовременная операция. Используя REST API, в базе ОПКЦ СБП регистрируется юридическое лицо, ИП или самозанятый. Сохраняются ИНН, ОГРН, название, адреса и другие реквизиты, необходимые для дальнейших платежей. Если у продавца больше одной точки продаж, то можно зарегистрировать все эти точки в связке с организацией, указав про них:

  • название, “имя на вывеске”

  • адрес

  • телефон

  • тип деятельности (mcc)

Опустим подробности и будем считать, что у нас есть просто “продавец”. После регистрации Продавец получает идентификатор, на который будут завязаны все дальнейшие действия.

2. Создание платежной ссылки

Продавец опять дергает наш API для создания платежной ссылки (многоразовой, которую можно распечатать в виде QR-кода и наклеить на кассе; или одноразовой, под конкретную покупку), записывая в базу следующее:

  • id продавца,

  • номер счета и банк, где он ведется,

  • тип запрашиваемой ссылки - одноразовая или многоразовая,

  • сумму и назначение платежа (опционально),

  • TTL - время жизни ссылки (опционально),

  • redirect URL - ссылку для возврата из приложения банка обратно в приложение продавца (опционально).

В ответ ему возвращается платежная ссылка, главное в которой - идентификатор. Можно получить картинку QR-кода, хотя обычно саму картинку генерируют на стороне продавца, банка или агента.

Кстати, регистрация ТСП и платежной ссылки – это один из механизмов защиты от мошенника. Если мошенник сам сгенерирует QR и подсунет его покупателю, то совершить транзакцию по такой ссылке не получится: СБП «не знает» эту ссылку и подложного получателя денег.

Итак, у продавца есть ссылка или QR на экране или QR на наклейке не кассе. Кажется, все готово к приему покупателя!

3. Сам платеж

Шаг 1. Покупатель сканирует QR-код (или NFC-метку) телефоном (камерой в приложении банка, обычным приложением “камера” или специальным “сканер штрих-кодов”). Смартфон покупателя, разобрав QR-код (NFC-метку), получает ссылку вот такого вида:

https://qr.nspk.ru/AS100001ORTF4GAF80KPJ53K186D9A3G?type=01&bank=100000000007&crc=0C8A

Если смартфон получил ссылку из браузера или из приложения, еще проще. Смартфон знает, что ссылки, начинающиеся на qr.nspk.ru, нужно открывать в приложении банка, и перекидывает ссылку ему. Банк плательщика из этой строки получает:

  • идентификатор ссылки

  • тип ссылки, в данном случае - долговременный типа “наклейка на кассе”

  • id банка получателя (продавца)

  • контрольная сумма.

По большому счету, здесь играет роль только идентификатор.

Шаг 2. Банк плательщика обращается к ОПКЦ СБП (используя тот же REST API), просит дать всю информацию о ссылке с этим идентификатором и получает детали:

  • идентификаторы продавца и его банка,

  • наименование продавца и его “название на вывеске”,

  • адрес и телефон,

  • при наличии - сумму и назначение платежа.

Шаг 3. Банк плательщика перекидывает эту информацию на смартфон покупателя, покупатель читает и принимает решение - платить или нет (если не было суммы - то еще вводит сумму).

Шаги 1-3
Шаги 1-3

Шаг 4. Банк плательщика отправляет в ОПКЦ распоряжение на перевод, в котором есть информация о продавце и о покупке, и в ответ получает квитанцию: ОПКЦ готов обрабатывать это распоряжение (или не готов - нарушена структура, не пройдены проверки, у банка отозвана лицензия, это одноразовая ссылка и она уже была оплачена раньше и т.д.). Когда распоряжение отправлено в ОПКЦ СБП - обратной дороги нет и от банка плательщика больше ничего не зависит.

Шаг 5. ОПКЦ СБП обогащает полученное поручение дополнительными данными и перенаправляет запрос в банк получателя для проверки: готов ли он принять это платеж? Банк получателя говорит “готов, высылайте”.

Шаг 6. ОПКЦ СБП формирует поручение в Банк России на перевод: перевести с кор.счета банка плательщика на кор.счет банка получателя указанную сумму.

Шаг 7. Осталось немного, но самое приятное. ОПКЦ СБП отправляет банкам плательщика и получателя уведомления об успешной операции. Банки должны увеличить и, соответственно, уменьшить баланс на счетах продавца и покупателя. Банковское приложение покупателя показывает ему, что платеж прошел.

Шаг 7.1 Если клиент начинал оплату в мобильном приложении интернет-магазина и был переброшен в банковское приложение - его нужно вернуть обратно в приложение магазина. Если он сканировал QR-код камерой - то он так и останется в приложении банка.

Шаг 8. Покупатель видит, что оплата прошла, а продавец? ОПКЦ СБП отправляет продавцу callback с подтверждением операции, чтобы он отпустил покупателя с товаром.

Кажется, всё.

Шаги 4-8
Шаги 4-8

Шаг 9, опциональный. Если доставить уведомление об успешной операции в банк не получилось (даже с учетом переповторов), банк может запросить статус операции, дернув ОПКЦ СБП с помощью того же API.

Бенефиты

Продавец с каждого полученного стольника тратит немного на работу с этими деньгами. Если наличные - платит за инкассацию. Если карточный платеж - платит эквайринговую комиссию (грубо говоря - 1,5-2,5%). Если СБП - тоже комиссию. Но в СБП она 0,4% - 0,7%. И малому и среднему бизнесу до конца года ее возвращают – то есть сейчас вообще ноль. Если продавец считает свои косты, то он будет поддерживать все виды приема денег, но также продвигать низкозатратный. А если поймет, что при использовании оплаты СБП он на рубль меньше тратит (то есть на рубль больше зарабатывает) - он будет давать бонус или скидку. Кешбэк может быть не только со стороны банка, но и со стороны магазина.

Это Система БЫСТРЫХ платежей - то есть деньги переводятся на счет продавца раньше, чем покупатель залочил и убрал телефон.

Можно оплачивать смартфоном без NFC (таких сейчас у населения примерно половина), и есть множество людей, кто очень хотел бы платить смартфоном – но позволить NFC себе не могут. Можно платить в случае, если кассы нет рядом от слова совсем - не выходя из машины на АЗС, прямо через стекло; стоя в пробке рядом с билбордом, на котором напечатан QR-код.

Если платите на сайте, не нужно вводить данные карты и опасаться её компрометации.

А если сделали привязку счета для рекуррентных платежей (подписку) - то управлять этой подпиской (и вообще посмотреть, какие у меня есть подписки) можно в приложении своего банка. С картами такой опции нет и не было – «где карту привязывали, туда и идите».

Комментарии (24)


  1. mmMike
    03.11.2021 10:22
    +1

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

    • Название ТСП, “имя на вывеске”. А кто решил, что 35 символов на это достаточно?

    • А почему банк плательщик не может по QRC узнать ОГРН/ИНН того кому клиент переводит C2B средства ДО, того как платеж совершен? Кто решил, что имени юр.лица достаточно.

    Очень хочется узнать обоснования, а не отписку "бизнесу это не надо".


    1. ValeryGL Автор
      03.11.2021 18:46

      Название мерчанта на вывеске сделали по аналогии с карточными платежами, так было удобно банкам-эквайрерам.

      ИНН, ОГРН, а также счет и банк обслуживания действительно не отдаются банку плательщика при сканировании. Вы думаете, это нужно клиенту-физику до платежа? Вот плательщику-юрлицу это нужно и он это получит в B2B-платеже, но это отдельная история.

      Тем не менее, я рад Вас видеть снова среди первых комментаторов!


      1. mmMike
        04.11.2021 08:29
        +1

         сделали по аналогии с карточными платежами, так было удобно банкам-эквайрерам.

        Оплата по картам и оплата по СБП вообще мало пересекаются. Это разное ПО и разные правила. Чего уж тогда не ограничили an22 (поле 43 ISO 8583) для "полной совместимости" (сарказм)

        Вы думаете, это нужно клиенту-физику до платежа?

        Физику может и не особо нужно. А вот банку плательщику ДО того как выполнится B05 это не помешает. Например в системах фрод мониторинга банка:

        • Защитить своих клиентов от платежей в ИП/ООО/.. типа "Рога и копыта".

        • Контроль по законам связанным с "спонсирование терроризма" и пр.

        • Определить какой ЭБД{107} выставить в B05

        По факту, сейчас, банк плательщик узнает кому клиент средства перечислил уже только после перечисления. Когда дергаться поздно.

        А самое забавное, что есть уже V3 запроса получения инфы по QRC и ничего не стоило туда добавить ОГРН/ИНН (как это сделали для QRC с "привязкой счета"). Но упорно НСПК не добавляет это без сомнения полезную информацию для банка плательщика.

        Все равно, рак на горе свиснет и ЦБ наконец сообразит, что переводы C2B на счет ИП однодневки - это способ и мошенничества и спонсирования "нежелательных" организаций и обязует либо СБП либо банки контролировать эти переводы (сумма/возможность).


  1. nin-jin
    03.11.2021 12:01
    +1

    А что насчёт пользователей из других стран? Они смогут оплатить таким образом?


  1. oraclejob
    03.11.2021 12:03

    Это Система БЫСТРЫХ платежей - то есть деньги переводятся на счет продавца раньше, чем покупатель залочил и убрал телефон

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

    А если поймет, что при использовании оплаты СБП он на рубль меньше тратит (то есть на рубль больше зарабатывает) - он будет давать бонус или скидку

    Но он не дает. Вывод - возможность платить QR-кодом есть, но смысла в этом сейчас нет.


    1. ValeryGL Автор
      03.11.2021 12:05

      есть еще время прихода информации из банка до кассового ПО

      Зачем ждать взаимодействие банка и кассового ПО? ОПКЦ сам напрямую отправляет callback в кассовое ПО, см шаг 8


      1. oraclejob
        03.11.2021 12:40

        Я лишь описываю реалии, когда оплата проходит по бумажному коду у кассы.


        1. GKONNOV
          03.11.2021 19:43
          +1

          По честному, рынок еще учится поддерживать новые схемы оплаты. При взаимодействии с НСПК ответы идут моментально. Банки могут делать моментальные уведомления также, но у рынка разный опыт. Такие особенности рынка наверняка выровняются в ближайший год. А в каком магазине была задержка? Можно будет понять банк и подкорректировать сценарий.

          В нашем случае для касс мы советуем использовать ограниченный срок жизни QR и опрашивать статус до 5 минут раз в секунду. Тогда никаких задержек быть не должно после оплаты.


          1. oraclejob
            04.11.2021 09:36

            Это была пиццерия, ее банк тиньков, если правильно запомнил. Еще раз повторюсь, код был на бумажке у кассы, никакого динамического кода не предусматривалось, сумму вводил руками. Подозреваю, там нет постоянного полинга, ибо трафик, и, если прикинуть масштабирование, банку тоже такой постоянный искусственный DDoS от миллиона точек совсем не нужен. Есть ли там SSE под капотом - большой вопрос.


  1. Voila2000
    03.11.2021 15:46

    Понятно что на Шаге 4 надо проверять правильность составления распоряжения, но почему бы не проверить
    "у банка отозвана лицензия, это одноразовая ссылка и она уже была оплачена раньше и т.д."
    на втором Шаге?
    А еще можно проверить остаток/лимит на счете клиента и остаток банка плательщика в РКЦ.


    1. ValeryGL Автор
      03.11.2021 16:00

      Верно, на втором шаге (получение информации по предстоящему платежу) покупатель получит отказ, если на этот момент истек TTL для ссылки/QR или если это попытка повторно оплатить одноразовую ссылку.

      Но проверять состояние счетов продавца и самого банка в этот момент рано - между первой и второй диаграммами может пройти какое-то время, а за это время много чего может случиться.


  1. inkelyad
    03.11.2021 19:20

    СПокупатель сканирует QR-код (или NFC-метку) телефоном (камерой в приложении банка, обычным приложением “камера” или специальным “сканер штрих-кодов”). Смартфон покупателя, разобрав QR-код (NFC-метку), получает ссылку вот такого вида:

    Тот QR-код, что на чеках, похоже, специально не стали делать url-ом. А тут почему сделали? Злоумышленник же может просто наклеить свой QR-код поверх настоящего и увести потенциального покупателя на фишинговый сайт. Где, не разобравшись, можно ввести что-нибудь вроде 'введите код из SMS, пришедшей на телефон'.

    Почему нельзя было сделать так, чтобы данные кода был в формате, который понимался бы исключительно предназначенным для этого приложением? Хотя бы при помощи регистрации предназначенной для этого URI схемы:

    nspkpayto:AS100001ORTF4GAF80KPJ53K186D9A3G?type=01&bank=100000000007&crc=0C8A

    или даже использования существующей payto


    1. GKONNOV
      03.11.2021 19:50

      Нестандартная ссылка - иллюзорная защита от фишинга. В случае СБП мы советуем всем сканировать QR именно из банковского приложения. Тогда фишинг невозможен.
      В любом случае, клиенты привыкают к переадресации в приложение банка. Если его нет, то сайт\ссылка странные и это нестандартный сценарий. Даже если бы обычной ссылки в QR от НСПК не было, то ничего не мешало бы размещать ссылки на левые сайты в мошеннических QR. Пользователь либо будет видеть, что это не банковское приложение, либо нет.


      1. inkelyad
        03.11.2021 20:02

        В любом случае, клиенты привыкают к переадресации в приложение банка.

        Это работает, если приложение уже стоит. А что произойдет, если нет? Жертва (которую уболтали оплатить при помощи QR) успешно увидит в браузере чего-нибудь похожее на интерфейс оплаты, который будет нарисован мошенниками.


        1. GKONNOV
          03.11.2021 20:12

          Логично, но такая штука провисит до первой оплаты в ритейле. У клиента сразу возникнет вопрос - я оплатил, а где товар? Кассиру придется объясниться что там за левый QR на кассе. :)


          1. inkelyad
            03.11.2021 20:21

            Так оно будет не на кассе, а вот в сценарии "помоги фонду". Будут заговаривать зубы или просто делать листовку с фишинговым QR/наклеивать свой поверх настоящей. N-ное число людей попадется... Лучше бы проектировать все это сразу так, чтобы это N было как можно меньше.


            1. GKONNOV
              03.11.2021 20:27
              +1

              Это от СБП, к сожалению, не зависит, т.к. сделать листовку с левым сайтом и так могут и уговорить ввести данные карты там.

              В СБП плательщики привыкают платить из приложения своего банка. Альтернативный сценарий должен сразу настораживать.


    1. GKONNOV
      03.11.2021 19:50

      Сейчас в ссылке НСПК уже размещает список банков, а будет и платежная форма с прямыми ссылками на каждое банковское приложение. Это облегчает обучение пользователей.


      1. inkelyad
        03.11.2021 20:07

        По фишинговой ссылке будет солидно выглядящая страничка со ссылками на приложения-зловреды. Как бы еще хуже не стало. Особенно если запустят рекламу с содержанием "скачай приложение со странички, на которую тебя QR отправил и оплати..."


  1. IlyaOsipov
    04.11.2021 19:16

    А возврат товара как происходит?


    1. ValeryGL Автор
      04.11.2021 19:19

      Примерно так же, как и покупка, только зеркально. Продавец инициирует транзакцию, покупатель (получатель возврата) определяется по номеру телефона, а дальше примерно то же самое - проверки в ОПКЦ, подтверждение из банка получателя, что готовы принять деньги, поручение в РБ и уведомлеие банков, что перевод успешно выполнен.

      Опять же - секунды, а не "сохраняйте чек до поступления денег"


  1. JustIgorius
    30.11.2021 14:16

    Коллеги! А где можно найти описание API/правил для генерации QR кодов для оплаты через СБП? Можете кинуть в меня пару помидоров, но я пока не нашел. Все вот эти вещи: тип ссылки, сумма к оплате, redirect URL, TTL... Хотим внедрить этот функционал в наше кассовое ПО, где документацию посмотреть?


    1. Mingun
      30.11.2021 19:11
      +1

      https://sbp.nspk.ru/api/ — не оно?


    1. ValeryGL Автор
      01.12.2021 10:19

      Описание API здесь: https://sbp.nspk.ru/api/

      Но прошу не использовать статью как чёткое описание интеграции. У меня многие вещи упрощены, цель-то была иная