Это уже совсем мальнький экран, когда блоки перенеслись в колонку. Проблема с выдавливанием цены возникает, когда 2 блока (товары и блок тотал инфы) в одну строчку.
Сергей Горностаев, для интернет-магазина это хороший и безопасный вариант. Мне такое в целом не подходит, у меня из-за специфики пользователь не может иметь несколько неоплаченных заказов и потом выбирать что оплатить, но версионность (когда сейвим неоплаченные корзины/заказы) это видимо самый правильный путь.
Adamos, здесь есть проблема в одинаковом cart_id, что если пользователь вернется с платежной системы в корзину и изменит заказ, а потом обратно переключится на сайт платежки и оплатит, то, когда мой сайт получит уведомление там будет order_id корзины, в которой уже другой состав. Уязвимость. Решается созданием новой carts и всех cart_items при каждом открытии корзины, но тогда нагрузка на бд.
Adamos, допустим есть только products, я все равно не понял процесса. Если до оформления заказа в cart_items не будет всех условий (прайс скидки название), то после оформления (поступления оплаты) - если данные изменятся то правильную инфу будет неоткуда брать.
Adamos, т.е. добавляем товары в cart_items где все поля условий null. В cart добавляем order_id = null. Когда оплачено, создаем order и сетаем в cart order_id, а в cart_items поля null заполняем данными из products - так, чтоли?
Пользователь добавляет товары в корзину, идет платить, возращается к корзине - добавляет товары еще на миллион долларов, возращается к платежке - оплачивает и мы получаем состав заказа на миллион с оплатой на рубль.
Не понял процесс.. Как товары естественным образом перекочуют в заказ? Откуда перекочуют? Если брать из products то в соседнем ответе обсуждали, что там может быть не актуальная информация пока юзер платит. Дыра безопасности.
Сергей Горностаев, в момент покупки - это когда? Когда нажимает на кнопку перейти к оплате не проблема. Я имею ввиду когда клиент уже смотрит на форму ввода карты на сайте платежной системы. И тут он забыл карту, пошел ее искать и в процессе решил попить чаю. А потом, когда оплатил, у платежной системы или у меня сбой и уведомление пришло через 2 часа. А за это время цена товара изменилась и ты записываешь в order_items не то, что было по факту.
Сергей Горностаев, здесь есть проблема, что пока юзер оплачивает (или идет уведомление) цена может поменяться и есть шанс после оплаты записать в order_items неневерные данные. А если сохранять все условия в cart_items, то тогда данные получишь строго на момент покупки. Но тогда еще придется хранить версии корзин (создавать новую корзину с items при каждом ее открытии).
Талян, название товара, цена скидки, процент, тип скидки, купон - и все это может меняться. Пользователю и для истории нужно сохранить данные на момент заказа. И цену в корзине высчитывать неудобно если нет "продуктов" и цена формируется в результате логики.
Сергей Горностаев, не у таблицы заказов, а у order_items. Получается carts связанная с cart_items, orders связанная с order_items и orders, связанная с carts. cart_items будет дублировать по структуре order_items