Tapahtumat & synkronointi

Webhookit & ilmoitukset

Järjestä tilamuutosten vastaanotto ja yhdistä maksut omiin järjestelmiisi ilman jatkuvaa pollausta.

EndpointHTTPS
MalliAsynkroninen
TavoiteSynkronoi tila

Miten se toimii

Määritä HTTPS-ilmoitus-URL, jotta sovelluksesi vastaanottaa toiminnan olennaiset muutokset. Webhookin tulee päivittää vastaavan tilauksen, veloituksen tai prosessin sisäinen tila.

Nykyinen määritys. URL määritetään kohdassa Asetukset → Verkkotapahtumat. Vain HTTPS hyväksytään. Jos request epäonnistuu tai vastaus on muu kuin 200, nykyinen dokumentaatio ilmoittaa 3 lisäyritystä.

Suositeltu virta

01 · IOPAYTila muuttuu.

Tapahtuma tai olennainen muutos etenee käsittelyssä.

02 · PäätepisteWebhookisi vastaanottaa.

Sovellus vastaanottaa payloadin määritettyyn HTTPS-päätepisteeseen.

03 · TallennusKirjaa tapahtuma.

Tallenna tunnisteet ja riittävä sisältö jäljitettävyyttä varten.

04 · DomainPäivitä järjestelmät.

Tilaus, ERP, OMS, talous ja automaatiot seuraavat uutta tilaa.

Ilmoituksen rakenne

Tapahtumailmoitukset sisältävät tapahtuman tunnisteen, tapahtumatyypin, tilan, toiminnan viitteen, myyjän ja ilmoituksen allekirjoituksen.

Esimerkki · transaction.succeeded
{
  "id": "8774b47d26d54a0b9138cde9d8cc421f",
  "type": "transaction.succeeded",
  "status": "succeeded",
  "reference_id": "order_102938",
  "io_seller_id": "<IO_SELLER_ID>",
  "sign_confirm": "iopay::<SIGNATURE>"
}
Tapahtumat. Tapahtumatyyppejä ovat mm. transaction.created, transaction.pending, transaction.succeeded, transaction.failed, transaction.disputed ja transaction.void.succeeded.

Toteutus

Käsitteellinen esimerkki · Laravel
Route::post('/webhooks/iopay', function (Request $request) {
    $payload = $request->all();

    // Identificador da transação
    $transactionId = $payload['id'] ?? null;

    // Ex.: transaction.succeeded
    $eventType = $payload['type'] ?? null;

    // Ex.: succeeded
    $status = $payload['status'] ?? null;

    // Referência enviada na criação da transação
    $referenceId = $payload['reference_id'] ?? null;

    // 1. valide sign_confirm conforme o contrato vigente
    // 2. garanta idempotência antes de aplicar efeitos
    // 3. persista o evento para rastreabilidade
    // 4. processe operações pesadas de forma assíncrona
    ProcessIopayWebhook::dispatch($payload);

    return response()->json(['received' => true], 200);
});
Tärkeää. Esimerkki on arkkitehtuurinen. sign_confirm-validoinnin on noudatettava integraation voimassa olevaa sopimusta ennen kuin tapahtumaa pidetään luotettavana.

Idempotenssi ja vankkuus

Idempotenssi

Älä käsittele kahdesti.

Webhookeja voidaan lähettää uudelleen. Varmista, ettei sama tapahtuma aiheuta päällekkäisiä vaikutuksia sovelluksessasi.

Reagointi

Nopea kuittaus.

Vältä pitkiä toimintoja ennen HTTP 200 -vastauksen palauttamista webhookille.

Järjestys

Tarkista nykyinen tila.

Älä luota pelkkään saapumisjärjestykseen; vertaa tapahtumaa tunnettuun tilaan.

Observability

Säilytä historia.

Kirjaa vastaanotto, käsittely, virheet ja yhteys tilaukseen/tapahtumaan.

Checklist

  • HTTPS-URL määritetty ja ulkoisesti saavutettavissa.
  • Lyhyt aikakatkaisu ja raskas käsittely jonossa.
  • sign_confirm-validointi.
  • Idempotenssi päällekkäisten vaikutusten välttämiseksi.
  • Lokit, joissa id, type, reference_id ja io_seller_id.
  • Hälytykset toistuvista käsittelyvirheistä.
  • Täsmäytysrutiini API-kyselyillä poikkeustapauksiin.