Добавить в корзину товары, которые парсятся с сайта поставщика?

Интернет магазин, есть свои товары(через админку добавляемые в каталог товаров), и есть подключенная веб проценка от поставщиков (когда человек ищет товар по артикулу, ему сначала предлагается купить со склада, а потом варианты на заказ через API поставщика). При добавлении товара в корзину, в сессию записывается ID товара, и количество. И в самой корзине соответственно по ID данного товара идет выборка других характеристик( наименование товара, производитель, страна и т.д.).

Вопрос знатокам:
Как грамотно реализовать возможность покупки товаров, получаемых через API поставщика?

Пока что в голове только:
По клику на кнопку "Купить" (товара получаемого через API), делать INSERT этого товара в базу, присваивать ему ID, записывать количество и ИД данного товара в сессию, и отправлять в корзину. В корзине соответственно выборка наименования, производителя, и т.д.

Но тут уже на предмет говнокода нужно проверить...

В общем я в ступоре.
  • Вопрос задан
  • 871 просмотр
Решения вопроса 1
by25
@by25
Веб-разработчик
В целом логичное решение. Но я бы немного доработал.
В классе записи корзины (CartItem) добавляем поле "storage" (или типа того). Если 'local' - товар из текущей БД магазина, для поставщиков добавляем какой-то идентификатор. Выборку должен осуществлять, с учетом storage, наш репозиторий/менеджер/etc.
Во время добавления в корзину, я бы не добавлял запись в БД. Исходя из нашего "storage" можно дергнуть товар у поставщика. Но не совсем эффективно делать каждый раз запрос. Поэтому результаты запросов к api поставщиков кэшируем (файл-кэш, редис, мемкэш и т.д.). А при оформлении заказа, уже нужно инсертить товар внешнего поставщика. Причем можно пересмотреть структуру таблицы "Товары заказа", как-то так:
storage, order_id, product_id, quantity, price_unit...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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