Мы все уже освоились с «переводами по телефону» друг другу, но пришла пора поговорить про оплату через СБП. Тем более что эту функцию реализовали уже больше 60 российских банков, то есть новый инструмент для платежа смартфоном есть теперь у большинства жителей страны.
В этой статье я хочу рассказать, что такое C2B-операции в Системе быстрых платежей:
сценарии со стороны клиента
с точки зрения реализации
и немного – про выгоду
Итак:
C2B-операция - это платеж клиента-физика в пользу бизнес-клиента за товар или услугу.
СБП - Система быстрых платежей, которая переводит деньги со счета на счет за секунды. А не за часы-дни, как в случае карточных платежей.
Принцип такой: данные о предстоящем платеже хранятся в ОПКЦ (Операционно-Процессинговый и Клиринговый Центр) СБП. Для платежа эти данные (назовем это платежной ссылкой) должны попасть в смартфон клиента, чтобы ему осталось нажать “ОК”, а потом банк плательщика запустит процесс.
Исторически первым механизмом транспорта этих платежных данных был QR-код. Продавец показывает картинку, покупатель сканирует и “ок, согласен”. Поэтому большинство примеров здесь как раз с QR-кодом.
Какие сценарии можно реализовать?
QR-наклейка на кассе
Распечатанная наклейка с QR-кодом, наклеенная на кассу, на билборд, на автобус, на колонку АЗС, показанная на большом экране на конференции и т.п. Покупатель сканирует камерой QR-код, у него открывается приложение банка, в котором видны детали платежа:
кому платим - всегда;
за что платим и сумма - опционально, если продавец указал это при генерации QR-кода;
если сумма не указана - её придется ввести вручную.
Этот вариант подходит тем, кто не может генерировать QR’ы под каждый платеж, но клиенты готовы вводить сумму. Если вы читаете эту статью с настольного компьютера, вот пример: на сайте благотворительного фонда Хабенского есть QR-код, который вы можете отсканировать телефоном и при желании пожертвовать сотню. https://bfkh.ru/help/qr-kod.php
Динамический 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. Банк плательщика перекидывает эту информацию на смартфон покупателя, покупатель читает и принимает решение - платить или нет (если не было суммы - то еще вводит сумму).
Шаг 4. Банк плательщика отправляет в ОПКЦ распоряжение на перевод, в котором есть информация о продавце и о покупке, и в ответ получает квитанцию: ОПКЦ готов обрабатывать это распоряжение (или не готов - нарушена структура, не пройдены проверки, у банка отозвана лицензия, это одноразовая ссылка и она уже была оплачена раньше и т.д.). Когда распоряжение отправлено в ОПКЦ СБП - обратной дороги нет и от банка плательщика больше ничего не зависит.
Шаг 5. ОПКЦ СБП обогащает полученное поручение дополнительными данными и перенаправляет запрос в банк получателя для проверки: готов ли он принять это платеж? Банк получателя говорит “готов, высылайте”.
Шаг 6. ОПКЦ СБП формирует поручение в Банк России на перевод: перевести с кор.счета банка плательщика на кор.счет банка получателя указанную сумму.
Шаг 7. Осталось немного, но самое приятное. ОПКЦ СБП отправляет банкам плательщика и получателя уведомления об успешной операции. Банки должны увеличить и, соответственно, уменьшить баланс на счетах продавца и покупателя. Банковское приложение покупателя показывает ему, что платеж прошел.
Шаг 7.1 Если клиент начинал оплату в мобильном приложении интернет-магазина и был переброшен в банковское приложение - его нужно вернуть обратно в приложение магазина. Если он сканировал QR-код камерой - то он так и останется в приложении банка.
Шаг 8. Покупатель видит, что оплата прошла, а продавец? ОПКЦ СБП отправляет продавцу callback с подтверждением операции, чтобы он отпустил покупателя с товаром.
Кажется, всё.
Шаг 9, опциональный. Если доставить уведомление об успешной операции в банк не получилось (даже с учетом переповторов), банк может запросить статус операции, дернув ОПКЦ СБП с помощью того же API.
Бенефиты
Продавец с каждого полученного стольника тратит немного на работу с этими деньгами. Если наличные - платит за инкассацию. Если карточный платеж - платит эквайринговую комиссию (грубо говоря - 1,5-2,5%). Если СБП - тоже комиссию. Но в СБП она 0,4% - 0,7%. И малому и среднему бизнесу до конца года ее возвращают – то есть сейчас вообще ноль. Если продавец считает свои косты, то он будет поддерживать все виды приема денег, но также продвигать низкозатратный. А если поймет, что при использовании оплаты СБП он на рубль меньше тратит (то есть на рубль больше зарабатывает) - он будет давать бонус или скидку. Кешбэк может быть не только со стороны банка, но и со стороны магазина.
Это Система БЫСТРЫХ платежей - то есть деньги переводятся на счет продавца раньше, чем покупатель залочил и убрал телефон.
Можно оплачивать смартфоном без NFC (таких сейчас у населения примерно половина), и есть множество людей, кто очень хотел бы платить смартфоном – но позволить NFC себе не могут. Можно платить в случае, если кассы нет рядом от слова совсем - не выходя из машины на АЗС, прямо через стекло; стоя в пробке рядом с билбордом, на котором напечатан QR-код.
Если платите на сайте, не нужно вводить данные карты и опасаться её компрометации.
А если сделали привязку счета для рекуррентных платежей (подписку) - то управлять этой подпиской (и вообще посмотреть, какие у меня есть подписки) можно в приложении своего банка. С картами такой опции нет и не было – «где карту привязывали, туда и идите».
Комментарии (24)
nin-jin
03.11.2021 12:01+1А что насчёт пользователей из других стран? Они смогут оплатить таким образом?
oraclejob
03.11.2021 12:03Это Система БЫСТРЫХ платежей - то есть деньги переводятся на счет продавца раньше, чем покупатель залочил и убрал телефон
Это частичная правда, есть еще время прихода информации из банка до кассового ПО, мне пришлось ждать 30 секунд последний раз, что делает этот тип оплаты бессмысленным на данный момент.
А если поймет, что при использовании оплаты СБП он на рубль меньше тратит (то есть на рубль больше зарабатывает) - он будет давать бонус или скидку
Но он не дает. Вывод - возможность платить QR-кодом есть, но смысла в этом сейчас нет.
ValeryGL Автор
03.11.2021 12:05есть еще время прихода информации из банка до кассового ПО
Зачем ждать взаимодействие банка и кассового ПО? ОПКЦ сам напрямую отправляет callback в кассовое ПО, см шаг 8
oraclejob
03.11.2021 12:40Я лишь описываю реалии, когда оплата проходит по бумажному коду у кассы.
GKONNOV
03.11.2021 19:43+1По честному, рынок еще учится поддерживать новые схемы оплаты. При взаимодействии с НСПК ответы идут моментально. Банки могут делать моментальные уведомления также, но у рынка разный опыт. Такие особенности рынка наверняка выровняются в ближайший год. А в каком магазине была задержка? Можно будет понять банк и подкорректировать сценарий.
В нашем случае для касс мы советуем использовать ограниченный срок жизни QR и опрашивать статус до 5 минут раз в секунду. Тогда никаких задержек быть не должно после оплаты.oraclejob
04.11.2021 09:36Это была пиццерия, ее банк тиньков, если правильно запомнил. Еще раз повторюсь, код был на бумажке у кассы, никакого динамического кода не предусматривалось, сумму вводил руками. Подозреваю, там нет постоянного полинга, ибо трафик, и, если прикинуть масштабирование, банку тоже такой постоянный искусственный DDoS от миллиона точек совсем не нужен. Есть ли там SSE под капотом - большой вопрос.
Voila2000
03.11.2021 15:46Понятно что на Шаге 4 надо проверять правильность составления распоряжения, но почему бы не проверить
"у банка отозвана лицензия, это одноразовая ссылка и она уже была оплачена раньше и т.д."
на втором Шаге?
А еще можно проверить остаток/лимит на счете клиента и остаток банка плательщика в РКЦ.ValeryGL Автор
03.11.2021 16:00Верно, на втором шаге (получение информации по предстоящему платежу) покупатель получит отказ, если на этот момент истек TTL для ссылки/QR или если это попытка повторно оплатить одноразовую ссылку.
Но проверять состояние счетов продавца и самого банка в этот момент рано - между первой и второй диаграммами может пройти какое-то время, а за это время много чего может случиться.
inkelyad
03.11.2021 19:20СПокупатель сканирует QR-код (или NFC-метку) телефоном (камерой в приложении банка, обычным приложением “камера” или специальным “сканер штрих-кодов”). Смартфон покупателя, разобрав QR-код (NFC-метку), получает ссылку вот такого вида:
Тот QR-код, что на чеках, похоже, специально не стали делать url-ом. А тут почему сделали? Злоумышленник же может просто наклеить свой QR-код поверх настоящего и увести потенциального покупателя на фишинговый сайт. Где, не разобравшись, можно ввести что-нибудь вроде 'введите код из SMS, пришедшей на телефон'.
Почему нельзя было сделать так, чтобы данные кода был в формате, который понимался бы исключительно предназначенным для этого приложением? Хотя бы при помощи регистрации предназначенной для этого URI схемы:
nspkpayto:AS100001ORTF4GAF80KPJ53K186D9A3G?type=01&bank=100000000007&crc=0C8A
или даже использования существующей payto
GKONNOV
03.11.2021 19:50Нестандартная ссылка - иллюзорная защита от фишинга. В случае СБП мы советуем всем сканировать QR именно из банковского приложения. Тогда фишинг невозможен.
В любом случае, клиенты привыкают к переадресации в приложение банка. Если его нет, то сайт\ссылка странные и это нестандартный сценарий. Даже если бы обычной ссылки в QR от НСПК не было, то ничего не мешало бы размещать ссылки на левые сайты в мошеннических QR. Пользователь либо будет видеть, что это не банковское приложение, либо нет.inkelyad
03.11.2021 20:02В любом случае, клиенты привыкают к переадресации в приложение банка.
Это работает, если приложение уже стоит. А что произойдет, если нет? Жертва (которую уболтали оплатить при помощи QR) успешно увидит в браузере чего-нибудь похожее на интерфейс оплаты, который будет нарисован мошенниками.
GKONNOV
03.11.2021 20:12Логично, но такая штука провисит до первой оплаты в ритейле. У клиента сразу возникнет вопрос - я оплатил, а где товар? Кассиру придется объясниться что там за левый QR на кассе. :)
inkelyad
03.11.2021 20:21Так оно будет не на кассе, а вот в сценарии "помоги фонду". Будут заговаривать зубы или просто делать листовку с фишинговым QR/наклеивать свой поверх настоящей. N-ное число людей попадется... Лучше бы проектировать все это сразу так, чтобы это N было как можно меньше.
GKONNOV
03.11.2021 20:27+1Это от СБП, к сожалению, не зависит, т.к. сделать листовку с левым сайтом и так могут и уговорить ввести данные карты там.
В СБП плательщики привыкают платить из приложения своего банка. Альтернативный сценарий должен сразу настораживать.
GKONNOV
03.11.2021 19:50Сейчас в ссылке НСПК уже размещает список банков, а будет и платежная форма с прямыми ссылками на каждое банковское приложение. Это облегчает обучение пользователей.
inkelyad
03.11.2021 20:07По фишинговой ссылке будет солидно выглядящая страничка со ссылками на приложения-зловреды. Как бы еще хуже не стало. Особенно если запустят рекламу с содержанием "скачай приложение со странички, на которую тебя QR отправил и оплати..."
IlyaOsipov
04.11.2021 19:16А возврат товара как происходит?
ValeryGL Автор
04.11.2021 19:19Примерно так же, как и покупка, только зеркально. Продавец инициирует транзакцию, покупатель (получатель возврата) определяется по номеру телефона, а дальше примерно то же самое - проверки в ОПКЦ, подтверждение из банка получателя, что готовы принять деньги, поручение в РБ и уведомлеие банков, что перевод успешно выполнен.
Опять же - секунды, а не "сохраняйте чек до поступления денег"
JustIgorius
30.11.2021 14:16Коллеги! А где можно найти описание API/правил для генерации QR кодов для оплаты через СБП? Можете кинуть в меня пару помидоров, но я пока не нашел. Все вот эти вещи: тип ссылки, сумма к оплате, redirect URL, TTL... Хотим внедрить этот функционал в наше кассовое ПО, где документацию посмотреть?
ValeryGL Автор
01.12.2021 10:19Описание API здесь: https://sbp.nspk.ru/api/
Но прошу не использовать статью как чёткое описание интеграции. У меня многие вещи упрощены, цель-то была иная
mmMike
Ну раз такая статья публичная появилась, то можно я задам вопросы.
Название ТСП, “имя на вывеске”. А кто решил, что 35 символов на это достаточно?
А почему банк плательщик не может по QRC узнать ОГРН/ИНН того кому клиент переводит C2B средства ДО, того как платеж совершен? Кто решил, что имени юр.лица достаточно.
Очень хочется узнать обоснования, а не отписку "бизнесу это не надо".
ValeryGL Автор
Название мерчанта на вывеске сделали по аналогии с карточными платежами, так было удобно банкам-эквайрерам.
ИНН, ОГРН, а также счет и банк обслуживания действительно не отдаются банку плательщика при сканировании. Вы думаете, это нужно клиенту-физику до платежа? Вот плательщику-юрлицу это нужно и он это получит в B2B-платеже, но это отдельная история.
Тем не менее, я рад Вас видеть снова среди первых комментаторов!
mmMike
Оплата по картам и оплата по СБП вообще мало пересекаются. Это разное ПО и разные правила. Чего уж тогда не ограничили an22 (поле 43 ISO 8583) для "полной совместимости" (сарказм)
Физику может и не особо нужно. А вот банку плательщику ДО того как выполнится B05 это не помешает. Например в системах фрод мониторинга банка:
Защитить своих клиентов от платежей в ИП/ООО/.. типа "Рога и копыта".
Контроль по законам связанным с "спонсирование терроризма" и пр.
Определить какой ЭБД{107} выставить в B05
По факту, сейчас, банк плательщик узнает кому клиент средства перечислил уже только после перечисления. Когда дергаться поздно.
А самое забавное, что есть уже V3 запроса получения инфы по QRC и ничего не стоило туда добавить ОГРН/ИНН (как это сделали для QRC с "привязкой счета"). Но упорно НСПК не добавляет это без сомнения полезную информацию для банка плательщика.
Все равно, рак на горе свиснет и ЦБ наконец сообразит, что переводы C2B на счет ИП однодневки - это способ и мошенничества и спонсирования "нежелательных" организаций и обязует либо СБП либо банки контролировать эти переводы (сумма/возможность).