Всем привет! Недавно мы в Яндекс.
Кассе совместно с платежными системами Visa и Mastercard запустили новую технологию токенизации платежей для E-commerce, или, другими словами, онлайн-торговли.
Кто-то может подумать: а что тут такого? Токенизация карт уже рассматривалась с выпуском Apple Pay, Google Pay и других *Pay. Ан нет, тут есть что-то новое, а еще мы этой весной первыми запустили эту технологию в России для магазинов-партнеров, так почему бы не поделиться.
В США и Европе эта технология появилась немного раньше, и пользователи таких сервисов, как Netflix и Amazon, уже расплачиваются токенами электронной коммерции, хотя, возможно, даже не знают об этом.
И теперь я расскажу вам, как это работает не только снаружи (для партнеров и держателей карт), но и изнутри, с точки зрения разработчика и тимлида этого проекта.
Если вам интересно, добро пожаловать под кат.
Что общего между Apple Pay и Google Pay?
Тем читателям, кто представляет, как работают Apple Pay и Google Pay (и тем, кто не знает - сюда наша статья о запуске *Pay), они увидят здесь знакомые слова.Если коротко, то одна из особенностей технологий *Pay заключается в том, что плательщику не нужно передавать в магазин данные своей банковской карты.
Он обменивает их один раз на специальный цифровой токен и далее, не рискуя перехватить данные карты, использует только этот токен при совершении платежа.
А преимущество в том, что токен работает только вместе с одноразовой криптограммой, которая генерируется на телефоне плательщика, и эта криптограмма не может быть создана вне телефона.
Кроме того, этими токенами легко управлять – удаление или создание новых происходит за одну минуту онлайн, без походов в банк или прочей бюрократии.
А пока давайте вспомним такие особенности токенизации карт на пользовательских устройствах:
- Расплатиться жетоном может только тот, кто создал этот токен.
- Вы можете управлять токеном отдельно и независимо от управления вашей банковской картой.
Итак, что же такое токенизация в электронной коммерции?
В общем, токенизация карты – это обмен конфиденциальных данных банковской карты на специальный токен, позволяющий оплачивать покупки с помощью этой карты.
Конфиденциальными данными карты являются ее номер (PAN – Primary Account Number) и срок действия.Если подключение карты к *Pay инициируется самим держателем карты, то токенизацию для E-commerce инициирует интернет-магазин.
Но почему (и с какой стати)? Наверняка многие из вас пользуются услугами подписки: будь то ежемесячная оплата музыки, фильмов или, например, коммунальных услуг.
Как осуществляется эта подписка? Вы заходите на сайт интернет-магазина, вводите данные своей карты и ставите галочку, подтверждающую ваше согласие с тем, что магазин сохранит данные вашей карты (PAN и срок действия) и сможет самостоятельно инициировать оплату конкретной услуги.
Нужно понимать, что такое действие подразумевает, что магазин должен где-то сохранить данные карты.
Обычно есть два варианта:
- хранить их на собственных серверах, если они сертифицированы на соответствие стандарту PCI DSS, что могут себе позволить не все интернет-магазины,
- доверьте их хранение своему платежному решению, например Яндекс.
Кассе, имеющему сертификат PCI DSS для высочайшего уровня безопасности.
При токенизации мы обмениваем данные банковской карты на определенный токен, но что это такое? Токен предоставляется карточной платежной системой – Mastercard или Visa. Это уникальный идентификатор, аналогичный номеру счета устройства в Apple Pay или номеру виртуального счета в Google Pay, который можно найти в приложении на вашем смартфоне (Wallet на устройствах Apple и Google Pay на Android).
В отличие от *Pay, при токенизации E-commerce создание токена инициируется интернет-магазином или его платежным решением, а сами токены хранятся на серверах платежных систем.
Конечно, просто кто угодно не может зайти в платежную систему и получить токен чужой карты для оплаты покупок.
Во-первых, токенизировать карты могут только те платежные решения, которые проходят сертификацию и получают одобрение платежных систем.
Такое платежное решение называется запросчиком токенов от имени или поставщиком услуг токенов, но для простоты в дальнейшем мы будем использовать термин Запросчик токена .
И только запросчик токенов может инициировать выплаты токенов.
Во-вторых, токен всегда выдается для конкретного магазина, и токен можно использовать только для оплаты в этом магазине.
Очень похоже на то, как токен *Pay связан с устройством, на котором он был создан.
Как это достигается? Проще говоря, перед совершением каждого платежа с использованием токена Запросчик токена должен получить одобрение платежной системы на этот платеж.
Факт такого подтверждения необходимо будет предъявить во время фактического платежа, поэтому это подтверждение принимает форму одноразовой криптограммы, которая генерируется карточной платежной системой.
При совершении платежа эта криптограмма добавляется в параметры запроса к банку-эквайеру, а затем передается платежной системе, которая проверяет подлинность этой криптограммы, которую она сама ранее выдала.
А как насчет управления токеном независимо от управления картой? В общем, здесь все просто — токен живет своей жизнью, имеет свои статусы жизненного цикла, и о каждом изменении статуса Запросчик Токена сразу узнает от карточной платежной системы.
Подведем итоги.
Что дает токенизация держателю карты?
- Безопасность реальных данных банковских карт. При совершении платежа используется токен, а сами данные карты не передаются, поэтому они не могут быть перехвачены потенциальным злоумышленником.
И нет смысла перехватывать данные токена, потому что токен превращается в тыкву при попытке оплаты в любом другом магазине.
- При перевыпуске банковской карты токен, выданный для интернет-магазина, продолжает действовать, и владельцу карты не нужно привязывать новую карту к необходимым ему услугам.
- Возможность управления токенами.
Токенами можно управлять, не затрагивая саму банковскую карту.
Банки-эмитенты смогут реализовать в своих интерфейсах специальные инструменты для гибкого управления привязками в интернет-магазинах (создание токена в новом магазине, просмотр существующих токенов, удаление неактуальных).
- Что хорошо для покупателя, хорошо и для магазина, поэтому использование токенизированных карт может повысить лояльность клиентов.
- Возможность перевыпуска банковской карты с сохранением токена важна для магазинов, использующих сценарии оплаты по подписке.
Магазину больше не нужно будет отключать подписку, если пользователь забыл обновить данные карты, и не придется всячески напоминать ему об этом.
Стоит отметить, что владелец карты по-прежнему имеет полный контроль и может в любой момент сам отключить подписку.
- Увеличение конверсии платежей.
Мы рассмотрели, как использование токенов влияет на конверсию платежей по сравнению с использованием сохраненных данных карты.
Оказалось, что доля успешных платежей без использования токенов составила 88,53%, а после включения токенизации выросла до 97,89%* .
Возникшая разница объясняется тем, что если банк-эмитент уже одобрил создание токена, то будущие платежи с этим токеном вызовут большее доверие к антифрод-системе банка.
На конвертацию также влияет возможность оплаты перевыпущенными картами.
Если человек не обновит данные карты, которую он привязал к интернет-магазину, то платеж не пройдет, и с токеном такой проблемы не возникнет.
*Мы сравнивали платежи за апрель этого года в крупном онлайн-кинотеатре (MCC 4899) - с привязанными картами без 3DS, исключая неудачные платежи из-за отсутствия денег на карте.
Технические аспекты
Для любителей копнуть глубже расскажу о технологии токенизации карт и ее запуске в Яндекс.Кассе — как все это выглядит изнутри нашего платежного решения.
Интеграция с платежными системами
Чтобы получить техническую возможность токенизировать карты и совершать платежи с помощью токенов, необходимо интегрироваться с Visa и Mastercard, пройти испытания, сертификацию и получить их одобрение для запуска в производство.Сначала это звучало пугающе.
И не только поначалу, если честно, по крайней мере для меня.
Но больше всего пугала именно сертификация, а вот что касается технологий, то все было предельно ясно.
Интеграция предполагает реализацию следующего API (условно) между платежной системой и нами как Запросчиком токена:
- Создание токена.
Передаем в платежную систему данные банковской карты и идентификатор интернет-магазина, для которого создан токен.
Дополнительно мы проводим скоринг для оценки рисков (риск-скоринг) токенизации конкретной карты для конкретного магазина, а также передаем результат скоринга в запросе.
В ответ мы получаем решение о том, одобрена ли токенизация карты ее эмитентом или нет, и в случае одобрения получаем уникальный идентификатор созданного токена.
После этого токен активен и с его помощью можно совершать платежи.
- Получение разовой криптограммы для оплаты токена.
Недостаточно иметь токен, чтобы расплатиться с его помощью: на каждый платеж нужно еще получить одобрение от платежной системы — криптограмму, помните? Итак, чтобы получить эту криптограмму, мы отправляем в запрос платежной системе идентификатор токена и некоторые платежные реквизиты.
Если токен активен, мы получаем в ответ эту одноразовую криптограмму, которую потом нужно будет передать эквайеру при совершении платежа по карте.
- Уведомление от платежной системы об изменении состояния токена.
Это может быть приостановка/возобновление действия токена по инициативе держателя карты, удаление этого токена навсегда, а также обновление данных банковской карты, на которую был выпущен этот токен, в случае ее перевыпуска.
Нам нужно иметь возможность обрабатывать определенные запросы от платежных систем и обновлять нашу информацию о токене, проще простого.
Поэтому мы скрыли все эти детали и отличия от остальной части нашей системы, создав отдельный сервис токенизации карт, который является адаптером к платежным системам и полностью отвечает за жизненный цикл токенов.
Токенизация в Яндекс.
Кассе Яндекс.
Касса — крупная система приема платежей для интернет-магазинов.
Он состоит из многих десятков различных сервисов: бэкенд, фронтенд-приложения, BI-сервисы.
Они обеспечивают прием пользовательских платежей различными способами, перевод средств в магазин, управление платежами через личный кабинет магазина, аналитические сервисы и тому подобное.
И как именно в это вписывается токенизация карт? Главный вопрос: в какой момент мне следует создать токен для банковской карты? API Яндекс.
Кассы имеет возможность сохранять выбранный способ оплаты для последующих платежей в будущем, мы это называем автоплатежи .
Это может произойти как при привязке карты к аккаунту пользователя в личном кабинете магазина, так и при периодической подписке, когда выплаты с карты будут производиться автоматически.
В обоих случаях при создании платежа магазин передает параметр через API. save_pay_method: правда , и после успешной оплаты выдаем магазину pay_method_id — идентификатор сохраненного способа оплаты, с помощью которого можно будет совершать новые платежи.
Вот он, этот момент. Токены создаются специально для платежей, инициированных магазином.
Поэтому сразу после совершения платежа с сохранением способа оплаты мы асинхронно ставим нашему сервису токенизации задачу создать токен для пары «карта и магазин».
Что делают сами платежные системы при токенизации карты? Они обращаются к банку-эмитенту с просьбой создать токен (как это происходит при создании токенов *Pay), и банк выпускает токен для этого магазина.
Банк также может уведомить об этом держателя карты и отобразить созданный токен в его личном кабинете.
Как работает оплата токенами?
Пожалуй, здесь нужна некоторая иллюстрация того, как вообще происходит оплата заранее сохраненной картой, инициированную интернет-магазином:Итак, при оплате ранее сохраненным способом магазин передает только его идентификатор — pay_method_id .
По этому идентификатору сервис карточных платежей находит данные карты (PAN и срок действия) и передает их одному из банков-эквайеров, который затем осуществляет связь с карточной платежной системой.
С токенами этот сценарий добавляет еще один шаг:
Если мы видим, что для карты и магазина ранее был выпущен токен, то мы можем произвести оплату без использования данных карты.
Для этого через сервис токенизации мы сначала отправляем запрос в международную платежную систему с данными токена и в ответ получаем одноразовую криптограмму, которая подтверждает, что токен действителен и мы имеем право произвести оплату.
.
И после этого мы передаем данные токена вместе с этой криптограммой в банк-эквайер.
Что произойдет в случае, если пользователь перевыпустит карту в своем банке? Если на карту ранее были выпущены токены, банк-эмитент сообщает платежной системе Mastercard/Visa о перевыпуске карты.
В свою очередь, каждый Запросчик токенов, выпустивший токены для этой карты, получит уведомление от платежной системы.
Содержит актуальную информацию о карте: последние 4 цифры номера и новый срок действия.
Токен остается прежним.
Когда магазин инициирует очередной платеж с уже просроченной карты, которая была фактически перевыпущена, и у нас есть токен на нее для этого магазина, платеж будет успешным.
Кроме того, мы сообщим магазину новые последние 4 цифры банковской карты — они будут присутствовать в ответах нашего API. Это необходимо для того, чтобы и магазин, и пользователь всегда видели, с какой карты списываются средства.
Вместо заключения
Токенизация в электронной коммерции — это новый этап развития приема платежей, повышающий удобство для всех участников платежного процесса.Мы ожидаем, что в ближайшем будущем технологию поддержат многие российские банки и провайдеры – и она станет новым стандартом на платежном рынке.
Конечно, рассказ получился скорее обзорным, но я надеюсь, что каждый читатель найдет в нем что-то полезное для себя – повысит уровень финансовой грамотности, узнает о новинках финтеха, а может быть, найдет идею для развития.
их дело.
Всё, будьте здоровы и не болейте! Теги: #платежные системы #ИТ-компании #ИТ-компании #Финансы в ИТ #токенизация #электронная коммерция #Разработка для электронной коммерции
-
Противосияние
19 Oct, 24 -
Google Переделает Видео
19 Oct, 24 -
Умные Мысли
19 Oct, 24