API виджета Trade-in и вебхуки
Встраивание виджета, синхронизация статусов вебхуками HMAC-SHA256 и каталог на стороне FastTradein.
Быстрый старт
Вставьте виджет двумя строками HTML, затем добавьте домен магазина в список разрешенных. Скрипт обращается только к FastTradein, а не к вашей CMS.
Вставьте этот код в HTML страницы Trade-in. Замените ключ публичным ключом виджета из кабинета (страница «Виджет на сайт»).
<!-- FastTradein Widget -->
<script src="https://fasttradein.app/widget/fasttradein.js" async data-no-optimize="1" data-no-defer="1"></script>
<fasttradein-widget key="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" api="https://fasttradein.app" lang="ru"></fasttradein-widget>
Сниппет задает api — адрес этого хоста FastTradein. Без него виджет обращается по адресу, с которого загружен скрипт fasttradein.js.
Параметры сниппета
| Параметр | Обязательный | Описание |
|---|---|---|
| key | Обязательный: Да | Публичный ключ магазина из «Настроек магазина» или со страницы «Виджет на сайт». С ним можно читать каталог, запрашивать оценку и отправлять заявку. Менять цены и открывать чужие магазины им нельзя. |
| data-key | Обязательный: Нет | Тот же публичный ключ, что и key. React и Vue резервируют key и не передают его элементу, поэтому там пишите data-key. Виджет читает сначала key, потом data-key и перезапускается, когда любой из них меняется. |
| lang | Обязательный: Нет | Стартовый язык интерфейса, пока клиент не переключит его сам: en, de, es, pl, ru, uk. |
| api | Обязательный: Нет | Origin FastTradein, например https://fasttradein.app. Оставьте его в сниппете. |
| currency | Обязательный: Нет | Это не HTML-атрибут. Валюта витрины (EUR, PLN, UAH, USD и другие из кабинета) берется из настроек магазина. Цены каталога хранятся в евро и пересчитываются по курсу платформы. |
События для учета конверсий
Элемент отправляет событие fasttradein:quote, когда клиент получает оценку, и fasttradein:order, когда заявка отправлена. Оба всплывают и проходят сквозь shadow DOM (composed), так что слушайте их на элементе или на document. В event.detail есть device и blocked (оценка) или device и payout_method (заявка), но данных клиента там никогда нет.
Сниппеты для CMS
Инструкции для 111 платформ. Перед публикацией добавьте сайт магазина в разрешенные домены виджета.
Показано платформ: 111 из 111
WooCommerce Мировые
Страницы → страница Trade-in → блок «Произвольный HTML»: вставьте код во вкладку HTML и сохраните страницу. Для многих страниц строку <script> можно подключить в подвале темы (Внешний вид → Редактор → Паттерны → Footer) или плагином WPCode, а на страницах оставить только тег виджета.
OpenCart Мировые
Дизайн → Макеты: добавьте модуль «HTML-содержимое» со сниппетом в макет страницы Trade-in. Можно и так: строку <script> подключите в catalog/view/theme/<тема>/template/common/footer.twig (OpenCart 3) или catalog/view/template/common/footer.twig (OpenCart 4), а в модуле оставьте только тег <fasttradein-widget …></fasttradein-widget>, потому что подвал выводится на каждой странице.
Shopify Мировые
Online Store → Edit theme: создайте шаблон страницы (Pages → Create template), добавьте в него секцию Custom Liquid с кодом и сохраните. Затем в Online Store → Pages выберите этот шаблон у страницы Trade-in. Если в теме нет секции Custom Liquid, вставьте код в шаблон страницы через редактор кода темы.
PrestaShop Мировые
Установите бесплатный модуль FastTradein: Modules → Module Manager → Upload a module, затем Configure, и вставьте код или ключ. Напишите [fasttradein] отдельной строкой в тексте страницы в Design → Pages. PrestaShop не сохраняет <script> в содержимом страницы и вырезает тег виджета, поэтому виджет подставляет модуль при показе страницы.
Magento / Adobe Commerce Мировые
Content → Elements → Blocks: создайте статический HTML-блок и выведите его через Content → Pages.
Wix Мировые
Добавить элементы → Встроенный код → Пользовательский элемент (Custom Element). Источник: Server URL = https://fasttradein.app/widget/fasttradein.js, Tag Name = fasttradein-widget. Атрибуты: data-key = ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ, api = https://fasttradein.app, lang = ru. Нужен премиум-план с подключенным доменом. Не используйте «Встроить HTML» (Embed HTML): этот код работает в iframe на другом домене, и виджет его не примет.
BigCommerce Мировые
Storefront → Script Manager для скрипта, а тег <fasttradein-widget> разместите через Page Builder (виджет HTML).
Squarespace Мировые
Откройте редактор страницы Trade-in, добавьте блок Code и вставьте сниппет. JavaScript в блоке Code работает только на тарифах Core, Plus, Advanced и Commerce, а виджет виден только на опубликованном сайте.
Shopware 6 Европа
Shopware 6.5 и более новые версии удаляют из содержимого редактора неизвестные теги и <script>. Подключите строку <script> в footer.html.twig вашей темы. Затем разрешите тег fasttradein-widget в настройках shopware.html_sanitizer (например, в config/packages/z-shopware.yaml), откройте Content → Shopping Experiences (Inhalte → Erlebniswelten), добавьте элемент Text в макет страницы Trade-in, переключите его редактор в режим HTML-кода и вставьте только тег <fasttradein-widget …></fasttradein-widget>.
Ecwid by Lightspeed Мировые
Instant Site: добавьте секцию Custom code на страницу Trade-in (тарифы Venture, Business или Unlimited). На своем сайте вставьте сниппет на страницу Trade-in рядом с кодом Ecwid.
Webflow Мировые
Add Elements → Components → Embed (HTML Embed Code) на страницу Trade-in, затем опубликуйте сайт. Нужен платный тариф Site или Workspace.
Drupal Commerce Мировые
Structure → Block layout: добавьте Custom Block с форматом Full HTML в нужный регион или Layout Builder.
Framer Мировые
Добавьте компонент Embed на холст, переключите тип на HTML и вставьте код скрипта и тег <fasttradein-widget>.
nopCommerce Мировые
Administration → Content Management → Topics (Pages): откройте страницу Trade-in и вставьте сниппет в режиме Source code.
Salesforce Commerce Cloud Мировые
Merchant Tools → Content → Content Assets: создайте HTML asset и разместите его в Page Designer.
HubSpot CMS Мировые
Content → Design Manager: создайте пользовательский модуль со сниппетом и добавьте его на страницу Trade-in, либо вставьте сниппет в режиме исходного кода модуля Rich Text.
Ghost Мировые
В редакторе страницы Trade-in добавьте карточку HTML со сниппетом. Можно и так: только строку <script> вставьте в Settings → Code injection → Site footer, а тег <fasttradein-widget …></fasttradein-widget> оставьте в карточке HTML.
Weebly Мировые
Перетащите элемент Embed Code (HTML-код) на страницу Trade-in и нажмите Edit Custom HTML.
SAP Commerce Cloud Мировые
SmartEdit: добавьте CMS-компонент типа Paragraph или Custom HTML на страницу Trade-in в каталоге WCMS.
Oracle Commerce Мировые
Design Studio: создайте Custom Widget с HTML-разметкой и поместите его в макет целевой страницы.
Square Online Мировые
Редактор сайта → Добавить секцию → Встраиваемый код (Embed code): вставьте сниппет и опубликуйте сайт. Встраиваемый код доступен на тарифах Square Online Plus и Premium.
Volusion Мировые
Design → Site Designer: добавьте блок Custom Code (HTML) со сниппетом на страницу Trade-in. Если строку <script> вы подключаете через footer_custom.html, в блоке оставьте только тег <fasttradein-widget …></fasttradein-widget>.
Shift4Shop Мировые
Content → Site Pages → Редактировать страницу: переключите редактор в HTML Source и вставьте код.
NetSuite SuiteCommerce Мировые
SuiteCommerce Advanced: добавьте CMS-блок типа Custom Content или разместите сниппет в layout-шаблоне темы.
Zoho Commerce Мировые
Settings → Visual Builder: добавьте элемент Embed code на страницу Trade-in и сохраните.
VTEX Мировые
VTEX IO / Site Editor: создайте собственный блок интерфейса или внедрите тег виджета в Store Framework layout.
Carrd Мировые
Нажмите + → Embed → Type: Code, Style: Inline, вставьте сниппет и опубликуйте сайт. Нужен тариф Pro Standard или выше.
Hostinger Мировые
Конструктор сайта → элемент Embed code, вставьте сниппет.
MODX Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
GoDaddy Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Miva Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Nuvemshop / Tiendanube Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Cafe24 Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
SHOPLINE Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
thebase Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Salla Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Tray Commerce Мировые
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Shoper Европа
Ustawienia → Zaawansowane → Bezpieczeństwo (Настройки → Дополнительно → Безопасность): включите «Wyłącz czyszczenie kodu HTML» (отключить очистку HTML-кода). Затем Wygląd i treści → Wygląd sklepu → Obecny szablon graficzny → Moduły → Moduł własny в режиме HTML: вставьте сниппет и разместите модуль на странице Trade-in.
IdoSell Европа
Sklep → Dodatki HTML/JS (дополнения HTML/JS): добавьте дополнение, в поле «Wyświetlaj na podstronach» (показывать на подстраницах) выберите «Wybranych» (выбранных) и укажите адрес страницы Trade-in, а сниппет вставьте в поле HTML-кода.
JTL-Shop Европа
В JTL-Shop 5 нет встроенного поля для кода. Подключите строку <script> через дочерний шаблон (layout/footer.tpl, блок layout-footer-js) или плагин из JTL-Store для кода в шапке и подвале, а тег <fasttradein-widget …></fasttradein-widget> вставьте на страницу Trade-in в режиме исходного HTML.
Gambio Европа
Inhalte (Контент) → Content Manager: создайте страницу Trade-in и переключите редактор в режим исходного HTML.
Sylius Европа
Подключите строку <script> в переопределенном шаблоне templates/bundles/SyliusShopBundle/layout.html.twig (шаблон @SyliusShop/layout.html.twig), а тег <fasttradein-widget …></fasttradein-widget> добавьте в шаблон страницы Trade-in.
Lightspeed eCom Европа
Settings → Web Extras → Custom JavaScript / HTML, либо вставьте код в шаблон темы.
Spryker Европа
Внедрите веб-компонент в Twig-шаблон витрины Yves или добавьте скрипт в базовый layout страницы.
Plentymarkets Европа
CMS → Контейнер: вставьте HTML-код виджета в шаблон Ceres или в блок пользовательского контента.
OXID eShop Европа
Customer Info → CMS Pages: создайте страницу Trade-in и вставьте сниппет в режиме исходного HTML. Если редактор вырезает скрипт, подключите строку <script> в базовом макете темы (OXID 6: Application/views/<тема>/tpl/layout/base.tpl; OXID 7: соответствующий Twig-шаблон), а на странице оставьте только тег <fasttradein-widget …></fasttradein-widget>.
Shoptet Европа
Внешний вид → HTML-коды либо HTML-блок на странице Trade-in.
Webnode Европа
Откройте страницу Trade-in и добавьте HTML-элемент со сниппетом.
Sky-Shop Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
RedCart Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
AtomStore Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Comarch e-Sklep Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Sote Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Selly Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Unas Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
ShopRenter Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
CloudCart Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
MerchantPro Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Gomag Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
CCV Shop Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Mijnwebwinkel Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
MyOnlineStore Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
modified eCommerce Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
xt:Commerce Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Intershop Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
TYPO3 Европа
Добавьте элемент содержимого HTML на страницу Trade-in или подключите сниппет в шаблоне сайта.
Jimdo Европа
Добавьте HTML-элемент на страницу Trade-in и вставьте сниппет.
ePages Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Vilkas Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
MyCashflow Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
DanDomain Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
SmartWeb Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Abicart Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Starweb Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Jetshop Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Mystore Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
VirtueMart Европа
Материал Joomla для страницы Trade-in → режим исходного кода. Если редактор вырезает скрипт, подключите его в шаблоне, а тег виджета оставьте в материале.
Odoo Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
JouwWeb Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Webador Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Upgates Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
EKM Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Visualsoft Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
IONOS Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Strato Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Mozello Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Litium Европа
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Medusa.js Headless
Подключите скрипт виджета в layout витрины на Next.js или Remix и добавьте веб-компонент <fasttradein-widget> на страницу Trade-in. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Saleor Headless
Подключите скрипт виджета в витрину (React / Next.js) и используйте веб-компонент <fasttradein-widget> в JSX-разметке. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Vendure Headless
Подключите скрипт виджета в layout клиентской витрины и добавьте тег <fasttradein-widget> на страницу Trade-in. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
commercetools Headless
Подключите виджет в витрину на React, Vue или Next.js, используя веб-компонент <fasttradein-widget>. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Swell Headless
Внедрите скрипт виджета в layout вашей витрины на Origin / Next.js и разместите тег на странице Trade-in. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Strapi Headless
Встройте веб-компонент в шаблон клиентского приложения (Next.js, Nuxt, Remix), подключенного к Strapi. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Contentful Headless
Добавьте компонент виджета в код фронтенда, который получает контент из Contentful (Next.js / Astro / Gatsby). В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Sanity Headless
Интегрируйте веб-компонент в блоки Portable Text или напрямую в layout страниц Next.js / Remix / Svelte. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Next.js Storefront Headless
Подключите скрипт через <Script src="https://fasttradein.app/widget/fasttradein.js" strategy="afterInteractive" /> из next/script в app/layout. На странице Trade-in выведите <fasttradein-widget data-key="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" api="https://fasttradein.app" lang="ru"></fasttradein-widget>. React резервирует key и не передает его элементу, поэтому пишите data-key. В TypeScript объявите fasttradein-widget в JSX.IntrinsicElements.
Nuxt.js Storefront Headless
Подключите скрипт через useHead({ script: [{ src: "https://fasttradein.app/widget/fasttradein.js", defer: true }] }) и отметьте тег как пользовательский элемент в nuxt.config: vue.compilerOptions.isCustomElement = (tag) => tag === "fasttradein-widget". На странице Trade-in добавьте <fasttradein-widget data-key="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" api="https://fasttradein.app" lang="ru"></fasttradein-widget>. Vue резервирует key и не передает его элементу, поэтому пишите data-key.
Vue Storefront Headless
Подключите скрипт виджета в макете витрины и разместите тег <fasttradein-widget> на странице Trade-in. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Commerce Layer Headless
Подключите скрипт виджета в макете витрины и разместите тег <fasttradein-widget> на странице Trade-in. В React и Vue передавайте ключ как data-key: оба резервируют key и не передают его элементу.
Django Фреймворк
Подключите скрипт в базовом шаблоне и разместите тег <fasttradein-widget> на странице Trade-in.
Laravel Фреймворк
Подключите скрипт в Blade-макете и разместите тег <fasttradein-widget> на странице Trade-in.
Ruby on Rails Фреймворк
Подключите скрипт в общем layout и разместите тег <fasttradein-widget> на странице Trade-in.
Symfony Фреймворк
Подключите скрипт в базовом Twig-шаблоне и разместите тег <fasttradein-widget> на странице Trade-in.
Horoshop Украина
Настройки → Общие настройки → Скрипты: вставьте строку <script> в поле «перед тегом </body>» и сохраните. Затем откройте страницу Trade-in, переключите редактор описания в режим HTML-кода и вставьте тег <fasttradein-widget …></fasttradein-widget>.
Cartum Украина
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
OkayCMS Украина
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
SoloMono Украина
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
ImageCMS Украина
Вставьте сниппет на страницу Trade-in в режиме HTML или исходного кода. Если редактор удаляет скрипт, поместите скрипт в шапку или подвал сайта, а тег виджета оставьте на странице.
Prom.ua Украина
Prom.ua не разрешает добавлять собственные скрипты на сайт компании, поэтому виджет там не заработает. Разместите виджет на своем сайте или лендинге и поставьте ссылку на эту страницу из своего магазина на Prom.
Shop-Express Украина
Панель управления → Настройки → Пользовательские скрипты / HTML: вставьте код на страницу Trade-in.
Weblium Украина
Настройки сайта → Сторонний код (Custom code) в Head/Body, либо добавьте блок «Пользовательский код» (Embed code) на страницу Trade-in. Свой код доступен на тарифе Weblium Pro.
Ничего не найдено. Смените запрос или сбросьте фильтр.
Безопасность и разрешенные домены
API виджета намеренно сделан публичным, но привязан к вашему магазину. Он не дает доступа к кабинету, изменению цен или данным других магазинов.
Разрешенные домены (CORS / Origin)
Это адреса сайтов, на которых может работать ваш виджет. Браузер отправляет заголовок Origin или Referer. FastTradein принимает запросы только с хостов, сохраненных в «Настройках магазина» (поле «Сайт» и список «Сайты, где работает виджет»), и с самого хоста FastTradein. Запрос с чужого сайта получает 403 Forbidden.
Публичный ключ
widgetKey в URL — публичный идентификатор. Им можно читать каталог магазина и отправлять заявку. Менять цены, выгружать данные чужих клиентов или входить в кабинет этим ключом нельзя.
Ограничение частоты запросов
Маршруты виджета принимают до 120 запросов в минуту с одного IP для каждого магазина. Для поиска лимит строже (20/мин). Для создания заявки еще строже: 10 в минуту и 10 в сутки с одного IP для каждого магазина и 8 в час на email клиента. Сверх лимита API отвечает 429.
Защита от ботов
Запрос на создание заявки содержит скрытое поле-ловушку (honeypot). Спам, который его заполняет, отсекается без создания заявки. Не отправляйте из собственного клиентского приложения лишние неизвестные поля.
REST API витрины
Базовый путь: /api/widget/{widgetKey}. Это тот же публичный интерфейс, которым пользуется скрипт витрины. Маршруты кабинета и администратора платформы в этот контракт не входят.
Язык каталога, текстов виджета и сумм для показа задается параметром ?locale=ru. Поля formatted_amount и max_buyback_formatted содержат готовую строку для клиента: сумму, округленную до целых, с символом валюты и разделителем разрядов, например «1 235 €». Вид строки зависит от языка и валюты. Для расчетов берите числа в минимальных единицах валюты, для евро это центы: max_buyback и quoted_amount_cents. Например, quoted_amount_cents = 123456 означает 1234,56 евро.
/api/widget/{widgetKey}
Конфигурация витрины
Возвращает название магазина, цвета, валюту, локаль, включенные категории, способы выплаты и тексты виджета.
Пример cURL
curl -sS "https://fasttradein.app/api/widget/ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ?locale=ru" \
-H "Origin: https://shop.example" \
-H "Accept: application/json"
Пример ответа 200 OK
{
"tenant": {
"name": "Your Store",
"currency": "EUR",
"locale": "ru",
"primary_color": "#1f3a8a",
"logo_url": null
},
"locale": "ru",
"accepting_orders": true,
"payout_methods": [
{
"value": "bank_transfer",
"label": "Банковский перевод"
},
{
"value": "store_credit",
"label": "Зачет в счет покупки в магазине"
}
],
"categories": [
{
"id": 1,
"slug": "smartphones",
"name": "Смартфоны"
}
],
"catalog_version": "3f9a1c0b7e"
}
/api/widget/{widgetKey}/search?q=iPhone+13
Поиск моделей
Ищет модели по названию. Если q короче двух символов, в ответе до 6 популярных моделей с "popular": true. Для каждой модели указана текущая максимальная сумма выкупа в этом магазине. В выдаче не больше 8 результатов. Скрытые варианты не попадают в поиск.
Пример cURL
curl -sS "https://fasttradein.app/api/widget/ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ/search?q=iPhone+13" \
-H "Origin: https://shop.example" \
-H "Accept: application/json"
Пример ответа 200 OK
{
"results": [
{
"model_id": 42,
"name": "iPhone 13",
"brand": "Apple",
"max_buyback": 42000,
"max_buyback_formatted": "420 €"
}
]
}
/api/widget/{widgetKey}/orders
Отправка заявки на выкуп
Заявка из виджета или вашего собственного приложения. POST без заголовка Origin или Referer получает 403, поэтому сервер или приложение должны отправлять Origin: https://<ваш разрешенный домен>. Сначала соберите variant_id и answer_ids. Успех — HTTP 201 с полем order_number.
JSON-тело
| Поле | Обязательный | Описание |
|---|---|---|
| variant_id | Обязательный: Да | Активный вариант из каталога. |
| answer_ids | Обязательный: Да | ID ответов опросника категории. На вопрос один ответ; на вопрос с multiple: true можно несколько, а ответ с exclusive: true передается без других ответов на этот вопрос. |
| customer_name | Обязательный: Да | Имя клиента. |
| customer_email | Обязательный: Да | Email клиента. |
| customer_phone | Обязательный: Нет | Телефон, необязательно. |
| payout_method | Обязательный: Нет | bank_transfer или store_credit; store_voucher, если магазин включил выплату сертификатом. Без этого поля заявка получает bank_transfer. |
Пример cURL
curl -sS -X POST "https://fasttradein.app/api/widget/ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ/orders" \
-H "Origin: https://shop.example" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"variant_id":101,"answer_ids":[11,24],"customer_name":"Ada Lovelace","customer_email":"ada@example.com","customer_phone":"+49 170 000000","payout_method":"bank_transfer"}'
Замените https://shop.example на один из разрешенных доменов виджета.
Пример ответа 201 Created
{
"order_number": "TF-8PGPFFNLM6",
"quoted_amount_cents": 38000,
"formatted_amount": "380 €",
"currency": "EUR",
"status": "submitted"
}
Другие публичные маршруты виджета
Нужны, чтобы собрать variant_id и answer_ids до POST /orders. Тот же ключ, те же правила CORS.
-
GET
/api/widget/{widgetKey}/catalog/{category}Бренды, модели и объемы памяти категории (id или slug). -
GET
/api/widget/{widgetKey}/questionnaire/{category}Группы чек-листа, вопросы и ID ответов этой категории. Флаг multiple отмечает вопрос с несколькими ответами, флаг exclusive отмечает ответ, который не сочетается с другими. -
POST
/api/widget/{widgetKey}/quotesРасчет цены по варианту и ответам до создания заявки. JSON: variant_id, answer_ids.
Вебхуки
Вебхуки доступны на тарифах Business и Pro. В кабинете откройте «Настройки» → «Заявки в CRM», укажите HTTPS URL и сгенерируйте секретный ключ. После этого FastTradein отправляет туда JSON о событиях ниже, так что можно синхронизировать любую CRM или ERP.
События
-
order.createdКлиент оформил заявку на сайте. -
order.receivedМагазин отметил, что устройство поступило на склад. -
order.counter_offeredПосле проверки на складе сумма изменилась. Клиенту отправлена защищенная ссылка на новое предложение. -
order.paidМагазин отметил заявку как выплаченную. -
order.acceptedКлиент принял новую цену после проверки. -
order.declinedЗаявка завершилась без сделки: клиент отклонил новую цену, устройство оказалось заблокированным при проверке или магазин отказал в приемке. data.status — declined или cancelled.
Полезная нагрузка JSON
Тело — компактный JSON без экранирования слешей и Unicode. HMAC-SHA256 считайте по этим байтам как есть. order_number — строка вида TF-8PGPFFNLM6, event_id — evt_ и UUID. Поля voucher_* заполняются для заявок с сертификатом магазина после его выпуска, иначе в них null.
{
"event": "order.created",
"event_id": "evt_c800a9c7-b11c-4b75-810e-e667544d825d",
"timestamp": 1788550000,
"tenant_id": 12,
"data": {
"order_number": "TF-8PGPFFNLM6",
"status": "submitted",
"currency": "EUR",
"quoted_amount_cents": 38000,
"inspected_amount_cents": null,
"final_amount_cents": null,
"device": "Apple iPhone 13 128GB",
"customer": {
"name": "Ada Lovelace",
"email": "ada@example.com",
"phone": "+49 170 000000"
},
"parcel_tracking_number": null,
"payout_method": "bank_transfer",
"voucher_code": null,
"voucher_amount_cents": null,
"voucher_url": null,
"voucher_expires_at": null
}
}
Заголовки
X-FastTradein-Event: имя события, то же, что payload.event.X-FastTradein-Signature: HMAC-SHA256, HMAC сырого тела с префиксом sha256=.User-Agent: FastTradein-Webhook/1.0
Отвечайте любым статусом 2xx в течение 10 секунд. Другой статус, тайм-аут или редирект считаются сбоем, и мы повторяем запрос дважды, через 10 и через 60 секунд, с тем же event_id и подписью. Редиректы не выполняются, поэтому сохраняйте конечный адрес https. По event_id отбрасывайте дубликаты.
Проверка подписи HMAC-SHA256
Посчитайте HMAC-SHA256 сырого POST-тела секретом из кабинета. Сравните результат с X-FastTradein-Signature за постоянное время (constant-time). Значение заголовка начинается с sha256=.
PHP
$signature = $_SERVER['HTTP_X_FASTTRADEIN_SIGNATURE'] ?? '';
$payload = file_get_contents('php://input');
$expected = 'sha256='.hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit('Invalid signature');
}
Node.js
const crypto = require('crypto');
const express = require('express');
const app = express();
// express.raw keeps the exact POST bytes; JSON.stringify(req.body) would not match the signature.
app.post('/fasttradein-webhook', express.raw({ type: 'application/json' }), (req, res) => {
const signature = String(req.get('X-FastTradein-Signature') || '');
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.FASTTRADEIN_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
if (
signature.length !== expected.length ||
!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))
) {
return res.status(401).end('Invalid signature');
}
const event = JSON.parse(req.body.toString('utf8'));
// Skip an event_id you have already processed: a retry sends the same one.
res.status(200).end();
});
Коды ответов
| Код | Описание |
|---|---|
| 200 | OK. GET возвращает конфигурацию, результаты поиска, каталог и опросник, а POST /quotes возвращает расчет. |
| 201 | Created. POST /orders прошел; номер заявки в поле order_number. |
| 402 | Магазин сейчас не принимает новые заявки виджета: пробный период закончился или подписка отменена (TENANT_BILLING_INACTIVE), либо месячный лимит заявок исчерпан (TENANT_LIMIT_EXCEEDED). |
| 403 | Домен не разрешен: Origin / Referer нет среди разрешенных доменов магазина (ошибка WIDGET_DOMAIN_DENIED), или POST пришел без обоих заголовков. |
| 404 | Ключ виджета (ошибка WIDGET_NOT_FOUND), категория или номер заявки не найдены. |
| 422 | Ошибка валидации: нет ответов, неактивный вариант или выключенная категория. |
| 429 | Too Many Requests. Снизьте частоту запросов и повторите попытку. |