2015-04-24 10 views
5

Voglio testare la gestione dell'applicazione degli eventi webhook da stripe quando è stato effettuato un pagamento di abbonamento (o non è riuscito). Ecco quello che ho provato finora:Come posso testare i flussi di rinnovo della sottoscrizione in stripe?

  • impostare un nuovo abbonamento
  • carta di credito Aggiornamento dell'utente di essere quello che può essere aggiunto a un account, ma non riuscirà a essere effettivamente praticati
  • cambiare la data di fine processo di essere in un secondo
  • Attendere qualche secondo in attesa della webhook da inviare

Tuttavia, secondo the documentation:

Se sono stati configurati i webhook, la fattura attenderà fino a un'ora dopo che l'ultimo webhook è stato inviato correttamente (o l'ultimo webhook è scaduto dopo un errore).

Un'ora è un lungo periodo di attesa, poiché sto cercando di farlo come parte di una suite di test di integrazione automatizzata.

Un suggerimento (da IRC) è di falsificare la richiesta di webhook, in modo che il mio test di integrazione invii l'evento, invece di inviarlo a Stripe. Tuttavia, poiché Stripe non include alcun tipo di HMAC nei webhook, non posso fidarmi dei dati nel payload. Quindi, la mia domanda vuole solo l'ID evento dal payload webhook e recupera il event from the Stripe API:

Se la sicurezza è una preoccupazione, o se è importante per confermare che Stripe ha inviato il webhook, si deve solo utilizzare l'ID inviato il tuo webhook e dovrebbe richiedere direttamente i dettagli rimanenti dall'API.

Questo ovviamente non funzionerà se sto cercando di iniettare eventi falsi per il mio test (in base alla progettazione).

Quali sono le migliori pratiche per testare questo tipo di scenario?

+1

Direi di non verificare l'evento mentre si sta verificando questo flusso? Quello che faccio personalmente è recuperare l'evento dall'API in modalità Live, ma in modalità test ho solo "fiducia" sul payload dato che sono io a inviarlo (ed è la modalità Test). – koopajah

+0

@koopajah grazie, suppongo che sia la strada da percorrere. Se desideri pubblicarlo come risposta, lo contrassegnerò come "accettato". – pkaeding

+0

Non sono sicuro che sia davvero una bella risposta! Felice di aver risposto alla tua stessa domanda con quello che hai provato forse? :) – koopajah

risposta

1

Sembra che non ci sia un modo perfetto per farlo. Come suggerito da @koopajah in un comment, ho aggiunto un valore di configurazione nella mia applicazione che disabiliterà il recupero dell'evento da Stripe, e invece confido solo sui dati dell'evento nel webhook. Questo mi permette di testare il mio flusso quasi nello stesso modo in cui avrebbe funzionato sulla produzione, dal momento che i dati dell'evento nel webhook e l'evento recuperato da Stripe sono identici (supponendo che sia un'autentica richiesta webhook :)

A meno che/fino a quando Stripe include una firma HMAC nella richiesta di webhook per autenticare che proviene da loro, penso che questo sia il modo migliore per risolvere il problema.

Problemi correlati