Привет, Хабр. Меня зовут  Михаил Добровольский, я руководитель портфеля проектов в МКБ, и сегодня расскажу, как мы реализовали выпуск виртуальной банковской карты в Telegram. Наверняка все заметили, что мы стали проводить все больше времени в мессенджерах, в частности в Telegram, а все дело в том, что в нем люди не только общаются, но и получают актуальные новости, в том числе финансовые. Telegram действительно стал одним из удобных каналов коммуникации банка с клиентом. Кроме этого, мы сталкиваемся с проблемой удаления приложений из сторов (AppStore и Play Market), поэтому переход в мессенджеры, где привыкли общаться наши клиенты, был логичным решением. После появления функционала Web Apps for Bots (https://core.telegram.org/bots/webapps) мы получили возможность безопасного отображения чувствительных банковских данных для клиентов банка. Основой решения стала платформа Open API, реализованная в рамках концепции BaaS (Bank as a Service), позволяющая сторонним сервисам взаимодействовать с системами банка.    Сервис Telegram-бота обменивается с Telegram API через метод getUpdates. Для открытия Web App в Telegram API передается ссылка на статику Web-страницы бота. На самой странице подключаем скрипт telegram-web-app.js, позволяющий Web App взаимодействовать с Telegram. Скрипт передает очень важное для нас поле initData, содержащее данные и hash, по которым на сервис-боте, развернутом в контуре банка, мы можем проверить достоверность запроса от Web App. При этом хранение аутентификационной информации пользователя осуществляется на сервисе-бота, что обеспечивает ее безопасность. Клиентские данные отображаются в Web App, для их получения из сервис-бота используется REST. Мы доверяем аутентификации Telegram, а также связке номера телефона и Telegram User Id. Эти данные являются основой для дальнейшей аутентификации пользователя в BaaS. Данное решение соответствует требованиям стандарта PCI DSS (Payment Card Industry Data Security Standard). Так, Telegram не имеет доступа к карточным данным пользователя, а вся информация защищена программным обеспечением банка и становится доступной только после авторизации. Клиенту можно не беспокоиться за сохранность личных данных. Чтобы открыть карту в Telegram, необходимо в мессенджере найти чат-бот @FC_Torpedo_Bot, поделиться своим номером телефона, ознакомиться с условиями и подтвердить выпуск при помощи SMS. Виртуальная карта появится в чат-боте, где и будет все время храниться, не занимая места в кошельке. Владельцы смартфонов на Android смогут добавить ее в Mir Pay, Samsung Pay и оплачивать покупки в любой торговой точке, где действуют эти платежные сервисы. Есть возможность добавить виртуальную карту в Yandex Pay и заниматься онлайн-шопингом без ввода реквизитов каждый раз. При оплате данной картой, владельцу начисляется cash back от банка, также карта участвует в акциях платежной системы Мир. Пополнить баланс можно любым удобным способом, а скоро появится возможность сделать это через СБП (Система быстрых платежей). В нашем боте мы реализовали интересную фичу: смена изображения карты в телеграмме и MIR/Samsung Pay-сервисах. Процесс смены картинки карты состоит из нескольких шагов. Сначала отправляется запрос для получения списка доступных картинок. Как только пользователь выбрал нужную, отправляется запрос на сервис бота для смены картинки. Сервис устанавливает картинку пользователю, закрывается Web App и пользователю в чат отправляется выбранная картинка при помощи метода Telegram API https://core.telegram.org/bots/api#sendphoto или выбранный gif, используя метод https://core.telegram.org/bots/api#sendanimation. При последующем открытии меню, в Web App отображается текущая выбранная картинка карты.