Passa al contenuto principale

Webhooks

Selgeo invia notifiche HTTP POST in tempo reale al tuo server quando si verificano eventi nel tuo account. Usa i webhook per automatizzare i flussi di lavoro come il provisioning dell'accesso quando un partner viene approvato, la sincronizzazione delle commissioni con il tuo sistema contabile o l'allerta del tuo team in caso di frode.

Tutti i payload dei webhook usano API versione v1.

Registrazione degli endpoint

Registra gli endpoint webhook dalla pagina Impostazioni > Webhooks nella dashboard del commerciante.

  1. Fai clic su Aggiungi endpoint.
  2. Inserisci l'URL dove vuoi ricevere gli eventi. Gli endpoint in modalità live devono usare HTTPS.
  3. Seleziona gli eventi a cui vuoi iscriverti.
  4. Fai clic su Crea. Il tuo segreto di firma (whsec_...) viene mostrato una volta — copialo e conservalo in modo sicuro.

Verifica della firma

Ogni richiesta webhook include un'intestazione X-Selgeo-Signature:

t=<unix_timestamp>,v1=<hmac_hex>

L'HMAC è calcolato come HMAC-SHA256(signing_secret_bytes, "<timestamp>.<raw_json_body>").

Esempi di verifica

import crypto from 'node:crypto';

function verifyWebhookSignature(signingSecret, signatureHeader, rawBody) {
if (!signatureHeader) return false;

const rawSecret = signingSecret.replace(/^whsec_/, '');
const secretBytes = Buffer.from(rawSecret, 'hex');

const parts = Object.fromEntries(
signatureHeader.split(',').map((part) => part.split('=', 2))
);

const timestamp = parts.t;
const receivedHmac = parts.v1;

if (!timestamp || !receivedHmac) return false;

const age = Math.floor(Date.now() / 1000) - parseInt(timestamp, 10);
if (age > 300 || age < -30) return false;

const expectedHmac = crypto
.createHmac('sha256', secretBytes)
.update(`${timestamp}.${rawBody}`)
.digest('hex');

const receivedBuf = Buffer.from(receivedHmac, 'hex');
const expectedBuf = Buffer.from(expectedHmac, 'hex');
if (receivedBuf.length !== expectedBuf.length) return false;
return crypto.timingSafeEqual(receivedBuf, expectedBuf);
}

Catalogo degli eventi

Eventi partner

EventoDescrizione
participant.createdUn nuovo partner ha fatto domanda o è stato aggiunto a un programma
participant.approvedUn partner è stato approvato
participant.rejectedUna domanda di partner è stata rifiutata
participant.suspendedUn partner attivo è stato sospeso
participant.reinstatedUn partner sospeso è stato reintegrato
participant.erasedI dati di un partner sono stati cancellati (GDPR)

Eventi di attribuzione

EventoDescrizione
attribution.createdUn clic è stato attribuito a un partner
attribution.convertedUn clic attribuito ha portato a una conversione
attribution.expiredUna finestra di attribuzione è scaduta senza conversione

Eventi di conversione

EventoDescrizione
conversion.createdÈ stata registrata una nuova conversione
conversion.fraud_detectedÈ stata rilevata una frode (auto-referral o conversione duplicata)

Eventi di commissione

EventoDescrizione
commission.createdÈ stata calcolata una nuova commissione
commission.approvedUna commissione è stata approvata per il pagamento
commission.rejectedUna commissione è stata rifiutata
commission.refundedUna commissione è stata stornata a causa di un rimborso

Politica di nuovo tentativo

Se il tuo endpoint restituisce un codice di stato non-2xx o la richiesta scade (30 secondi), Selgeo riprova con backoff esponenziale:

TentativoRitardo dopo il fallimento
1° tentativo1 minuto
2° tentativo2 minuti
3° tentativo4 minuti
4° tentativo15 minuti

Dopo 5 tentativi totali, la consegna passa allo stato dead-letter.

Best practice

  • Restituire 200 rapidamente. Elabora l'evento in modo asincrono in un job in background.
  • Gestire i duplicati. Usa il campo event_id per la deduplicazione.
  • Verificare le firme. Verifica sempre l'intestazione X-Selgeo-Signature.
  • Usare HTTPS in produzione. Gli endpoint in modalità live richiedono HTTPS.