Задача: Ученикам за выполнение домашнего задания начисляются монеты. Организовать покупку дополнительных уроков для учениц курса за монеты.
Решение: На платформе GetCourse есть несколько собственных внутренних «валют».
Депозит – это реальная сумма денежных средств пользователя, которая находится у него в профиле и может быть использована для оплаты заказа.
Бонусный счет (бонусные рубли) – это виртуальные деньги пользователя, которые он может потратить внутри аккаунта на покупку продуктов. В предложениях можно настроить ограничение на величину использования бонусных рублей – убрать вообще возможность использовать бонусные рубли или ограничить максимальную сумму.
Монеты – дополнительный элемент геймификации, которые можно также как и бонусные рубли начислять и списывать пользователям за их активность. Но отличительной их особенностью является, что платформой предусмотрено из списание в обмен на пропуск стоп-урока. Как мы видим – это не совсем соответствует нашей задаче – реализовать покупку уроков за монеты – функционалом платформы это не предусмотрено.
При разработке геймификации очень часто принимается решение начислять бонусные рубли за выполнение тех или иных заданий учеником. Но в какой-то момент это становится неудобным, и хочется для геймификации использовать какую-то дополнительную внутреннюю «валюту».
Спасибо Петру Петипаку за подкинутую идею, которую я незамедлительно внедрила в одном из проектов.
Для организации покупки уроков таким способом нужно создать витрину уроков, которые может купить ученик. При желании купить тот или иной урок клиенту предлагается заполнить форму покупки и нажать на кнопку «Купить» как любой другой урок. НО основное отличие от обычной формы – мы не вшиваем туда предложение или создание заказа, а запускаем процесс на обработку запроса клиента. В форму также вшито действие Переадресация для обновления текущей страницы, так как на ней я выводила текущее состояние баланса «Монеты» для пользователя, чтобы он всегда видел перед глазами актуальное количество монет, которое может потратить на покупку уроков.
Что содержит в себе процесс? В процессе мы проверяем есть ли необходимое количество монет на балансе у пользователя. Если монет недостаточно для покупки, то уведомляем клиента об этом. Если монет достаточно для покупки, то списываем с баланса пользователя необходимое количество монет и отправляем клиенту ссылку на доступ к уроку.