Сервер для внутриигрового магазина
Задача и требования
Задача и требования
Разработать серверную часть для внутриигрового магазина
Через который игроки смогут приобретать предметы, скины, усиления и прочие внутриигровые элементы за игровую валюту. Система должна быть безопасной, масштабируемой и гибко настраиваемой
Разработать серверную часть для внутриигрового магазина
Требования к будущей системе
Ключевые критерии и ожидания, легшие в основу проектирования решения
Внутриигровые покупки
Внутриигровые покупки
Система должна поддерживать оплату за игровую валюту, а в дальнейшем — донаты и интеграцию с платёжными шлюзами для расширения монетизации
Управление данными игроков
Управление данными игроков
Необходимо обеспечить хранение и отображение инвентаря пользователя, а также вести историю всех покупок для отслеживания активности и аналитики
Гибкая настройка магазина
Гибкая настройка магазина
Магазин должен конфигурироваться без пересборки клиента, с возможностью подключения внешних источников контента — временных акций, ивентов и предложений
Поддержка существующей архитектуры
Поддержка существующей архитектуры
Решение должно интегрироваться с текущей системой авторизации и профилей, обеспечивая бесшовную работу и единое управление пользователями
Трудности
Трудности
Отсутствие централизованного решения мешало монетизации, валидации и синхронизации покупок между клиентами и игровыми сессиями
Потребность в синхронизации
Потребность в синхронизации
Обеспечить консистентность покупок и инвентаря между режимами и сессиями
Отсутствие валидации
Отсутствие валидации
Выстроить безопасный процесс валидации транзакций и проведения аудита
Простота в управлении
Простота в управлении
Обеспечить гибкое управление товарами и акциями без пересборки клиента
Необходимость в хранении
Необходимость в хранении
Структура данных для истории покупок, скидок и временных ивентов с высокой производительностью
Инструменты
Инструменты
Стек технологий, используемых на проекте
.NET / ASP.NET Core
Реализация API и фоновых сервисов
01
JWT
Авторизация и валидация прав пользователя
02
PostgreSQL
Основное хранилище статистики
03
ORM EF Core
ORM и миграции
04
Docker, Docker Compose
Развёртывание окружения
05
Nginx
Проксирование запросов к API
06
NUnit
Тестирование логики
07
Решение
Решение
Игроки получили безопасный доступ к покупкам и управлению предметами, а каталог можно настраивать для временных предложений и ивентов
Решение открыло новые каналы дохода и стало ключевым инструментом монетизации
API магазина
Созданы каналы обмена данными для получения товаров, совершения покупок, отображения инвентаря и истории транзакций
Хранение данных
Реализована структура в PostgreSQL с таблицами для товаров, категорий, валют, скидок и пользовательских инвентарей
Временные ивенты
Система временных событий и скидок учитывает время действия и условия для активации предложений
Тестирование логики
Написаны юнит- и интеграционные тесты для критических участков работы магазина
Аудит покупок
Организован механизм логирования транзакций и аудита для отладки и расследования спорных ситуаций
Интеграция модулей
Обеспечена совместимость с существующими системами авторизации, профилей и статистики