Webhook: cosa fare quando il codice di stato HTTP inizia con un quattro (4xx) o un cinque (5xx)

Un codice di stato HTTP nell'intervallo 400-499 o 500-599 arriva sul tuo server e indica che il tuo sistema ha ricevuto la richiesta ma non è stato in grado di elaborarla. Prova quanto segue:

  1. Nella Dashboard, cerca la Risposta dal server per ricevere ulteriori informazioni: Potrebbero non esserci ulteriori informazioni nella risposta; ciò dipende dalle configurazioni del server e da come il codice è progettato per rispondere agli errori

  2. Controlla i log del server per cercare eventuali errori o avvisi: Questi errori dovrebbero indicarti la fonte della risposta di errore, che potrebbe essere il codice di gestione del webhook o un problema di configurazione sul server

  3. Conferma che l'evento ricevuto abbia unaversione API che il tuo codice è in grado di gestire: Le versioni API definiscono la struttura dell'oggetto contenuto in un evento; la mancata corrispondenza nelle versioni API tra un evento in arrivo e il tuo codice di elaborazione potrebbe comportare errori imprevisti

Alcuni errori comuni che causano i codici di stato 4xx e 5xx e le relative soluzioni sono illustrati di seguito.

Errore: non è stata trovata nessuna firma corrispondente alla firma attesa per il payload

Questo o un errore simile (la dicitura potrebbe variare da una libreria all'altra) significano che il processo di verifica della firma del webhook non è andato a buon fine. Questo errore generalmente è causato da uno dei seguenti punti:

  • La chiave privata della firma digitale del webhook errata (whsec_) è stata usata durante il processo di verifica della firma

    • Accertati di usare la chiave privata della firma digitale del webhook che corrisponde all'endpoint del webhook che consegna l'evento, che puoi trovare nella Dashboard dopo aver selezionato un endpoint del webhook specifico

    • Se usi CLI di Stripe, genererà e mostrerà una chiave privata della firma digitale del webhook che potrai usare per eseguire il comando di ascolto di Stripe

  • Il corpo della richiesta è stato modificato prima che sia avvenuta la verifica della firma del webhook

    • Il processo di verifica della firma del webhook richiede il corpo grezzo, immodificato della richiesta in arrivo da Stripe per poter funzionare

    • Se il tuo codice sta analizzando, formattando o modificando in altro modo il corpo della richiesta prima della verifica della firma, vedrai un errore come questo

    • Modifica o rimuovi il codice, tra cui il middleware, che potrebbe modificare il corpo grezzo della richiesta in arrivo e riprova

      • Nota: Node.js il middleware spesso modifica il corpo delle richieste in arrivo; prova a estrarre il corpo grezzo prima di eseguire altro middleware

Errore: marca temporale al di fuori della zona di tolleranza

Questo o un errore simile (la dicitura potrebbe variare da una libreria all'altra) significano che l'evento ricevuto è troppo vecchio per eseguire una verifica corretta. Le firme del webhook hanno una componente temporale e devono essere verificate poco dopo essere state ricevute.

Prova quanto segue:

  • Verifica che la data e l'ora sul server siano impostate correttamente

  • Assicurati di verificare le firme del webhook in arrivo non appena vengono ricevuti gli eventi, senza ritardi

Errore interno del server

Questi errori generalmente sono causati dal codice che presenta un'eccezione, un errore di analisi o un altro tipo di variazione che causa interruzioni.

La maggior parte delle volte, questa classe di errori è causata da qualche tipo di modifica sul server o sull'infrastruttura responsabile di accettare ed elaborare i webhook. Il codice nuovo o modificato, un aggiornamento del server o una modifica della configurazione possono introdurre una nuova modalità di errore o incompatibilità.

Se incontri questo errore, verifica i log del server per ulteriori informazioni. La posizione dei log degli errori varia di server in server a seconda della configurazione, del sistema operativo, del server web, dei linguaggi di programmazione usati e di altri fattori, perciò non possiamo fornire istruzioni specifiche.  Ti consigliamo di verificare i log e la configurazione dei log degli errori per tutto ciò che potresti usare tra quanto segue per ricevere i webhook:

  • Il tuo linguaggio di programmazione (Ruby, Python, PHP, Java, Node.js, Go, .NET, ecc.)

  • Il tuo server web (Nginx, Apache, Microsoft IIS, ecc.)

  • Il tuo fornitore cloud o server (Amazon Web Services, Google Cloud Computing, Cloudflare, ecc.)

Questo articolo ha risposto alla tua domanda?
Temi frequenti
Temi frequenti