FAQ
Чому підпис мого вебхука не збігається?
У 9 з 10 випадків код підписує повторно серіалізований JSON-об'єкт замість сирого тіла запиту. Фреймворки парсять JSON, і при повторному stringify змінюються пробіли, порядок ключів та екранування. Завжди рахуйте HMAC від отриманих сирих байтів. Інші причини: не той секрет (test чи live), hex замість base64, префікс з часовою міткою (Stripe підписує timestamp.body) або порівняння hex у різному регістрі.
Що робить «Find why it doesn't match»?
Він перебирає сотні комбінацій — алгоритми (SHA-1/256/384/512), кодування секрету (текст, hex, base64, Svix whsec_), варіанти тіла (мініфіковане, відформатоване, відсортовані ключі, перенос рядка в кінці, стилі JSON з PHP/Python, префікси з часовою міткою) та формати виводу — і показує, який з них використав провайдер.
Чи безпечно вставляти мій секрет?
Усе підписування відбувається локально через Web Crypto API; секрет ніколи не залишає ваш браузер. Кнопка AI надсилає лише назву провайдера, налаштування і зразок тіла — ніколи секрет. Та все ж краще використовувати секрети тестового середовища.