Открыть кабинет
Xohlayman for developers v1

Превратите карточку товара в понятное желание.

Одна ссылка или скрипт без зависимостей добавляет на ваш сайт кнопку, которая безопасно передаёт товар в редактор Xohlayman.

Без SDKHTTPS-only16 местных магазинов
GET/add307
shop.exampleSony WH-CH520620 000 so‘m
01Параметры валидируются
02Переход только в /app
03Пользователь подтверждает

Скрипт не читает корзину, cookies или данные покупателя.

Живой предпросмотр

Так кнопка выглядит в карточке товара

Кнопку ниже монтирует тот же публичный файл, который вы подключаете на своём сайте.

shop.example/products/headphones•••
NEW
AUDIO · БЕСПРОВОДНЫЕ

Sony WH-CH520

Лёгкие наушники для музыки, работы и долгих прогулок.

620 000 so‘m
Быстрый старт

Выберите способ подключения

Оба варианта ведут через одинаковый безопасный контракт /add.

Рекомендуется

Готовая кнопка

Добавьте data-атрибуты рядом с вашей кнопкой покупки и один асинхронный скрипт на страницу.

<div
  data-xohlayman-button
  data-title="Sony WH-CH520"
  data-url="https://shop.example/products/sony-wh-ch520"
  data-image="https://shop.example/images/sony-wh-ch520.jpg"
  data-price="620000"
  data-store="My Store"
></div>
<script async src="https://xohlayman.uz/xohlayman-button.js"></script>
Без JavaScript

Обычная ссылка

Сформируйте URL на сервере или прямо в шаблоне карточки товара.

<a href="https://xohlayman.uz/add?url=https%3A%2F%2Fshop.example%2Fproducts%2Fsony-wh-ch520&title=Sony%20WH-CH520&price=620000&store=My%20Store">
  Add to Xohlayman
</a>
SPA И ДИНАМИЧЕСКИЙ КАТАЛОГ

Монтируйте после обновления DOM

Скрипт сам замечает новые карточки. Публичный метод полезен, когда ваш фреймворк переиспользует существующий узел.

const mount = document.createElement('div');
mount.dataset.xohlaymanButton = '';
mount.dataset.title = product.name;
mount.dataset.url = product.canonicalUrl;
mount.dataset.price = String(product.priceUzs);
document.querySelector('.buy-actions').append(mount);

window.XohlaymanButton?.mount(mount);
Контракт /add

Поддерживаемые параметры

Ни один параметр не даёт права сохранить подарок автоматически. Неизвестные и небезопасные значения отбрасываются.

urldata-url
HTTPS URL · до 2048 символов

Каноническая ссылка на товар. Фрагмент #… удаляется; логины, пароли, порты и HTTP-ссылки не принимаются.

titledata-title
Текст · до 160 символов

Название, которое попадёт в редактор желания. Управляющие символы удаляются, повторные пробелы схлопываются.

imagedata-image
HTTPS URL · до 2048 символов

Публичное изображение товара. Браузер загрузит его только после явного подтверждения пользователя в редакторе.

pricedata-price
Целое число · UZS

Цена без пробелов, валютного знака и десятичной части: например, 620000. Допустимы значения до 999 999 999 999.

storedata-store
Текст · до 80 символов

Отображаемое название магазина или продавца.

kinddata-kind
gift | fund

Предлагаемый тип: обычный подарок или общий сбор. Пользователь сможет изменить выбор перед сохранением.

prioritydata-priority
must | want | nice

Предлагаемый приоритет желания. Неизвестные значения игнорируются.

Только для виджета

Внешний вид и поведение

data-label
Свой текст кнопки, до 60 символов. По умолчанию: Add to Xohlayman.
data-variant
solid (по умолчанию) или outline.
data-size
default или compact; оба варианта сохраняют tap target не меньше 44px.
data-new-tab
Новая вкладка включена по умолчанию; укажите false для текущей.
Поддержка магазинов

Ссылка не потеряется, даже если магазин закрыт от роботов

Из известных магазинов Xohlayman либо читает публичные метаданные, либо сохраняет ссылку и открывает редактируемую карточку.

11 магазинов

Автозаполнение

Пробуем получить название, изображение и цену.

AsaxiyMETAOlchaMETATexnomartMETAMediaparkMETAAlif ShopMETABeeMarketMETAGlotrMETAideaAPIiSpaceMETABuyMarketMETATovar.uzMETA
5 магазинов

Ссылка + проверка

Антибот не мешает добавить желание вручную.

Uzum MarketLINKYandex MarketLINKWildberriesLINKOLXLINKBirmarketLINK
Безопасный маршрут и строгий CSP

/add принимает только перечисленные поля, HTTPS-ссылки без credentials и всегда перенаправляет на тот же origin в /app. Произвольный redirect передать нельзя. Если сайт использует nonce в style-src, укажите тот же nonce у подключаемого скрипта — виджет перенесёт его на свои стили.

ГОТОВО К ИНТЕГРАЦИИ

Дайте покупателю сохранить желание в один тап.

Перейти к примеру