Данные у тебя приходят в не оптимальном формате с фронта. Отсюда и проблемы. И валидации нет - теоретически можно будет купить товар по копейке.
На счёт валидации, я ещё до не не до шёл. Это не оконченная работа. А как должны выглядит данные с фронта- оптимально?