PS Store в Telegram. Рассказываем про разработку Mini App для магазина цифровых товаров
Весь PS Store теперь в одном мини-приложении Telegram. В этой статье расскажем о том, как справились с запросом клиента, о том, с какими трудностями столкнулись и каких результатов достигли.
Предыстория
Как известно, в 2022-м году почти все крупные западные компании ушли из России. Автомобили, гаджеты, фастфуд, ПО и онлайн-ресурсы – прямой доступ ко всему этому был утерян безвозвратно. Компания Sony стала одной из тех, кто приостановил свою деятельность на территории России, лишив пользователей доступа к одному из главных своих продуктов – PS Store, площадке по покупке игр и дополнений к ним на PlayStation.
Правда, ситуация оказалась временной. Очень скоро в РФ появился параллельный импорт, при котором часть из ранее недоступных сервисов и продуктов вернулась к пользователям.
Сейчас, почти 3 года спустя, сфера перепродажи продолжает развиваться, всё больше компаний хотят стать частью нового рынка.
Одна из таких компаний обратилась к нам с запросом по разработке продукта. На момент обращения к нам компания уже активно занималась перепродажей продуктов PlayStation через Telegram канал и Avito. Прозрачная политика покупки и реклама делали своё дело – аудитория росла, заказов становилось всё больше, пришлось нанимать дополнительных менеджеров для мониторинга и обработки покупок.
В какой-то момент команда пришла к необходимости масштабирования бизнеса, при этом работа должна была вестись также через Telegram. Остановились на разработке полноценного мини-приложения.
Аудитория и клиентская база постоянно росли, менеджеры уже не справлялись с обработкой заказов, а масштабирование требовало бы найма дополнительного персонала. Требовалось удобное решение, чтобы пользователю не приходилось открывать несколько окон и заморачиваться с оплатой, а менеджеры могли сразу иметь доступ ко всем совершённым заказам и отслеживать их статус. Особенно важно, чтобы покупатели могли видеть все возможные предложения так, будто они сидят в настоящем PS Store.
Мы не упустили возможность и создали решение, позволяющее приобретать игры (и не только) для PlayStation за рубли напрямую через Telegram. Речь идёт не о простых каналах или чатах перепродажи – мы говорим о полноценном мини-приложений, заменяющем PS Store.
ТК Бот
Конечно, энтузиасты давно нашли несколько решений, но даже сейчас ни одно из них не отличается удобством, да и покупать игры за рубли по прежнему невозможно.
В первую очередь, мы решили сыграть на этом, опираясь на обширный опыт разработки мини-приложений для Telegram и поиска нестандартных решений.
Результатом стал ТК Бот – мини-приложение, которое позволяет приобретать все продукты PlayStation на турецкие аккаунты пользователей за рубли.
Сейчас расскажем подробнее.
О технических проблемах
Непростой парсинг и ‘серый’ API
Итак, мы решили создать своего рода аналог PS Store в Telegram с основным функционалом просмотра каталога товаров, актуальных цен и дальнейшей покупки с возможностью привязки к PlayStation-аккаунту пользователя.
Одной из самых сложных технических задач проекта был регулярный сбор актуальной информации о товарах, скидках и акциях из самого PS Store.
Самым очевидным и простым решением, конечно, была бы интеграция с API площадки. Да только в открытом доступе не было и нет нужных методов, которые позволили бы работать с системой запросов (что, на самом деле, было ожидаемо).
Тогда мы решили прибегнуть к парсингу, даже начали работу в этом направлении, но очень скоро поняли, что такой метод довольно рискован.
Во время парсинга в систему отправляется огромное количество запросов, гораздо больше, чем при стандартной загрузке, что может вызвать подозрения с точки зрения безопасности данных самого PlayStation Store. От парсинга мы тоже вскоре отказались, но новое решение было найдено практически сразу.
Несмотря на то, что нужные методы и пояснения были закрыты для нас, мы обнаружили возможность использования так называемого ‘серого’ API PS Store. Оно всё ещё не давало исчерпывающей информации по работе системы, но что-то всё же было доступно.
Данный API базируется на клиенте Apollo GraphQL, который позволяет использовать функцию Persisted Queries, основанную на хэшировании запросов.
Иначе говоря, каждый запрос имеет свой уникальный Sha-256 хэш, т.е. Цифровой отпечаток данных, использующийся для их защиты и проверки. Все хэши хранятся в специальном ‘белом списке’ (white list) самого PlayStation Store. По сути, если вашего запроса нет в списке, то вы не получите на него ответ, вообще не получите никакого результата.
Это стало очередным препятствием, но тут помогло сообщество.
Прошерстив Интернет, мы нашли целую коллекцию, размещённую неким энтузиастом, в которой уже находилось большинство хэшей нужных нам для работы.
Немного обратной разработки и при чём здесь ‘концепты’ и ‘продукты’
Как мы и сказали, никаких официальных пояснений принципа работа API PS Store найти было нельзя, поэтому пришлось изучать всё самостоятельно.
Мы погрузились в натуральный процесс обратной разработки и всё же смогли понять, какие ‘сущности’ выдаёт API и то, как они связаны между собой.
Самым важным для нашего проекта оказалось выявление двух принципов:
- Concept – глобальная ‘сущность’, связующее звено между продуктами, расположенными в PS Store (например, наименование и категория Kingdom Come Deliverance II – является ‘концептом’ для всех товаров, относящихся к нему);
- Product – конкретный вариант товара (например, тот же Kingdom Come Deliverance II имеет стандартное и ‘золотое’ издание. Каждое из них является отдельным ‘продуктом’).
Мы обнаружили, что у каждого концепта и продукта есть свой ID. За это и ухватились. Изначальной целью было создание логики приложения, основанной на принципе: “вставляем ссылку на товар, а дальше всё само работает”.
Для этого из ссылки нужно извлечь ID концепта, т.е. именно более масштабной ‘сущности’. Кажется, довольно просто, но вот что заметил наш тим-лид:
У Sony обнаружились определённые проблемы с логикой, так как разные товары могут содержать как ID концепта, так и ID продукта. С чем это связано, лично нам понять не удалось, благо, разобраться помогли сами Sony. Их разработчики подготовили два специальных запроса, которые позволяли абсолютно всегда получать ID концепта, только без нужных отдельных продуктов.
Эта финальная проблема быстро решилась благодаря отдельному запросу, на который уже можно получить ответ в виде подробной информации о продукте, включая цену на товар и его описание.
Резюмируя, можем сказать, что подключение к внутреннему API PS Store и получение данных с использованием их методов потребовало серьёзных временных затрат и привлечения сторонних ресурсов. Но дело было сделано, мы смогли получать актуальную информацию обо всех предложениях PlayStation и заложили основу для дальнейшей разработки.
Основной функционал (от интерфейса до покупки)
С техническими трудностями разобрались, теперь перейдём к основному функционалу. Поскольку основным принципом работы мини-приложений является предоставление максимума возможностей в рамках одного окна Telegram, мы сфокусировались на простоте и удобстве интерфейса и стандартизации функционала.
Каталог
Он же по сути и главная страница приложения. Здесь представлены все возможные товары PlayStation, в первую очередь, игры и дополнения к ним.
Товары распределены по нескольким категориям на основании стоимости, жанра, популярности и т.д. Отдельно стоит отметить категории с подписками PS Plus и EA Play, где можно выбрать разные пакеты.
Карточки товаров
Каждый товар имеет свою уникальную карточку, кликнув на которую, пользователь переносится на отдельную страницу игры (опять же, всё в рамках приложения и самого Telegram). Там можно увидеть информацию о стоимости, описание, наличии разных изданий и аддонов, а также добавить товар в ‘Избранное’. При этом, если, например, на добавленный в ‘Избранное’ товар появиться скидка или особое предложение, пользователь получит уведомление в мессенджере.
Поиск
Поскольку в приложении загружено несколько тысяч товаров, мы предлагаем удобную систему поиска.
Во-первых, стандартная поисковая строка для ввода названия, а во-вторых, отдельная функция фильтрации на основании нескольких критериев – версии консоли (PS4, PS5 или обе), диапозона стоимости, вида товара (издание, аддон, подписка) и других.
Личный кабинет
В приложении для пользователя автоматически создаётся личный кабинет, который он сможет редактировать, например, сохранив e-mail, на который будут приходить чеки о покупках или пароль от аккаунта PlayStation. Также доступна возможность просмотра истории заказов.
Корзина и оформление заказа
Если пользователь хочет купить товар, то его нужно добавить в корзину (что делается в один клик на странице самого товара). В корзине вы увидите два вариант оформления – на свой турецкий аккаунт или, при отсутствии такового, на аккаунт, который будет автоматически создан ботом в приложении.
После оформления, система автоматически переносит пользователя на страницу оплаты. Для удобства пользователей реализована оплата через СБП (Система Быстрых Платежей), где представлен список всех российских банков, с возможностью выбора любого из них.
После того, как пользователь провёл оплату, с ним связывается менеджер и проводит ручное оформление заказа.
Наличие кэшбэка и промокодов
Для стимулирования покупок мы добавили в приложение систему кэшбэка за каждую совершённую покупку. Сумма кэшбэка всегда отображается на интерфейсе возле цены товара и напрямую зависит от суммы, которую пользователь собирается потратить. Каждый пользователь может посмотреть свой суммарный кэшбэк в личном кабинете.
Помимо этого, администраторы приложений могут предлагать пользователям промокоды со скидками, а также предоставлять их в процессе решения каких-либо споров.
На данный момент более 5 000 пользователей ежедневно используют ТК Бот для приобретения продуктов PlayStation. Подкупают в первую очередь удобство (поскольку покупки можно совершать прямо из Telegram, при том без всяких тематических каналов и посредников), а также тот факт, что в магазине представлен практически весь ассортимент из оригинального PS Store, который, при этом, можно приобрести за рубли.
Несмотря на то, что продукт продолжает развиваться и некоторые вещи требуют доработки, мы уже имеем полноценный и крайне удобный PS-магазин в Telegram, аналогов которому ещё нет.
Вот что сказал клиент, заказавший у нас разработку:
Это очень удобный инструмент, который позволяет нам в реальном времени брать цену, язык, дату выхода, изображения из PS Store, при том не единожды, а несколько раз в сутки.
Если же вас заинтересовал наш опыт разработки подобных приложений, то вы можете ознакомиться с другими успешными проектами на сайте и подписаться на ‘Амбассадоры Telegram’, где активно публикуются новости и полезные материалы о мессенджере.
Я даже не думал что в телеграмме можно настолько крутые и серьезные проекты делать
Это еще не предел!)
Надеемся что это только начало)
Очень интересно!
Спасибо ☺️
Прикуплю что нибудь
Создать похожий магазин можно при помощи конструкторов: https://vc.ru/services/617115-sovremennye-konstruktory-dlya-sozdaniya-internet-magazina-v-telegram