Jump to content

Recommended Posts

Создал апи контрорллер метод которого добавляет продукты сайта в корзину(зачем я это делаю неважно :D). Суть в том, что в базу продукты добавляются, ведь я использую стандартный метод "checkout/cart/add", но какие-то проблемами с сессиями... В базу не та сессия записывается. Вопрос в том как получить корзину "созданную" через апи. 

Share this post


Link to post
Share on other sites

Правильное решение для апи - это отсутствие сессий и вообще каких-либо состояний (типа залогинен покупатель или нет). Запросы должны быть атомарными.

При добавлении первого товара в корзину, создавайте её и записывайте в базу, передавая в ответ её id, а затем используйте его при добавлении последующих товаров и других операциях с корзиной.

 

я использую стандартный метод "checkout/cart/add"

На это есть какие-то причины или вы просто не знали про /catalog/controller/api/cart.php?

Правда, там тоже сессии есть.

 

Собственно, создание корзины и запись в базу там уже есть, вам надо просто переделать, чтоб вместо сессий использовался сам id корзины, ну и чтоб он передавался.

Share this post


Link to post
Share on other sites

Правильное решение для апи - это отсутствие сессий и вообще каких-либо состояний (типа залогинен покупатель или нет). Запросы должны быть атомарными.

При добавлении первого товара в корзину, создавайте её и записывайте в базу, передавая в ответ её id, а затем используйте его при добавлении последующих товаров и других операциях с корзиной.

 

 

 

На это есть какие-то причины или вы просто не знали про /catalog/controller/api/cart.php?

Правда, там тоже сессии есть.

 

Собственно, создание корзины и запись в базу там уже есть, вам надо просто переделать, чтоб вместо сессий использовался сам id корзины, ну и чтоб он передавался.

Я не знал об api/cart, не досмотрел, не работал с опенкартом ранее. Как я смогу отображать корзину пользователю на фронте?

Share this post


Link to post
Share on other sites
Как я смогу отображать корзину пользователю на фронте?

Отправляйте запрос к api/cart/products и получите в json формате все товары + итоговую сумму с учётом всех модулей, которые на неё влияют.

 

Но там используется api_id из сессии. Лучше бы переделать, чтоб он явно передавался в запросах.

Share this post


Link to post
Share on other sites

Отправляйте запрос к api/cart/products и получите в json формате все товары + итоговую сумму с учётом всех модулей, которые на неё влияют.

 

Но там используется api_id из сессии. Лучше бы переделать, чтоб он явно передавался в запросах.

Не понял что именно переделать. Да, я вижу что в каждом методе идет проверка на существование сессии с ключем api_id.

Share this post


Link to post
Share on other sites
Не понял что именно переделать.

Отказаться от сессий и передавать api_id в каждом запросе, хотя бы параметром в ссылке и тогда вместо $this->session->data['api_id'] использовать $this->request->get['api_id'].

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.