2013-05-05 10 views
7

Realizzo un'applicazione Web che consente ai nostri utenti di vendere biglietti per spettacoli musicali. Per gestire i pagamenti tra i compratori di biglietti e gli istigatori di spettacoli, uso Stripe. Fondamentalmente, l'istigatore dello spettacolo crea la pagina dello show sulla mia applicazione, e gli utenti possono acquistare i biglietti per questo spettacolo.Striscia: convalida delle API API pubblicabili e segrete

Per creare uno spettacolo, l'istigatore compila un modulo (Nome dello show, data dello show, dove si svolgerà lo spettacolo, quali band suoneranno, ecc.) Questo modulo richiede anche che lo show instigator fornisca entrambi le sue chiavi Publishable e Secret Stripe. La mia app utilizza entrambi questi token per recuperare le informazioni sul carrello di credito (sul lato client) ed elaborare i pagamenti (lato server).

Il problema è che voglio assicurarmi che gli istigatori di spettacolo forniscano le chiavi valide e quelle esistenti. Non vorrei che i miei utenti incappassero in errori di pagamento perché gli istigatori della mostra non fornivano chiavi Stripe valide.

Quindi, la mia domanda è: Come posso verificare che le chiavi Pubblicabile e Segreto siano valide ed esistenti? Qual è la migliore strategia per raggiungere questo obiettivo? Grazie!

risposta

0

Non sono a conoscenza di alcuna chiamata api documentata che può essere specificata per convalidare le chiavi. Ecco un suggerimento che potresti provare:

Richiedere ai partner di fornire una carta di credito valida e informarli che al fine di convalidare le proprie chiavi Stripe, verrà addebitato $ 0,50 sulla loro carta che verrà immediatamente rimborsata.

Come parte della convalida del modulo, quando vengono fornite entrambe le chiavi, submit a hidden form che contiene tutti i dati necessari per creare un token di tessera. Dovresti essere in grado di esaminare la risposta nel tuo create card token response handler e determinare se la chiave pubblicabile è valida.

Se si ottiene una risposta corretta dal server stripe contenente un token di carte, girare a destra intorno e submit a test charge per $ 0,50 (l'importo minimo di addebito).

Assicurati di catturare correttamente tutte le eccezioni delle strisce. Credo che con una chiave segreta non valida, dovresti prendere uno Stripe_InvalidRequestError. Se viene generata un'eccezione, puoi segnalarla all'utente.

Se non vengono emessi errori, verrà effettuato l'addebito. Dal momento che non vuoi addebitare i tuoi partner, ti consigliamo di acquisire l'id di addebito dalla risposta della striscia e immediatamente refund the charge.

+0

spiegazione semplice e pulita. Grazie mille amico! Sebbene questa soluzione sia valida, ho appena scoperto Strip Connect https://stripe.com/docs/connect. È molto più sicuro e semplice della gestione delle chiavi API da solo. – spg

8

Trovato!

Per convalidare le tue chiavi pubblicabili è sufficiente chiedere a stripe un nuovo token utilizzando cURL. Se la chiave fornita non è valida, la risposta conterrà un messaggio di errore che inizia con "Chiave API non valida fornita".

Ecco un esempio scritto in PHP:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://api.stripe.com/v1/tokens"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2017&card[cvc]=123"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_USERPWD, $publishableKey . ":"); 

$response = json_decode(curl_exec($ch),true); 

if(curl_errno($ch)){ 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

if(substr($response["error"]["message"],0, 24) == "Invalid API Key provided"){ 
    echo "Invalid API Key provided"; 
} 

Stessa idea per la convalida le chiavi segrete.

+0

Quando raggiungo quell'endpoint, viene visualizzato un messaggio '' 'URL di richiesta non riconosciuto (GET:/v1/token). Si prega di consultare https://stripe.com/docs o possiamo aiutare su https://support.stripe.com/. "' '' –

+2

@AdamParkin/v1/token accetta solo richieste POST, non GET. È necessario specificare 'curl_setopt ($ ch, CURLOPT_POST, true)' troppo – Niall

+0

Non funziona con il post $ url = 'https://api.stripe.com/v1/tokens?key='.$publishableKey;. "errore" : { "type": "invalid_request_error", "message": "È necessario fornire una carta, un cliente, dati pii o un conto bancario per creare un token." } – Savoo