Webhooks или polling в SMM-панели: что действительно должен использовать дочерний сервис
Большинство публичных SMM API советуют опрашивать статус. NotPanel подписывает каждое событие. Для автоматизации дочерней панели это разница между cron и контрактом.

После передачи заказа дочерняя панель должна понимать, завершён он, выполнен частично, возвращён или провален — без догадок.
Публичная API-страница JustAnotherPanel не описывает исходящие webhooks. У CheapSMMPanel их тоже нет. Предполагаемый сценарий — опрашивать action=status, пока строка не изменится.
В API v2 NotPanel есть webhook.add, webhook.list и webhook.remove. Каждая доставка использует HMAC-SHA256 исходного тела, привязана к timestamp и содержит именованное событие. Это контракт, а не скриншот переключателя в кабинете.
Как дочерняя панель узнаёт, что заказ завершён?
Нажмите вариант. Сохраняется только на этом устройстве — это не выдуманный опрос.
Polling — это цикл. Webhook — это событие.
Почему POST без подписи — не webhook

URL webhook по определению публичен. Без подписи любой, кто его угадает, может сообщить вашей системе о завершении заказа. Мы подписываем исходное тело, добавляем X-NotPanel-Signature, X-NotPanel-Timestamp и X-NotPanel-Event и отклоняем доставки старше пяти минут. Приватные и link-local URL не регистрируются.
Доставка выполняется как минимум один раз. Обработчик всё равно должен быть идемпотентным. Мы не обещаем «ровно один раз» — честные сетевые системы такого не обещают. Рецепт проверки есть в HMAC-разборе.
Когда polling всё ещё уместен
- Вы работаете с панелью, у которой нет документации webhooks. Так работает большинство.
- Нужен fallback, пока webhook endpoint недоступен.
- Вы сверяете batch: используйте orders= до 100 ID, а не отдельный запрос на каждую строку.
При 429 учитывайте X-RateLimit-Reset. JAP и CheapSMM эти заголовки не публикуют; о лимите вы узнаете после блокировки. На нашей странице rate limits описаны три слоя.
Polling спрашивает: «что-нибудь произошло?». Подписанный webhook говорит: «произошло вот это, и вы можете доказать, что это были мы».
Это контракт автоматизации
Дочерняя панель, направленная на клонированную страницу /api, — это цикл polling на надежде. Подключившись к NotPanel, она может зарегистрировать HTTPS URL, выбрать события и зачислять или списывать средства только после проверки подписи.
Это не ощущение «у нас больше функций». Это короткий список, который можно открыть без аккаунта: webhooks, errors, идемпотентный add и сравнение. Новый storefront с контрактом, который старше фотокопии.
action=webhook.add&url=https://your-server.example.com/notpanel-webhook&events=order.completed,order.refunded,balance.low
Соедините это с материалом о двойном списании при retry после timeout . Именно retries и события чаще всего позволяют клонированным API терять деньги.
Частые вопросы
Polling или webhooks для SMM-панели?
Используйте подписанные webhooks как основной путь, а медленный multi-status polling оставьте fallback. Только polling нужен, когда в публичной документации панели нет раздела webhooks — так бывает у большинства.
Есть ли webhooks у JustAnotherPanel и CheapSMMPanel?
На их публичных API-страницах они не описаны. Обе документируют action=status; если webhooks появились позже, их нет в опубликованном гостевом контракте.
Какая SMM-панель лучше для автоматизации реселлера?
Та, чьё API закрывает весь цикл: идемпотентный add, подписанные события завершения и возврата, настоящие HTTP-коды и документированные лимиты. Размер каталога — отдельный рейтинг.
Безопасны ли неподписанные SMM webhooks?
Нет. URL публичен, и любой, кто его угадает, может подделать завершение. Требуйте HMAC исходного тела, временное окно и constant-time comparison.
Обещает ли NotPanel доставку ровно один раз?
Нет. Доставка выполняется как минимум один раз, поэтому обработчик должен быть идемпотентным. «Ровно один раз» в публичном интернете — нечестное обещание.