В России растёт популярность QR-кодов для оплаты. Немолодая технология оказалась на пике популярности спустя четверть века с момента появления: вошла с ноги в российский финтех и позволяет совершать платежи при помощи камеры смартфона. Давайте поговорим о том, почему и как это происходит. Такой вопрос в последнее время часто слышат покупатели во многих магазинах и кафе. Если поинтересоваться у продавца, чем особенно хорош такой способ оплаты — он вряд ли объяснит доступно. Можно было бы заподозрить подвох, однако никакого подвоха нет. Дело в том, что оплата по QR-коду идёт через Систему быстрых платежей (СБП), в которой комиссия ниже — 0,4–0,7% против обычных 1–3% за эквайринг. Впрочем, оплата по QR-коду — это не всегда СБП. Многим уже хорошо знакомы QR-коды на платёжках за коммунальные услуги. Можно перечислить ещё несколько случаев, где QR и финансы идут рука об руку, но закономерность и так ясна. Чёрно-белые квадратики, которые когда-то были нишевой технологией, сегодня всё шире входят в жизнь простого россиянина. Как так получилось? Два малоизвестных факта о широко известной технологии. Во-первых, QR — аббревиатура от quick response. Во-вторых, этой аббревиатуре уже вот-вот 30 лет. Изначально это была внутрячковая система визуального кодирования на японском автомобильном заводе Denso. Появилась она аж в 1994 году как замена штрихкодам, ёмкость которых перестала удовлетворять нуждам производства. QR-коды оказались удобной штукой и быстро вышли за пределы автопрома. Пика популярности они достигли на своей родине, в Японии, а также в некоторых других азиатских странах. Там они используются буквально для всего, в том числе и для платежей. В других местах QR-коды остались нишевой технологией. Скажем, в России до определённого времени самым частым случаем использования QR-кода была ссылка на музейном экспонате или туристической достопримечательности. Но недавно (в историческом масштабе) это изменилось. Вспомнив бессмертное блоковское «да, скифы мы, да, азиаты мы», российские компании, частные и государственные, стали жадно перенимать опыт восточных коллег. В 2020 году QR-коды широко проникли в жизнь россиян в виде сертификатов о вакцинации. Учитывая масштаб и интенсивность их внедрения, после 20-го года в России не осталось практически никого, кого можно было бы удивить чёрно-белыми квадратиками.  Для инноваций требуется почва. И помимо того, чтобы она была плодородной, особенно хорошо, когда на ней не произрастают всякие другие корнеплоды. В России бесконтактные платежи более развиты, чем в большинстве западных стран. Дело в том, что Россия вступила в эпоху безнала позже и развивалась в ней ускоренными темпами. Где-нибудь в США, чтобы перейти на бесконтакт, нужно было списать большое количество уже имеющихся (и работающих) контактных терминалов — понятно, такая инновация по вкусу не всем. В России же многие перешли на бесконтактные платежи напрямую от наличных, избежав технологической инерции. В Японии и странах Юго-Восточной Азии развитие платёжных технологий пошло по другому пути. Как и в России, там не было развитой и закосневшей «контактной» инфраструктуры, что способствовало распространению бесконтактных технологий. Однако широкое внедрение бесконтакта там пошло раньше, чем стала общедоступной технология NFC (near-field communication — то, через что смартфон обычно общается с терминалом). Поэтому в качестве средства передачи данных были выбраны QR-коды. В 2022 году в России перестали работать Google Pay и Apple Pay. Владельцы телефонов на Android смогли продолжить пользоваться отечественной Mir Pay, а вот у «яблочников» ситуация оказалась хуже. Полноценный доступ к NFC-модулю в iOS имеет только Apple Pay, использовать сторонние приложения аналогичным образом невозможно.  К хорошему быстро привыкаешь. Россияне с 2016 года совершали платежи с помощью NFC, и, разумеется, им не хотелось снова, как в каменном веке, каждый раз доставать банковскую карту из портмоне. К счастью, отечественный финтех не лыком шит и на момент отключения Google/Apple Pay уже существовали технологичные альтернативы для платежей с помощью смартфона, в том числе и без использования NFC-модуля. В конце концов, на смартфоне есть много других устройств ввода-вывода, которые даже более распространены. Например, камера и дисплей. Есть три вида QR-кодов для безналичной оплаты. Точнее, четыре. Самый простой тип — так называемый статический QR-код. В нём кодируются платёжные реквизиты получателя. Считав его, покупатель вбивает в своём привычном банковском приложении нужную сумму и авторизует платёж. Чтобы начать использовать статический QR-код, продавцу нужен минимум телодвижений. Однако необходимость ручного ввода суммы — это не только замедление процесса оплаты, но и пространство для ошибок. Второй тип — динамический QR-код. Как нетрудно догадаться по названию, он генерируется динамически, под каждую новую покупку, на дисплее какого-нибудь кассового устройства. И включает в себя, помимо реквизитов торгово-сервисного предприятия, сразу данные о платеже — сколько и за что. Покупатель избавлен от необходимости вручную набирать сумму платежа. Кроме того, перед нажатием кнопки «оплатить» он может перепроверить, на ту ли сумму и в том ли магазине он покупает. Казалось бы, динамический QR-код делает всё, что от него требуется. Возникает вопрос — зачем ещё какие-то другие типы? Дело в том, что «динамизм» помимо возможностей имеет и особенности. Во-первых, у продавца должно быть устройство, которое умеет выводить этот самый динамический QR. Во-вторых, к этому устройству предъявляются достаточно высокие требования. Чтобы QR-код хорошо считывался камерой смартфона, он должен быть крупным, контрастным, на дисплее не должно быть бликов и т. д. и т. п. Если же требования не соблюдаются, у покупателя могут возникнуть проблемы с оплатой. Придётся долго елозить камерой, пытаясь поймать нужный ракурс. На UX это сказывается не лучшим образом. Третий тип — гениальная попытка взять лучшее от обоих миров. Это так называемый кассовый QR-код. Он статический, но при этом динамический. Как так получается? Очень просто. Кассовый QR-код хранит статическую ссылку на динамическую страницу. Когда покупатель пробивает покупки, кассовый аппарат отправляет данные на сервер. Потом покупатель считывает QR-код и по ссылке получает с сервера эти же самые данные, а также платёжные реквизиты продавца. Таким образом, кассовый QR — это статичное изображение, которое можно нанести на любую удобную поверхность в любом подходящем размере. При этом он обладает всеми преимуществами динамического QR-кода. Если смотреть с точки зрения банковского приложения на смартфоне, оплата по платёжному QR-коду мало чем отличается от обычного денежного перевода. С помощью кода приложение получает информацию, кому и сколько перевести, затем просто проводит транзакцию. А разница есть — не на уровне технологии, а на уровне метаданных. На платёж по QR-коду вешается особая метка, позволяющая понять, что это была оплата товара в магазине. Благодаря этому можно потом оформить возврат.  Внимательный читатель наверняка задался вопросом: что значит «три, точнее, четыре» типа платёжных QR-кодов? Три типа — это Merchant presented QR, которые генерируются на стороне продавца и используются СБП. Но код ведь можно генерировать и на стороне покупателя! QR-код как носитель информации был выбран для платежей, в частности, потому что почти у каждого смартфона есть камера. Однако дисплей есть совсем у каждого смартфона. Четвёртый тип платёжного QR-кода формируется клиентским приложением и выводится на экран. Такой способ оплаты не поддерживается СБП, но в природе существует и называется Customer presented. В клиентском QR-коде содержатся платёжные реквизиты покупателя, а также токен, авторизующий платёж. Продавец считывает эти данные и инициирует транзакцию. Сумму продавец указывает сам. Теоретически ничто не мешает ему списать 100500 рублей за киндер-сюрприз, но практически кое-что мешает (об этом ниже). Какой вид платёжного QR-кода выбрать — зависит от. Например, если у продавца есть хорошее оборудование для показа динамического QR-кода — ему нет смысла заморачиваться с кассовым. Если с оборудованием напряжёнка — можно налепить на витрину статический и не париться. Клиентский QR-код — это удобно, но от продавца требуется хороший считыватель, а также интеграция кассового решения с банковским. В общем, серебряной пули пока нет. Как и с любой другой технологией, связанной с финансами, появляется вопрос: не создаёт ли платёжный QR-код новые векторы атаки, позволяющие злоумышленнику обогатиться за счёт честного пользователя? Изобретательный читатель наверняка уже придумал сценарии, как это могло бы произойти. Например, можно ходить по магазинам и поверх статических QR-кодов наклеивать свои собственные, вместо кошелька продавца пополняющие кошелёк «хакера». Или, допустим, при оплате клиентским QR-кодом сфотографировать его и оплатить с его помощью что-то совсем другое. Не самая интересная, но очень важная линия защиты — бюрократическая. Защита предусмотрена на разных уровнях. Принимать оплату по СБП не может человек с улицы. Нужно зарегистрировать торгово-сервисное предприятие (ТСП), завести счёт в банке — участнике СБП. Все выданные QR-коды фиксируются за конкретными банками и ТСП. В случае подозрения в мошенничестве всегда понятно, кого брать за жабры. Так что у коварного хацкера не получится так просто расклеить свои QR-коды на чужих кассах.  Что касается клиентского QR-кода, по которому теоретически можно снять произвольную сумму, — самому продавцу невыгодно обманывать покупателя. Это репутационные издержки, перекрывающие возможную прибыль, и большая вероятность вылететь из элитарного клуба пользователей QR-кодов. А что насчёт злоумышленника? Злоумышленнику понадобится быть суперзлодейской версией Флэша, то есть, попросту говоря, быть невероятно быстрым. Клиентский QR-код «живёт» меньше минуты, за это время никакую последовательность мошеннических действий не провернуть. Наконец, если говорить о векторах атаки, необходимо понимать одну важную вещь. QR-код — это просто способ представления информации. Он кодирует либо ссылку, либо токен — в общем, какую-то из сущностей, которые уже давно используются в онлайн-платежах. И такой метод защиты, как короткоживущий QR-код, не придуман с нуля — точно так же защищаются токены в других формах их представления. Является ли кассовый или клиентский QR-код вершиной платёжной эволюции? Свободен ли он от всех недостатков? Разумеется, нет. Однако следующий виток эволюции, скорее всего, будет связан уже не с QR-кодами. Один из очевидных недостатков — необходимость подключения к интернету у всех участников процесса. В случае платёжного QR-кода, сгенерированного продавцом, это неустранимая проблема. Для клиентского кода решение возможно, однако это ослабляет безопасность. Ещё одна проблема — оплата по QR-коду требует больше мелкой моторики. Ловить чёрно-белые квадратики в объектив камеры сложнее, чем просто поднести смартфон к терминалу. Возможно, в прекрасном будущем вместо камеры будет использоваться другое устройство ввода. Bluetooth? Микрофон? А может, вообще гироскоп? Кодирование платёжной информации с помощью небольших землетрясений — вот это был бы киберпанк что надо! Так или иначе, даже если на место QR-кодов придёт что-то другое, сами принципы информационного взаимодействия, выработанные при их использовании, будут актуальны ещё долгое время. Для оплаты через СБП уже есть гибридное решение. Смартфон с NFC-модулем можно просто поднести к терминалу, как в старые добрые времена. Затем покупатель автоматически перенаправляется в СБПэй для подтверждения платежа. Это не классическая NFC-оплата: обмен информацией между терминалом и смартфоном происходит по тем же принципам, что и в случае QR-кодов. А QR-коды остаются в качестве фоллбэка — если NFC-модуль недоступен, всегда можно воспользоваться камерой. Впрочем, этот способ по-прежнему требует подключения всех участников к интернету. Чтобы платить офлайн, нужны какие-то совсем новые технологии, существенные криптографические гарантии и тому подобное. Сейчас таких решений нет, но поиски ведутся. Впрочем, какой бы ни была будущая технология офлайн-оплаты, QR-коды наверняка смогут вписаться в неё как составная часть. В программировании есть такая техника, как реификация, она же овеществление. Суть её в том, что любой процесс или явление можно представить как сущность. И это даёт дополнительные возможности — например, сущность можно сериализовать. Платёжные QR-коды — это если и не реификация платежа, то, по крайней мере, шаг в этом направлении. Российский финтех осознаёт, что платёж — это данные, а данные можно использовать разными способами, передавать через разные медиумы. QR-код — не окончательный ответ на все платёжные вопросы. Однако во многих случаях это чертовски удобный ответ. И, возможно, именно вам именно сейчас следует задуматься — а не использовать ли QR-коды в своём следующем проекте...  Если хотите узнать больше — возможно, вам стоит посетить вебкаст Habr.Pro в феврале. Там мы расскажем больше пикантных подробностей о QR-технологиях, NFC, СБПэй и не только. Но, как писал Пьер Ферма, «поля этой рукописи слишком узки», и текущая статья на этом завершается. Надеемся, вам было интересно.