Webhook-ilmoitukset

Lisää webhook-tilaaja

Kirjaudu Instatukseen osoitteessa instatus.com/login ja valitse sitten statussivusi.

Siirry kohtaan Tilaajat ja sitten Webhook.

Napsauta Lisää webhook-tilaaja,

Esiin tulee uusi lomake, johon voit syöttää:

  • Webhook-URL
  • Sähköpostiosoite
Webhook-tilaaja

Lähetämme pyyntöjä URL-osoitteeseesi tässä muodossa, ja määritettyyn sähköpostiosoitteeseen lähetetään viesti, jos URL-osoitteessa on ongelma.

Voit antaa webhook-tilaajallesi nimen napsauttamalla sitä ja kirjoittamalla nimen lomakkeeseen. Voit myös poistaa tilaajan napsauttamalla Peruuta tilaus.

Webhookin hyötykuorman vahvistaminen

On erittäin suositeltavaa validoida webhookin hyötykuorma webhook-päätepisteessä.

Allekirjoitamme webhookien hyötykuormat salaisuudella ja lisäämme allekirjoituksen otsakkeeseen nimeltä x-instatus-webhook-signature. Tämän allekirjoituksen avulla voit varmistaa, että webhook tuli Instatuksesta.

Webhookin vahvistamisen vaiheet

  1. Hae webhook-salaisuutesi hallintapaneelista (löydät sen webhookia muokatessasi tai luodessasi, ja voit myös mukauttaa sitä siellä).
Webhook-salaisuus
  1. Luo palvelimellesi uusi päätepiste, joka vastaanottaa webhookin.

  2. Vertaa allekirjoitusta palvelimesi luomaan allekirjoitukseen validoidaksesi sen.

  3. Jos allekirjoitukset täsmäävät, käsittele webhook.

Koodiesimerkki

import crypto from 'crypto'
import express from 'express'
const app = express()
app.use(express.json())
const WEBHOOK_SECRET = 'your-webhook-secret'
function isVerifiedPayload(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret)
const digest = hmac.update(JSON.stringify(payload)).digest('hex')
return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature))
}
app.post('/endpoint/to/webhook', (req, res) => {
const payload = req.body
const signature = req.header('x-instatus-webhook-signature')
if (!signature) {
return res.status(400).send('Signature missing')
}
if (!isVerifiedPayload(payload, signature, WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature')
}
// Process the valid webhook
res.status(200).send('Webhook received')
})
app.listen(3000, () => console.log('Server running on port 3000'))

Miksi vahvistaminen on tärkeää

  • Varmistaa aitouden: Takaa, että webhook on peräisin alustaltamme.
  • Estää peukaloinnin: Havaitsee hyötykuorman muutokset.
  • Parantaa turvallisuutta: Suojaa toistohyökkäyksiltä ja luvattomalta pääsyltä.