Виджет интернет-магазина
Интеграция корзины
Как виджет превращает раскладку в строки корзины и почему цена, остатки и оформление заказа остаются главными на вашей платформе.
Виджет превращает готовую раскладку в конкретные строки корзины и передаёт их вашему магазину. Ваш магазин остаётся ответственным за цены, скидки, остатки и оформление заказа.
Полезная нагрузка колбэка
Когда покупатель нажимает Добавить в корзину, виджет вызывает onAddToCart с:
{
lines: [
{ sku: 'TILE-600-300', qty: 5, unit: 'box' },
],
layoutFingerprint: '…',
layoutToken: '…',
}
lines — это позиции для добавления. Каждая строка — SKU каталога, числовое количество и единица. Ответ всегда содержит строку плитки — итоговое число плиток к покупке, выраженное в коробках.
Расходники — по желанию
Клей, затирка и грунтовка всегда считаются и показываются в смете на экране и в Blueprint PDF. Синхронизируются ли они ещё и в корзину — отдельная настройка, которую включают мерчантам, продающим эти товары. Когда она включена, эти строки добавляются рядом с плиткой:
{
lines: [
{ sku: 'TILE-600-300', qty: 5, unit: 'box' },
{ sku: 'ADHESIVE-25', qty: 12.5, unit: 'kg' },
{ sku: 'GROUT-2KG', qty: 3, unit: 'kg' },
{ sku: 'PRIMER-10L', qty: 1, unit: 'l' },
],
layoutFingerprint: '…',
layoutToken: '…',
}
Свяжитесь с нами, если вы продаёте расходники и хотите включить их — мы включим это для вашего магазина при настройке.
layoutFingerprint — это стабильный идентификатор раскладки. layoutToken — подписанный токен, который вы можете сохранить, чтобы позже снова открыть ту же раскладку — например, чтобы приложить план к заказу.
Добавление в вашу корзину
Ваш колбэк добавляет строки через собственный API вашего магазина:
onAddToCart(payload) {
payload.lines.forEach((line) => {
yourStore.addToCart({
sku: line.sku,
quantity: line.qty,
unit: line.unit,
});
});
}
Для WooCommerce это вызов cart/add-item на каждую строку; для Shopify — мутация корзины; для кастомного магазина — ваш собственный сервис корзины. Виджет никогда не обращается к вашему магазину напрямую — это делаете вы, с теми SKU и количествами, которые он распознал.
Цена остаётся в вашем магазине
Виджет никогда не отправляет цену. Он может показывать прайс-лист из вашего каталога в смете для контекста, но финальную цену, налог, акции и скидки лояльности применяет ваше оформление заказа при добавлении строк. Это сохраняет один движок цен и исключает расхождение между виджетом и корзиной.
Остатки остаются в вашем магазине
Виджет добавляет то, что требует раскладка. Ваш магазин проверяет остатки по этим SKU ровно так же, как при любом другом добавлении в корзину. Если SKU заканчивается или недоступен, ваш существующий поток предзаказа и уведомлений работает без изменений.
Эндпоинт намерения корзины
Для headless и серверных интеграций есть эндпоинт cart-intent, который возвращает те же распознанные строки. Ваш сервер вызывает его с раскладкой и добавляет результат в корзину сессии:
curl -X POST "https://embed.scalarcut.com/v1/tiling/cart-intent" \
-H "Authorization: Bearer $WIDGET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"catalog": "YOUR_CATALOG_SLUG",
"sku": "TILE-600-300",
"layoutFingerprint": "…",
"quantities": { "boxes": 5 }
}'
Ответ:
{
"lines": [
{ "sku": "TILE-600-300", "qty": 5, "unit": "box" }
],
"layoutFingerprint": "…",
"layoutToken": "…"
}
Когда для магазина включены расходники, запрос может также нести adhesiveKg, groutKg и primerL, и в ответ добавляются соответствующие строки.
Полный контракт эндпоинта см. в справочнике API.