Когда Доступно Добавление
Заранее подключите каталог, передайте идентификаторы товаров и предложений и установите виджет. Магазин должен иметь рабочую корзину и обработчик добавления. Нативный модуль Битрикса использует локальный путь /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 |
Идентификатор одного действия | Повтор ответа не должен удваивать товар |
Проверьте Варианты И Наличие
- Найдите товар с несколькими предложениями и откройте выбор варианта.
- Выберите нужный цвет или размер; сравните цену и наличие именно этого варианта.
- Нажмите «В корзину» один раз и дождитесь результата.
- Откройте штатную корзину магазина в том же браузере.
- Сверьте название варианта, количество, цену и валюту, а не только родительскую карточку.
В данных различаются 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 |
Ограничение магазина, остаток или провайдер | Прочитать сообщение, проверить товар на сайте |
| Значок есть, корзина пуста | Нет подтверждения настоящего обработчика | Проверить интеграцию, не считать значок покупкой |
| Цена отличается | Актуальная цена или скидка магазина | Сверить корзину и обновить каталог при необходимости |
Полную приёмку проводите по чеклисту; проблемы загрузки каталога отделяйте от ошибок корзины в диагностике.