Создание плагина¶
Чек-лист для тех, кто пишет плагин или модуль для CMS или платформы магазинов, который подключает магазин к Ziex Try-On. Проходите пункты по порядку. Плагин, прошедший все пункты, ведёт себя так же, как плагин WooCommerce и модуль 1С-Битрикс. Эти же проверки подходят как приёмочный тест вашего плагина.
Это не автоматический тест
Это чек-лист, который вы выполняете вручную. Скрипта, который проходит его за вас, мы пока не публикуем.
Устройство плагина¶
У плагина две половины:
- Серверная работает на сервере магазина. Она хранит секретный ключ (
tryon_…) и обращается к API. - Страничная выводится на страницу товара. Она знает только публикуемый ключ (
pk_…) и запускает виджет.
Секретный ключ не покидает сервер. Если он попал на страницу, его прочитает любой посетитель, а он ещё и открывает вход в личный кабинет клиента с фотографиями покупателей. См. Ключи.
1. Подключите сайт¶
- [ ] Спросите API о сайте. С сервера вызовите
GET /api/v1/tryon/integration?site_url=<адрес магазина>, передав секретный ключ вX-API-Key. Вызывайте его, когда владелец магазина сохраняет ключ и когда открывается страница настроек, а не при каждом просмотре страницы: он входит в общий лимит запросов (см. Лимиты), а ответ меняется редко. - [ ] Прочитайте
site.allowed. Выводите виджет, только когда значениеtrue. Еслиfalse, причину называетsite.reason:key_not_bound(у ключа нет привязанного домена),domain_mismatch(ключ принадлежит другому сайту) илиdev_host(боевой ключ на тестовом хосте). Покажите владельцу магазина подходящее сообщение; дляdev_hostнапишите «используйте тестовый ключ на локальном сайте». Соответствие причин кодам ошибок — в Ошибках. -
[ ] Используйте остальной ответ. Поля, которые нужны плагину:
Поле Что это site.allowed,site.reason,site.hostМожет ли этот сайт использовать ключ, почему нет, и хост сайта в том виде, как его читает API. key.publishable_keyКлюч pk_…, который выводится на страницу.key.modeliveилиtest. Дляtestскажите владельцу магазина, что деньги не списываются, а результат имитируется.key.domain,client.nameПривязанный домен и название аккаунта — для страницы настроек. planНазвание тарифа, его лимит, использовано и осталось генераций, дата сброса. widget.script_url,widget.api_urlСкрипт виджета и адрес API с нашего хоста. capabilitiesКатегории, которые поддерживает сервис (ниже). integrationsДля каждого известного плагина или модуля: latest_version,download_url(илиnull, если архив мы передаём сами) иdocs_url. С его помощью сообщите владельцу, что вышла новая версия вашего плагина. -
[ ] Называйте плагин в каждом серверном вызове. Отправляйте
X-Ziex-Integration: <name>/<version>и собственныйUser-Agent(см. Идентификация и Краткое руководство B).
2. Безопасно выведите виджет¶
- [ ] Ни одного ключа
tryon_…на странице. Проверьте страницу, которую выдаёт плагин: HTML, встроенный скрипт, файлы JavaScript, cookie и данные, которые передаются во фронтенд. Строка, начинающаяся сtryon_, не должна встречаться нигде. Допустим толькоpk_…. - [ ] Адрес скрипта и ключ берите только из нашего ответа. Используйте
widget.script_urlиwidget.api_urlиз ответаintegration, а такжеkey.publishable_key. Не берите их из настройки, которую владелец магазина может ввести сам, и не собирайте самостоятельно. Скрипт всегда загружается сhttps://api.ziex-tryon.com/embed/; не копируйтеtryon-embed.jsна сервер магазина, потому что виджет берёт адрес API оттуда, откуда загружен его скрипт. -
[ ] Инициализируйте виджет с такими опциями (все описаны в Справочнике по виджету):
Опция Значение apiKeyПубликуемый ключ, pk_….productImageГлавное изображение товара, URL с https://.productTitleНазвание товара. productUrlАдрес страницы товара. categoryidкатегории изGET /api/v1/tryon/capabilities(или из блокаcapabilitiesответаintegration):tops,outerwear,bottoms,one-piecesлибоauto, если товар не удаётся сопоставить (если толькоauto.availableне равноfalse). Не зашивайте список в код: он растёт.launcherfalse. Плагин рисует свою кнопку и вызываетTryOn.open().lockCategorytrue. Категорию выбрал магазин, покупателя о ней не спрашивают.integration"<name>/<version>", например"acme-cms/1.0.0". -
[ ] Подхватывайте примерку после смены страницы. Загружайте виджет лениво, но сразу — на странице, где вкладка хранит идущую примерку, иначе покупатель не увидит результат. Используйте
ZiexTryOn.hasPending(pk)иZiexTryOn.load()загрузчика; не копируйте правило слота. См. Отложенную загрузку и подхват. - [ ] Разрешите виджет в Content-Security-Policy страницы, если магазин её задаёт. См. CSP. Плагину, который добавляет встроенный скрипт, нужен собственный механизм nonce платформы.
3. Проверьте тестовым ключом¶
Делайте это на стенде разработки с тестовым ключом, он ничего не стоит. См. Тестовые ключи и Локальную разработку.
- [ ] Проверьте тестовый ключ.
GET /api/v1/tryon/integrationс тестовым секретным ключом отвечаетkey.mode: "test". На локальном или промежуточном хостеsite.allowedравноtrue, если хост разрешён для ключа. - [ ] Отправьте с сервера одну примерку с
Idempotency-Key, затем опрашивайтеGET /api/v1/tryon/status/{job_id}доcompleted. Фото должно быть загрузкой (data URI). Повтор того же запроса с тем же ключом должен ответить200с той же задачей и не создавать вторую. См. Краткое руководство B. - [ ] Один раз запустите виджет на странице стенда с
pk_test_…тестового ключа: откройте окно, отправьте фото, дойдите до результата. В окне виден значок «TEST». - [ ] Проверьте подпись вебхука на перехваченной доставке. Зарегистрируйте эндпоинт в режиме
test, отправьте тестовую примерку и проверьтеX-TryOn-Signature-V2по сырым байтам тела, с отказом при устаревшей метке времени. См. Вебхуки.
4. Расскажите покупателю¶
- [ ] Дайте магазину абзац для политики конфиденциальности. Фото покупателя передаётся сервису, и магазин обязан об этом сказать. Покажите владельцу готовый текст со страницы Текст для политики конфиденциальности и скажите добавить его в политику.
- [ ] Обрабатывайте ошибки по коду, а не по тексту. Для каждого кода покажите покупателю понятное сообщение, а исходный текст оставьте для своего журнала. См. Ошибки.
Примеры для изучения¶
Два плагина — готовые примеры этого чек-листа:
- Плагин WooCommerce. Архив:
https://app.ziex-tryon.com/downloads/ziex-tryon-woocommerce.zip. - Модуль 1С-Битрикс. Архив мы передаём напрямую; напишите нам.
Когда плагин готов, напишите нам (см. Контакты): название и метку версии, которую он отправляет.