Модули

JS-решение

Для сайтов без CMS или с самописной корзиной: треки и статусы заказов отправляются в Слух из браузера одной строкой скрипта или с вашего сервера.

Какой вариант выбрать

Вариант Когда Безопасность
Серверный вызов API v2 (PHP, Node, cURL) вы можете вызвать API с сервера рекомендуется: секретный токен не виден в браузере
Скрипт slyh.js серверного кода нет, события создаются на странице ключ виден в коде страницы, поэтому он только отправляет события и привязан к вашему домену

Скрипт для сайта

  1. В кабинете откройте «Интеграция» → «JS-решение» и выпустите ключ сайта (pk_…). Ключ работает только на страницах вашего домена и его поддоменов.
  2. Добавьте на страницу:
<script src="https://slyh.ru/js/slyh.js" data-key="pk_ВАШ_КЛЮЧ" async></script>
  1. Вызывайте методы, когда у заказа появляется трек или меняется статус:
slyh.track({
  track_number: 'RB123456789CN',
  phone: '+79001112233',   // нужен телефон или email
  email: 'anna@example.ru',
  name: 'Анна',
  order: 'A-1001',         // необязательно
  carrier: 'sdek'          // необязательно: служба доставки
});

slyh.status({
  order: 'A-1001',
  status: 'Передан в доставку',
  phone: '+79001112233'
});

Оба метода возвращают Promise. Ошибки приходят в виде { code, message }: например, origin_not_allowed, validation_failed, feature_not_available. Повторная отправка того же трека или той же пары «заказ + статус» дубля не создаёт.

Ключ можно задать и в коде: slyh.init({ key: 'pk_ВАШ_КЛЮЧ' }).

Защита от подмены

  • Ключ даёт право только отправлять треки и статусы. Читать данные им нельзя.
  • Запрос принимается, только если заголовок Origin (или Referer) принадлежит вашему домену или его поддомену. Тот же ключ на чужом сайте получит 403 origin_not_allowed, а попытка попадёт в журнал администратора.
  • Лимиты: 120 запросов в минуту на ключ и 30 с одного IP.
  • Ключ можно перевыпустить в кабинете в любой момент: прежний перестанет действовать сразу.

Серверные примеры (рекомендуемый путь)

Токен сайта выдаётся в «Интеграции». Описание всех методов — в документации API v2.

PHP

$ch = curl_init('https://slyh.ru/api/v2/tracking');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ВАШ_ТОКЕН', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode([
        'track_number' => $track,
        'order' => $orderId,
        'customer' => ['name' => $name, 'phone' => $phone, 'email' => $email],
    ], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);

Node.js

const response = await fetch('https://slyh.ru/api/v2/statuses', {
  method: 'POST',
  headers: { Authorization: 'Bearer ВАШ_ТОКЕН', 'Content-Type': 'application/json' },
  body: JSON.stringify({ order: orderId, status, customer: { phone, email } }),
});
const result = await response.json();

cURL

curl -X POST https://slyh.ru/api/v2/tracking \
  -H "Authorization: Bearer ВАШ_ТОКЕН" -H "Content-Type: application/json" \
  -d '{"track_number":"RB123456789CN","customer":{"phone":"+79001112233"}}'
Вопросы и ответы

Частые вопросы

JS-решение

Бесплатный тариф без ограничения по сроку: отслеживание посылок и уведомления покупателям.