Sündmused & sünkroniseerimine

Webhookid & teavitused

Korralda staatusemuudatuste vastuvõtt ja ühenda maksed oma süsteemidega ilma pideva pollinguta.

EndpointHTTPS
MusterAsünkroonne
EesmärkSünkroniseeri olek

Kuidas see töötab

Seadista HTTPS-teavituse URL, et sinu rakendus saaks toimingu olulised muudatused. Webhook peab toitma vastava tellimuse, maksenõude või protsessi sisemist olekut.

Praegune seadistus. URL määratakse jaotises Seaded → Veebitehingud. Aktsepteeritakse ainult HTTPS-i. Requesti ebaõnnestumisel või vastusel, mis pole 200, näeb praegune dokumentatsioon ette 3 lisakatset.

Soovitatav voog

01 · IOPAYStaatus muutub.

Tehing või oluline sündmus liigub töötluses edasi.

02 · Lõpp-punktSinu webhook võtab vastu.

Rakendus võtab payloadi vastu seadistatud HTTPS-lõpp-punktis.

03 · SalvestamineRegistreeri sündmus.

Salvesta identifikaatorid ja piisav sisu jälgitavuse jaoks.

04 · DomeenUuenda süsteeme.

Tellimus, ERP, OMS, rahandus ja automatiseerimised järgivad uut olekut.

Teavituse struktuur

Tehingusündmused sisaldavad tehingu identifikaatorit, sündmuse tüüpi, staatust, toimingu viidet, sellerit ja teavituse allkirja.

Näide · transaction.succeeded
{
  "id": "8774b47d26d54a0b9138cde9d8cc421f",
  "type": "transaction.succeeded",
  "status": "succeeded",
  "reference_id": "order_102938",
  "io_seller_id": "<IO_SELLER_ID>",
  "sign_confirm": "iopay::<SIGNATURE>"
}
Sündmused. Tehingusündmuste hulka kuuluvad transaction.created, transaction.pending, transaction.succeeded, transaction.failed, transaction.disputed ja transaction.void.succeeded.

Rakendamine

Kontseptuaalne näide · 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);
});
Oluline. Näide on arhitektuurne. sign_confirm-i kontroll peab järgima integratsiooni kehtivat lepingut, enne kui sündmust usaldusväärseks peetakse.

Idempotentsus ja töökindlus

Idempotentsus

Ära töötle kaks korda.

Webhooke võidakse uuesti saata. Veendu, et sama sündmus ei tekitaks sinu rakenduses topeltmõjusid.

Reageerimine

Kiire kinnitus.

Väldi pikki toiminguid enne HTTP 200 tagastamist webhookile.

Järjekord

Kontrolli praegust olekut.

Ära tugine ainult saabumise järjekorrale; võrdle sündmust teadaoleva olekuga.

Observability

Säilita ajalugu.

Registreeri vastuvõtt, töötlemine, vead ja seos tellimuse/tehinguga.

Checklist

  • HTTPS URL seadistatud ja väljastpoolt kättesaadav.
  • Lühike ajalõpp ja raske töötlus järjekorras.
  • sign_confirm-i kontroll.
  • Idempotentsus topeltmõjude vältimiseks.
  • Logid koos id, type, reference_id ja io_seller_id väljadega.
  • Hoiatused korduvate töötlusvigade kohta.
  • Kooskõlastusrutiin API-päringutega erandjuhtudeks.