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:
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
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
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.
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
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
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.)