Blogi · 12. lokakuuta 2026

Webhookit, jotka kestävät uudelleenyritykset

Vähintään kerran -toimitus, HMAC-allekirjoitukset raakarungosta, toistoikkunat ja idempotenssi tapahtumatunnisteilla — osat, joiden ansiosta webhookien perusteella on turvallista toimia.

Webhookit ovat hetki, jolloin maksujärjestelmä siirtää vastuun koodillesi. Ne saapuvat julkisen internetin yli, joskus kahdesti, joskus myöhässä. Siihen varautuminen ratkaisee, onko tuloksena luotettava integraatio vai jono tukipyyntöjä.

Mitä FeitPay takaa

  • Toimitus vähintään kerran. Jokainen tapahtuma kirjoitetaan outboxiin samassa transaktiossa kuin tilamuutos, ja se toimitetaan eksponentiaalisesti kasvavalla viiveellä ja satunnaisvaihtelulla (jitter). Kun yritysten enimmäismäärä täyttyy, epäonnistuneet toimitukset säilytetään dead letter -listalla, josta voit toistaa ne.
  • Pysyvä tunniste. Jokaisella tapahtumalla on event_id. Uudelleenyritykset käyttävät samaa tunnistetta.
  • Todennettava allekirjoitus. FeitPay-Signature-otsake sisältää aikaleiman ja HMAC-SHA256-arvon, joka lasketaan arvosta timestamp + "." + raw_body päätepisteesi allekirjoitussalaisuudella.

Mitä päätepisteesi pitäisi tehdä

import { verifyWebhook } from '@feitpay/webhooks';

// Rejects stale timestamps (300 s tolerance) and accepts the previous secret during rotation.
const event = await verifyWebhook({
  payload: rawBody, // the exact bytes received
  header: request.headers['feitpay-signature'],
  secrets: [process.env.FEITPAY_WEBHOOK_SECRET, process.env.FEITPAY_WEBHOOK_SECRET_PREVIOUS].filter(Boolean),
});

if (await alreadyProcessed(event.event_id)) return ok();

Kolme tapaa on tärkeintä:

  1. Tarkista allekirjoitus raakarunkoa vasten. Uudelleen sarjallistettu JSON ei vastaa allekirjoitusta.
  2. Poista kaksoiskappaleet event_id:n perusteella. Käsittele toistunut tapahtuma onnistumisena, ei virheenä.
  3. Varmista ennen peruuttamattomia toimia. Arvokkaissa toimituksissa hae maksu rajapinnasta ja tarkista sen tila ennen lähettämistä.

Salaisuuksien kierrätys ilman katkoja

Kun kierrätät päätepisteen allekirjoitussalaisuuden, toimitukset allekirjoitetaan lyhyen päällekkäisyysjakson ajan sekä uudella että edellisellä salaisuudella, jotta tarkistajat voivat vaihtaa salaisuutta menettämättä tapahtumia. Salaisuudet näytetään vain kerran, ne tallennetaan salattuina eikä niitä koskaan kirjata lokeihin.

← Kaikki blogikirjoitukset