Ахитектура мастера покупок. Как организовать шаги, ветвления и прочее?

Мастер покупки в онлайн игрушке.
Реализация только на клиентской стороне.

Есть юзер.
Есть ряд товаров (золото, премиум и т.д.)
Для некоторых товаров надо указывать доп. параметры. для золота номер счета, для премиума - тип премиума.
Есть ряд платежных систем (яндекс, киви, виза и т.д.)
Для некоторых платежных систем надо указать доп параметры (для киви - телефон)
Если покупаешь много золота через визу, то получаешь бонус.

Хочу сделать в виде мастера с шагами:
выбор юзера
выбор товара
доп.параметры товара
платежная система
доп. параметры
итоги и переход к оплате.

Естественно, завтра может измениться список товаров и платежных систем.
Надо придумать механизм шагания туда-сюда и в нем предусмотреть случай "вернулся на два шага назад и поменял логику следующих шагов или не поменял".

Ума не приложу, как построить код.
Напрашивается некий управляющий класс, который оперирует объектами-шагами.
Где-то хранится общий контекст (данные мастера, которые заполняют разные шаги)
Как организовать хранение/управление объектами-шагами?
Кто дожен знать, какой следующий/предущий шаг ?

Например. Выбрал покупку премиума через киви, указав номер телефона для этого самого киви. Потом откатился обратно, указал покупку грамма золота. Киви телефон надо не потерять, но! грамм золота стоит меньше минимальной суммы оплаты через киви. О чем клиента надо предупредить.

Если такая заморочка с зависимостями сложна, то тогда остановиться на варианте "при возврате после отката всё вводить новой".
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Пишите все данные поступившие от пользователя в localstorge, заполняйте оттуда.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Куки или локалстораж, соответственно и степ можно там хранить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы