Биллинговая система, т.е. система для учета платежей.
Технологии:
- Laravel
- API (в идеале — FireBase (Google) или MongoDB.
Они создают API на основе БД + удобны для мобильных приложений, Telegram-ботов и т.д.)
- QR-код сканер в учетной записи админа для идентификации покупателя.
Идея
Избавление от необходимости носить мелкую наличность — достаточно дать один раз некоторую сумму (200 грн, например) и с помощью телефона оплачивать товар/услугу (владельцу не нужен терминал для оплаты — он стоит денег).
Хозяин киоска регистрируется на нашем сайте, создает магазин, учетную запись админа (статус "владелец").
При регистрации отмечает галочку что согласен с правилами и что только он несет ответственность перед законом (налоговой) если посмеет не сообщать о продажах (не платить налоги).
Хозяин добавляет товары (или продавец, смотри далее):
наименование, цена, доступное количество (не обязательное поле), фото (не обязательное поле) и т.д.
После этого для него доступен QR-код для распечатки и наклеивания на витрине киоска -- чтоб покупатели сканировали его и переходили на сайт магазина, где смогут зарегистрироваться, пополнить свой счет (наличными у продавца -- продавец также является админом, но статус "продавец" -- чтоб было понятно кто владелец магазина, а кто просто продавец). После чего может заказать товары/услуги заранее, а придя к киоску дает отсканировать QR-код и таким образом дает понять продавцу что именно он сделал предзаказ. Продавец дает товар и отмечает что товар отпущен для этого покупателя, таким образом покупатель не сможет дважды купить один товар, заплатив единожды.
Безопасность:
Заказ товара и другие важные многоходовые операции должен быть транзакциями (тут думаю понятно).
QR-код покупателя после каждой покупки нужно менять, т.к. иначе злоумышленник сможет использовать его для забирания товара бесплатно в будущем. Т.е. нужно чтоб QR-код содержал соль (посоветовал препод) — т.е. его очередная генерация не могла быть предсказуема на основе данных пользователя. (Но тут снова возникает лазейка для злоумышленника — успев перехватить QR-код до сканирования пользователем и применив его, злоумышленник сможет забрать товар, поэтому, возможно от идеи QR-кода можно избавиться — чтоб пользователь просто в личном кабинете нажимал кнопочку "Я на месте, готов забрать товар" — по API !безопасно! передается команда и продавец сразу видит что кто-то готов забрать товар. Если продавец захочет, может спросить номер заказа, чтоб точно быть уверенным в том что товар забирает истинный покупатель (но это уже как вариант допольнительной безопасности). И, покупатель, если захочет, может выложить свое фото для идентификации (для дополнитльной безопасности) -- но это только идея, думаю вряд ли пользователям понравиться стирание частичной анонимности.
Обязательные требования:
- заказ нужно выполнить в срок, т.к. позже он не будет иметь смысла;
- в течении максимум 1 часа нужно будет выйти на связь и продемонстрировать работу сайта – от установки на ПК до того из чего он состоит и как пользоваться – в режиме демонстрации экрана.