2015-04-28 10 views
6

In primo luogo, vedo che ci sono diverse domande Parse/Stripe qui ma nessuna mi è di alcun aiuto.Aggiornamento Utente Parse.com da Stripe Webhook

Possiedo un'applicazione mobile con funzionalità gratuite e a pagamento. Una variabile è archiviata nella classe User in Parse.com e viene controllata per le autorizzazioni durante l'esecuzione di una funzione. Vorrei configurare un portale di account (separato dalla mia app) in modo che quando gli utenti desiderano registrarsi vengano inviati al proprio browser e possano iscriversi a un piano su SSL ecc. Ecc.

Per il portale degli account sto avendo un Il sito Wordpress con un plugin Stripe che farà il mio lavoro di contabilità, fatturazione e creazione di moduli per me.

Dopo la registrazione sul sito Wordpress, desidero ricevere il webhook su Parse.com ed eseguire una funzione per aggiornare la classe User. Idealmente questa sarà una funzione catch all che cambierà l'utente in un numero di stati in base allo stato del suo account (cioè smettono di pagare e il piano sarà in attesa).

La mia domanda è duplice:

  1. Quali dettagli (URL ecc) ho bisogno di mettere nelle mie impostazioni webhook banda per inviare tutti gli eventi per il mio codice di cloud Parse.com?

  2. Come ricevo/eseguo la mia funzione sul codice Cloud al ricevimento di un webhook da Parse.com?

Sono aperto alle critiche e resto flessibile nella mia implementazione se avete suggerimenti su come dovrebbe funzionare la mia app.

Molte grazie in anticipo.

risposta

5

Ok, dopo alcuni esperimenti:

  1. creare un webhook su nella zona della banda di conti utilizzando l'URL: https://**APPLICATION_ID**:javascript-key=**JAVASCRIPT_KEY**@api.parse.com/1/functions/update_user

  2. Nel codice nuvola utilizzare lo stesso nome della funzione come la parte finale di il tuo URL. nel mio caso update_user.

  3. Creare una versione di prova del webhook e collocarlo nel codice nuvola per il test:

Parse.Cloud.define("update_user", function(request, response) { response.success('** WEBHOOK WORKING **' + request); });

Durante l'esecuzione del test nel cruscotto stripe si dovrebbe vedere:

enter image description here

Spero che questo aiuti qualcuno - Sarei grato di qualsiasi input che qualcuno ha da m y implementazione o una funzione slick per l'esecuzione sull'aggiornamento della classe User.

+0

Vedere la risposta di Geoff McIver in basso. Questo è un enorme rischio per la sicurezza se non si desidera esporre l'accesso in scrittura agli utenti Stripe tramite una richiesta di codice cloud non autenticata. – namuol

1

Principalmente penso che la vostra soluzione funzionerà.

Penso che l'uso della chiave javascript potrebbe rappresentare un rischio per la sicurezza se non si convalidano eventi che provengono da strisce.

Le tue chiavi javascript saranno presenti nel tuo sito web. Qualcuno potrebbe prenderlo e chiamare la funzione del tuo codice cloud. Userò la chiave master in modo che tu sappia che è solo da fonti di cui ti fidi. Potrebbero essere in grado di modificare importanti informazioni di fatturazione.

Nella definizione della funzione cloud è possibile verificare se è stata utilizzata la chiave principale.

Parse.Cloud.define('stripeEvents', function (request, response) { 
if (request.master){ 
    return response.success('stripeEvents - master'); 
} 
response.error('stripeEvents - must use master key');}); 
+0

Non so dove si sta utilizzando la chiave principale? Come stai verificando se la richiesta proviene da stripe? – Taylorsuk

+0

Lo sto usando qui. Lo hai inserito nella configurazione del gancio Web a strisce. È un segreto ed è racchiuso in SSL ... Ecco come si sa che proviene dalla striscia https: // ** APPLICATION_ID **: ** MASTER_KEY**@api.parse.com/1/functions/update_user –