Документация
/ Документация
Руководство по интеграции

Корзина и выбор предложения

Кнопка «В корзину» должна изменять настоящую корзину посетителя, а не просто показывать успешный значок. Для Битрикса проверьте выбранное предложение, текущую сессию, ответ магазина и цену на штатной странице корзины; добавление товара ещё не означает покупку.

На этой странице

Когда Доступно Добавление

Заранее подключите каталог, передайте идентификаторы товаров и предложений и установите виджет. Магазин должен иметь рабочую корзину и обработчик добавления. Нативный модуль Битрикса использует локальный путь /local/ajax/anmarto_cart.php и модули catalog, sale, abr.search. Загрузка скрипта виджета сама по себе не создаёт корзину на произвольном сайте.

На другом движке интеграция должна обрабатывать добавление через callback, событие anmarto:add-to-cart или серверный адрес data-cart-url. Не подключайте несколько независимых обработчиков, добавляющих одну позицию одновременно. При отключении cart консультант должен вести на страницу товара, а не обещать выполненное действие.

Значение Что проверять Почему важно
id Идентификатор товара в каталоге Находит родительский товар
offer_id Выбранный размер, цвет или другая вариация В корзину должен попасть конкретный вариант
quantity Положительное количество и единица продажи Штука, упаковка и площадь не взаимозаменяемы
sessid Действующая сессия Битрикса Действие выполняется от имени посетителя
op_id Идентификатор одного действия Повтор ответа не должен удваивать товар

Проверьте Варианты И Наличие

  1. Найдите товар с несколькими предложениями и откройте выбор варианта.
  2. Выберите нужный цвет или размер; сравните цену и наличие именно этого варианта.
  3. Нажмите «В корзину» один раз и дождитесь результата.
  4. Откройте штатную корзину магазина в том же браузере.
  5. Сверьте название варианта, количество, цену и валюту, а не только родительскую карточку.

В данных различаются in_stock, backorder и out_of_stock. Явное out_of_stock означает отсутствие кнопки покупки на карточке; backorder допускает заказ по правилам магазина. Без явного состояния is_available: false может отображаться как «Под заказ», а не «Нет в наличии». Исправляйте данные источника, если магазину нужно различать эти случаи.

Индекс показывает сведения последней обработки каталога. Фактическое добавление проверяет магазин и его товарный провайдер. Изменившийся остаток, ограничения покупки или недоступное предложение могут привести к отказу, даже когда карточка раньше показывала наличие. Положительный общий остаток родителя не доказывает наличие выбранного размера.

Цена Карточки И Цена Корзины

Цена карточки приходит из индекса; строка корзины рассчитывается по правилам Битрикса для текущего посетителя, включая применимые скидки. Поэтому итог может отличаться. Обработчик возвращает card_price, price, currency, price_changed и price_verified: виджет сообщает о подтверждённом расхождении, а не молча сохраняет старую цену.

Если расчёт витринной цены не подтверждён, price_verified: false и price_changed: null означают «не проверено», не «цена совпала». Откройте корзину и уточните действующие условия магазина. Интеграция не обещает универсального расчёта доставки, всех комплектов, площади помещения, минимальной партии или персонального договора. Для таких сценариев нужны правила и обработчики конкретного магазина; не заменяйте ими проверку выбранного предложения.

Повтор После Сетевого Сбоя

При потерянном ответе неизвестно, сохранил ли магазин действие. Повтор незавершённой операции использует тот же op_id и retry: true. Битрикс хранит успешный ответ в сессии до 15 минут, максимум 50 операций, и отдаёт его повторно без второго добавления. Это ограниченная защита в той же сессии, не бессрочная гарантия после очистки cookies или смены браузера.

После подтверждённого результата следующий осознанный клик создаёт новую операцию и действительно увеличивает количество. Не проверяйте повтор нажатием новой покупки: это другой сценарий. При неопределённом результате сначала посмотрите реальную корзину, затем используйте предложенный повтор.

Чат И Ошибки

Чтение состава требует подключённого getCart; изменение количества и удаление требуют соответствующего обработчика. Ссылка оформления требует checkoutUrl. Внешний статус заказа требует отдельного onToolCall и доступа магазина, не появляется автоматически вместе с корзиной. Согласие на действие не является подтверждением оплаты или покупки.

Симптом Причина Действие
bad_sessid, отказ доступа Устарела сессия или страница Обновить страницу магазина, сохранить выбранный вариант
Добавлен другой размер Потерян offer_id Исправить передачу предложения
basket_error Ограничение магазина, остаток или провайдер Прочитать сообщение, проверить товар на сайте
Значок есть, корзина пуста Нет подтверждения настоящего обработчика Проверить интеграцию, не считать значок покупкой
Цена отличается Актуальная цена или скидка магазина Сверить корзину и обновить каталог при необходимости

Полную приёмку проводите по чеклисту; проблемы загрузки каталога отделяйте от ошибок корзины в диагностике.