Quindi vuoi accettare le carte di credito online?

Fino a poco tempo fa, accettare carte di credito su un sito web era costoso e complicato. Ma quello era prima di Stripe: una società di elaborazione delle carte di credito radicalmente diversa e incredibilmente fantastica. Oggi ti mostrerò come iniziare ad accettare le carte in 30 minuti o meno, senza spendere un centesimo.

Tutorial ripubblicato

Ogni poche settimane, rivisitiamo alcuni dei post preferiti del nostro lettore da tutta la cronologia del sito. Questo tutorial è stato pubblicato per la prima volta nel giugno 2012.


Il modo in cui le cose sono andate

Senza Stripe, accettare carte di credito su un sito Web è un'impresa enorme. In primo luogo, è necessario aprire un "account commerciante", che è come un normale conto bancario, ma con più tasse. Quindi, è necessario un "gateway di pagamento" - perché l'elaborazione delle carte di credito apparentemente avviene in una dimensione separata in cui i banchieri regnano con un pugno di ferro e Lindsey Lohan ha una carriera di recitazione di successo. E poi arrivano le sanguisughe: $ 25 di canone mensile. $ 99 tassa di installazione. Tassa annuale di $ 50. $ 0,35 tassa di transazione non riuscita (si paga quando la carta del cliente non riesce a passare!). $ 0,25 + 2,0% di spese di transazione riuscite. $ 2,00 di partita. $ 5,00 al papà ha bisogno di una nuova porsche. È ridicolo. Il processore di schede più popolare è Authorize.net, e le persone di quella società (e dei suoi numerosi rivenditori) passano ogni giorno a pensare a nuovi, ridicoli modi per prendere i tuoi soldi.


Inserisci la striscia

L'installazione richiede circa cinque minuti.

Sfortunatamente è illegale per rapire l'amministratore delegato di Authorize.net, spiaccicarlo in salsa barbecue e farlo cadere in un pozzo di tasso di miele. Ma puoi fare la prossima cosa migliore: non usare il suo servizio. Passa a Stripe. Non avrai bisogno di un account commerciante o gateway di pagamento. La banda depositerà denaro in qualunque conto bancario che ti piace. Non ci sono costi. L'installazione richiede circa cinque minuti. (Sì, sul serio.) E paghi esattamente una cosa: il 2,9% + $ 0,30 su ogni transazione con carta di successo. (Quindi, se stai vendendo qualcosa per $ 30, tieni $ 28,83 e Stripe ottiene $ 1,17.) Il sito web è semplice e intuitivo e lo staff è super disponibile. L'unico inconveniente è che Stripe non è al momento disponibile al di fuori degli Stati Uniti. (Nota: Stripe accetta carte di credito da oltreoceano, è solo che non puoi registrarti per un account Stripe al di fuori degli Stati Uniti). Stanno lavorando per espandersi ad altri paesi.

Il resto di questo tutorial descriverà dettagliatamente come implementare Stripe sul tuo sito web con PHP e Javascript (jQuery). Il servizio ha anche API per Ruby, Python, Java e altre piattaforme. Anche se potrebbe sembrare che ci sia un sacco di lavoro da fare, non c'è davvero; sarai attivo e funzionante in pochissimo tempo. Iniziamo:


Passaggio 0: installa un certificato SSL

Abbiamo a che fare con le informazioni della carta di credito, quindi ovviamente dobbiamo garantire la connessione dell'utente al nostro server. Lo facciamo utilizzando un certificato SSL e non è opzionale. Non solo gli utenti si aspettano di vedere il protocollo "https: //" su una pagina di ordine, Stripe lo richiede. Ma non preoccuparti: l'implementazione di SSL è molto semplice. Quasi tutti i provider di hosting offrono l'installazione automatica di certificati SSL. Devi semplicemente acquistare il certificato tramite il tuo provider e lo installano e configurano automaticamente per te. Non devi fare nient'altro per il tuo sito. Se il modulo d'ordine è su http://mydomain.com/order.php, è sufficiente inviare il cliente a https://mydomain.com/order.php e la connessione verrà protetta con il nuovo certificato SSL. Questo è tutto!

Nota: c'è un'eccezione. Se la pagina dell'ordine carica risorse come fogli di stile, script o immagini utilizzando un URL assoluto (al contrario di relativo), è necessario assicurarsi che tali URL utilizzino il protocollo "https: //". Ad esempio, se includi un'immagine nella tua pagina di ordine sicura come questa, riceverai un avviso nel browser che la pagina contiene sia elementi sicuri che non sicuri:

 

Per risolvere questo problema, carica l'immagine da un URL sicuro, come questo:

 

Non devi preoccuparti di questo problema per url relativi (come "... /images/someImage.jpg") perché il tuo server caricherà automaticamente questi elementi in modo sicuro.


Passaggio 1: crea un account

Visita Stripe.com e crea un nuovo account. Una volta superata la richiesta iniziale di nome utente / password, fai clic sul menu "Il tuo account" in alto a destra e apri il riquadro "Impostazioni account", illustrato di seguito. Innanzitutto, assicurati di impostare un buon "Descrittore delle dichiarazioni". Questo è ciò che i clienti vedranno sui loro estratti conto della carta di credito. Un buon descrittore aiuta il cliente a ricordare ciò che ha acquistato in modo tale da non confondere la transazione con la frode e annullare l'addebito. (Quando ciò accade, si chiama "chargeback" e pagherai una commissione di $ 15 oltre a perdere la vendita, quindi assicurati che il tuo descrittore sia impostato!) Quindi, specifica il conto bancario a cui desideri depositare il tuo denaro . Sei il benvenuto a usare il mio. E infine, dai un'occhiata alla scheda "API Keys". Li useremo a breve, quindi tienili a portata di mano.


Passaggio 2: crea il modulo di pagamento

La prossima cosa di cui abbiamo bisogno è un modulo compilato dai nostri clienti per effettuare un ordine con carta di credito. Oggi useremo questa pagina PHP estremamente semplificata, chiamata "buy.php":

       

Modulo di pagamento

Nome di battesimo:

Cognome:

Indirizzo email:

Numero di carta di credito:

Data di scadenza:

CVC:

Ci sono tre cose da notare sullo snippet di codice qui sopra.

  1. Innanzitutto, abbiamo impostato l'azione del modulo su "javascript:" anziché fornire un percorso per uno script sul lato server. (Vedrai perché in un minuto.)
  2. In secondo luogo, c'è un breve frammento di PHP che popola automaticamente il nostro campo di scadenza con i prossimi 20 anni in modo che non dobbiamo aggiornarlo manualmente in futuro.
  3. In terzo luogo, nessuno dei campi modulo ha un set di parametri "nome". Questo è fondamentale perché impedirà che il valore del campo (come il numero della carta di credito) venga inviato al nostro server quando viene inviato il modulo. Parleremo del perché questo è importante in un minuto.

Quanta informazione dovrei raccogliere??

Le uniche cose che assolutamente dovere devono caricare una carta di credito sono il numero della carta e la data di scadenza. Ma dovresti sempre raccogliere almeno alcune informazioni aggiuntive. Ecco perché: se un cliente contesta l'addebito sulla sua carta, ti verrà richiesto di dimostrare che, in effetti, ha fatto un ordine con te.

Più informazioni raccogli, più sarà facile dimostrare che il cliente (al contrario di un ladro di identità) ha effettuato l'ordine sul tuo sito.


Cosa c'è Next: The Big Picture

Ok, abbiamo installato SSL e un modulo di pagamento pronto per partire. Supponiamo che addebiterà al cliente $ 20,00 per questo ordine. (In realtà, calcoleresti il ​​totale in base a ciò che il cliente ha ordinato, ecc. Dipende da te.) Quando compila il modulo e preme il pulsante di invio, tre cose accadono in questo ordine:

  1. Usando Javascript (jQuery), raccogliamo il valore di ogni campo del modulo. Passiamo queste informazioni direttamente al server di Stripe, usando Stripe.js.
  2. Il server Stripe assicurerà che i dati della carta di credito siano ben formati, preparano una transazione e ci restituiscono un "token monouso".
  3. Passiamo il token a uno script sul lato server sul nostro server, che contatta nuovamente Stripe e attiva l'addebito effettivo sulla carta di credito. Questo è tutto!

Perché farlo in questo modo?

Sicurezza. Le informazioni della carta di credito dell'utente non toccano mai il nostro server. Lo passiamo direttamente a Stripe sul lato client usando Javascript. Il server Stripe accetta tali informazioni e prepara una transazione. Il "token" che ci invia non contiene i dettagli della carta di credito, ma contiene un ID che ci consente di attivare la transazione che Stripe ha preparato sulla loro fine. Pertanto, possiamo tranquillamente trasferire il token al nostro server senza mettere a rischio la sicurezza dei dati della carta di credito dell'utente.

Nota: mentre tu può usa Stripe senza il processo token, I fortemente scoraggiarlo Se passi i dettagli della carta di credito grezza al tuo server, devi essere pazzamente attento a proteggerli e ci sono molti modi per rovinare. Ad esempio, i registri degli errori del server potrebbero facilmente registrare informazioni riservate, quindi è necessario scrub loro in modo sicuro e regolare. Se sei su un piano di hosting condiviso, probabilmente non hai il controllo necessario per farlo. Inoltre, se il tuo server viene mai violato, potresti essere citato in giudizio da clienti spuntati. E se fai qualcosa veramente stupido come memorizzare le informazioni della carta non criptate in un database, io personalmente guiderò a casa tua e ti batterò con un cactus. Gioca sul sicuro; usa il processo di token.


Passaggio 3: raccogliere i valori del modulo

Crea un nuovo file Javascript, chiamato "buy-controller.js". Iniziamo a codificare quel file con alcuni controlli di convalida di base:

 function showErrorDialogWithMessage (message) // Per il tutorial, faremo solo un avviso. Dovresti personalizzare questa funzione per // presentare "graziosi" messaggi di errore sulla tua pagina. alert (messaggio); // Riattiva il pulsante dell'ordine in modo che l'utente possa riprovare $ ('# buy-submit-button'). RemoveAttr ("disabled");  $ (document) .ready (function () $ ('# buy-form'). submit (function (event) // disabilita immediatamente il pulsante di invio per evitare il doppio invio $ ('# buy-submit-button' ) .attr ("disabled", "disabled"); var fName = $ ('# first-name'). val (); var lName = $ ('# last-name'). val (); var email = $ ('# email'). val (); var cardNumber = $ ('# card-number'). val (); var cardCVC = $ ('# card-security-code'). val (); // Campi nome e cognome: assicurati che non siano vuoti se (fName === "") showErrorDialogWithMessage ("Inserisci il tuo nome."); Return; if (lName === "") showErrorDialogWithMessage ( "Inserisci il tuo cognome."); Return; // Convalida l'indirizzo email: var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA- Z0-9 \ -]) + \.) + ([A-zA-Z0-9] 2,4) + $ /; if (email === "") showErrorDialogWithMessage ("Inserisci il tuo indirizzo email . "); return; else if (! emailFilter.test (email)) showErrorDialogWithMessage (" Il tuo indirizzo email non è valido. "); return; // Stripe convaliderà il numero della carta e CVC per noi, quindi assicurati che non siano vuoti se (cardNumber === "") showErrorDialogWithMessage ("Inserisci il numero della carta."); ritorno;  if (cardCVC === "") showErrorDialogWithMessage ("Immettere il codice di sicurezza della carta."); ritorno;  // Boom! Abbiamo superato la convalida di base, quindi siamo pronti a inviare le informazioni a // Stripe per creare un token! (Aggiungeremo questo codice al più presto.)); );

Successivamente, dobbiamo aggiungere questo nuovo file JavaScript al elemento della nostra pagina "buy.php". Aggiungiamo anche "Stripe.js", che è un file ospitato sul server Stripe che ci consente di contattare Stripe dal lato client per passare i dettagli della carta di credito e ricevere il nostro token. (Nota che carichiamo Stripe.js usando il protocollo "https: //"!) Modifica il file elemento di "buy.php" per assomigliare a questo:

     

Chiavi API

Prima di poter inviare informazioni a Stripe, dobbiamo in qualche modo dire a Stripe chi siamo. Per fare ciò, usiamo un paio di "chiavi", che sono stringhe univoche che identificano il nostro account. Per individuare queste chiavi, vai al riquadro delle impostazioni dell'account Stripe e apri la scheda API Keys, nella foto qui sotto:

Come puoi vedere, ci sono un totale di quattro chiavi in ​​due set: "Test" e "Live". Si utilizza il set di test durante lo sviluppo in modo che sia possibile verificare il codice senza caricare effettivamente alcuna scheda. Quando sei pronto per la distribuzione di un sito web, è sufficiente sostituire le chiavi di prova con quelle in tempo reale. Ci sono due chiavi in ​​ogni set: "publishable" e "secret". (Utilizzeremo la chiave "segreta" nel nostro script sul lato server una volta ricevuto un token da Stripe.) Per ora, prendi il chiave di prova pubblicabile e aggiungilo all'elemento HEAD di "buy.php" in questo modo:

      

Avvertimento: DEVI includere Stripe.js PRIMA di impostare la chiave pubblicabile. Inoltre, stai molto attento a non prendere un sito web dal vivo senza passare ai tasti "live"! E infine, sii assolutamente sicuro di mantenere le tue chiavi segrete sicure e segreto!


Passaggio 4: richiedere un token

Tornando in fondo a "buy-controller.js", siamo pronti per aggiungere il codice che richiede un token da Stripe. Sono solo alcune righe:

 // Boom! Abbiamo superato la convalida di base, quindi richiediamo un token da Stripe: Stripe.createToken (number: cardNumber, cvc: cardCVC, exp_month: $ ('# expiration-month'). Val (), exp_year: $ ('# expiration- anno '). val (), stripeResponseHandler); // Impedisce che l'azione di invio predefinita sul modulo restituisca false;

La funzione "createToken" (definita in Stripe.js) accetta due parametri. Il primo è un oggetto con i dettagli della carta di credito. Il secondo è il nome della funzione di callback che verrà richiamata quando il server di Stripe termina la preparazione della transazione e restituisce il token. In questo caso, la nostra funzione di callback è chiamata "stripeResponseHandler". Aggiungiamo questa funzione all'inizio di "buy-controller.js":

 function stripeResponseHandler (status, response) if (response.error) // Stripe.js non è riuscito a generare un token. Il messaggio di errore spiegherà perché. // Di solito, è perché il cliente ha digitato in modo errato le informazioni della carta. // Dovresti personalizzare questo per presentare il messaggio in un modo carino: alert (response.error.message);  else // Stripe.js ha generato correttamente un token. Siamo pronti per caricare la carta! var token = response.id; var firstName = $ ("# first-name"). val (); var lastName = $ ("# last-name"). val (); var email = $ ("# email"). val (); // Abbiamo bisogno di sapere quale importo addebitare. Supponi $ 20,00 per il tutorial. // Ovviamente lo calcolerai da solo: var price = 20; // Effettua la chiamata allo script del server per elaborare l'ordine. // Passa le informazioni del modulo token e non sensibili. var request = $ .ajax (type: "POST", url: "pay.php", dataType: "json", data: "stripeToken": token, "firstName": firstName, "lastName": lastName, " email ": email," prezzo ": prezzo); request.done (function (msg) if (msg.result === 0) // Personalizza questa sezione per presentare un messaggio di successo e visualizza qualunque // deve essere visualizzato all'utente. alert ("La carta di credito è stata addebitata con successo! "); else // La carta NON è stata caricata correttamente, ma ci siamo interfacciati con Stripe // bene. C'è probabilmente un problema con la carta di credito dell'utente // Personalizza questa sezione per presentare un avviso di spiegazione degli errori (" La carta di credito dell'utente non è riuscita. ");); request.fail (function (jqXHR, textStatus) // Non siamo riusciti a effettuare la chiamata AJAX a pay.php .Qualcosa non va nella nostra parte. // Questo non dovrebbe accadere normalmente, ma dobbiamo gestirlo se lo fa. ("Errore: impossibile chiamare pay.php per elaborare la transazione.");); 

Questa funzione prima controlla se c'è stato un errore nella creazione del token. Se Stripe.js non restituisce un token valido, di solito è perché il cliente ha inserito alcuni dei dati della carta di credito in modo errato. Potrebbero aver digitato in modo errato un numero o selezionato la data di scadenza errata. Fortunatamente, il messaggio di errore che accompagna la risposta ti dirà esattamente perché la creazione del token è fallita. Stripe garantisce che questo messaggio di errore sia adatto per la visualizzazione, ma non è dettagliato. Aspettatevi di vedere stringhe come "data di scadenza non valida" o "CVC errato" piuttosto che frasi complete.

Se, d'altra parte, tutto è stato convalidato e Stripe ha creato un token, siamo pronti a consegnare quel token al nostro script sul lato server e in effetti metteremo il pagamento. Nel codice sopra, stiamo usando la funzione Ajax di jQuery per farlo. Passiamo il token e alcune informazioni che potremmo voler registrare in un database: il nome e l'e-mail del cliente. Infine, abbiamo bisogno di sapere quanti soldi per caricare la carta. Oggi assumiamo $ 20,00, ma dovresti passare un valore calcolato dal tuo carrello della spesa, ecc. Noi gettiamo tutte queste informazioni in un oggetto JSON e facciamo la chiamata Ajax al nostro script lato server, "pay.php" ( che creeremo qui sotto). Quindi, guardiamo semplicemente la risposta e presentiamo all'utente un messaggio di successo o di errore. Ovviamente personalizzerai questo codice per adattarlo al design del tuo sito.


Passaggio 5: creare uno script sul lato server

L'unica cosa che rimane da fare è creare lo script PHP sul lato server che attiva effettivamente l'addebito sulla carta del nostro cliente. Innanzitutto, avremo bisogno della libreria PHP di Stripe. Per scaricarlo, vai sul sito Web di Stripe, fai clic sul link "Documentazione" in alto a destra, quindi seleziona la sezione "Librerie API". (Oppure puoi andare direttamente qui facendo clic qui.) Scorri la pagina finché non vedi la sezione PHP, che assomiglia a questa:

Scarica l'ultima versione e decomprimila. Vedrai due elementi: "Stripe.php" e una cartella chiamata "Stripe" che contiene un mucchio di altri file PHP. Rilascia entrambi questi elementi nella cartella del tuo sito web.

Ora crea un nuovo file chiamato "pay.php". Inizieremo a codificare questo file con alcune cose di base:

  1, 'errorMessage' => $ messaggio); echo json_encode ($ a);  // Fatturazione con carta di credito require_once ('Stripe.php'); // cambia questo percorso ovunque tu metta la libreria PHP di Stripe! $ trialAPIKey = "oRU5rYklVzp94Ab0RbBTP0soVdlaEtvm"; // Questi sono i tasti SECRET! $ liveAPIKey = "4BYrmtvwLb8iiiq9KIdbnRh5KCeSfPsX"; Stripe :: setApiKey ($ trialAPIKey); // Passa a cambiare tra ambienti live e test // Ottieni tutti i valori dal modulo $ token = $ _POST ['stripeToken']; $ email = $ _POST ['email']; $ firstName = $ _POST ['firstName']; $ lastName = $ _POST ['lastName']; $ prezzo = $ _POST ['prezzo']; $ priceInCents = $ price * 100; // Stripe richiede che l'importo sia espresso in centesimi

In cima, abbiamo una semplice funzione che chiameremo ogni volta che il nostro script riscontra un errore. Restituisce un oggetto JSON con due elementi: "result" e "errorMessage". Questo oggetto JSON viene rinviato a "buy-controller.js" (dove abbiamo usato la funzione AJAX di jQuery per chiamare questo script lato server). Lì, possiamo ispezionare il valore di "risultato" per vedere cosa è successo. Se è 0, lo script di pagamento è stato completato correttamente. Se è 1, lo script ha riscontrato un errore e possiamo usare la voce "errorMessage" per segnalare cosa è successo all'utente.

Successivamente, inseriamo la libreria PHP di Stripe che abbiamo scaricato in precedenza. Non c'è niente di troppo complicato qui; assicurati di aggiornare il percorso nell'istruzione require alla posizione relativa della libreria PHP di Stripe. Dopo ciò, abbiamo entrambi i nostri SEGRETO Chiavi API. Chiamiamo la funzione "setApiKey" (che fa parte della libreria PHP di Stripe) e passiamo la nostra chiave di prova. In combinazione con la chiave "pubblicabile" che abbiamo impostato in precedenza, Stripe ora dispone di tutte le informazioni necessarie per verificare la nostra identità e associare questa transazione con il nostro account. Ovviamente, quando portiamo il sito web in diretta, cambieremo questa affermazione per usare $ liveAPIKey!

Avvertenza: non dimenticare di passare ai tasti LIVE API quando pubblichi il tuo sito! Devi passare sia la chiave "publishable" nell'elemento HEAD di "buy.php" sia la chiave "secret", che appare in "pay.php", sopra.

E infine, prendiamo tutti i dati che abbiamo passato dalla chiamata AJAX in "buy-controller.js". Nota che Stripe ci richiede di specificare l'importo della tassa in centesimi. Qui, abbiamo passato il valore in dollari, quindi moltiplichiamo per 100 per convertirlo in centesimi.

Effettivamente caricare la carta

Ecco il resto del codice per pay.php:

 prova // Dobbiamo avere tutte queste informazioni per procedere. Se manca, balk. if (! isset ($ token)) genera una nuova eccezione ("Errore sito web: il token Stripe non è stato generato correttamente o è passato allo script del gestore pagamenti. La tua carta di credito NON è stata addebitata. Segnala questo problema al webmaster."); se (! isset ($ email)) lancia una nuova eccezione ("Errore sito web: l'indirizzo email era NULL nello script del gestore dei pagamenti. La tua carta di credito NON è stata addebitata. Segnala questo problema al webmaster."); if (! isset ($ firstName)) lancia una nuova eccezione ("Errore sito web: FirstName era NULL nello script del gestore pagamenti. La tua carta di credito NON è stata addebitata. Segnala questo problema al webmaster."); se (! isset ($ lastName)) lancia una nuova eccezione ("Errore sito web: LastName era NULL nello script del gestore pagamenti. La tua carta di credito NON è stata addebitata. Segnala questo problema al webmaster."); se (! isset ($ priceInCents)) lancia una nuova eccezione ("Errore sito web: il prezzo era NULL nello script del gestore dei pagamenti. La tua carta di credito NON è stata addebitata. Segnala questo problema al webmaster."); prova // crea l'addebito sui server Stripe. QUESTO CARICA LA CARTA! $ charge = Stripe_Charge :: create (array ("amount" => $ priceInCents, "currency" => "usd", "card" => $ token, "description" => $ email)); // Se non è stata lanciata alcuna eccezione, l'addebito è andato a buon fine! // Qui puoi registrare le informazioni dell'utente in un database, inviare una ricevuta via e-mail, ecc. // Restituire un codice risultato di "0" e qualsiasi altra informazione tu desideri. // Questo è accessibile al gestore di ritorno delle chiamate jQuery Ajax in "buy-controller.js" $ array = array ('result' => 0, 'email' => $ email, 'price' => $ price, ' messaggio '=>' Grazie, la tua transazione è andata a buon fine! '); echo json_encode ($ array);  catch (Stripe_Error $ e) // L'addebito non è riuscito per qualche motivo. Il messaggio di Stripe spiegherà perché. $ message = $ e-> getMessage (); returnErrorWithMessage ($ messaggio);  catch (Exception $ e) // Una o più variabili era NULL $ message = $ e-> getMessage (); returnErrorWithMessage ($ messaggio); ?>

Sorprendentemente semplice, no? Per prima cosa, verifichiamo che nessuna delle nostre variabili sia nulla. Anche se non abbiamo bisogno di tutti loro per caricare la carta, potremmo voler registrare queste informazioni in un database o usarle per inviare via email al cliente una ricevuta, quindi non vogliamo procedere se non è disponibile.

Quindi, usiamo il "Stripe_Charge :: create ()"metodo, che fa parte della libreria PHP di Stripe: questa è la linea che addebita effettivamente la carta dell'utente (o tenta di farlo in ogni caso) .I primi due elementi dell'array sono autoesplicativi, il terzo," card ", è dove passiamo il token che abbiamo richiesto da Stripe in precedenza.Il quarto elemento, la "descrizione" è di vitale importanza.Qualunque cosa passiamo qui è ciò che vedremo quando effettueremo l'accesso a Stripe e visualizzeremo le nostre transazioni. Dovresti scegliere qualcosa di breve che identifichi il cliente che ha effettuato questo ordine. Un indirizzo email è la soluzione migliore, dato che molti clienti potrebbero avere lo stesso nome.

Perché la carica potrebbe fallire a questo punto?

Se fossimo in grado di ottenere con successo un token da Stripe, perché la carica fallirebbe a questo punto? La risposta è che la striscia di validazione eseguita in precedenza controllava solo che i dati della carta di credito erano ben formati; non ha eseguito una transazione attraverso le reti di carte di credito. Può succedere che la carta del cliente superi il suo limite. Oppure, se si tratta di una carta di debito, potrebbe non esserci abbastanza denaro nell'account del cliente per coprire questo acquisto. Potrebbe anche essere che la società di carte di credito semplicemente segnali la transazione come inusuale e richiede l'approvazione del cliente per farlo passare (questo mi è successo con i titolari di carta American Express). In situazioni come queste, la carta verrà validata correttamente quando chiediamo un token, ma falliamo nel tentativo di caricarlo. Fortunatamente, Stripe rende davvero facile gestire questi errori. Semplicemente usiamo i blocchi try / catch, come vedi sopra.

Carica la carta per ultimo!

Se quel cliente sono io, sei in cerca di un cactus che batte.

Se il tuo sito web ha bisogno di fare cose, come la generazione di un numero seriale per una licenza software, dovresti farlo PRIMA di addebitare la carta del cliente. Se si carica prima la carta e poi il tuo sito non riesce a generare un serial per qualsiasi motivo, il cliente verrà cancellato. (Se quel cliente sono io, sei in cerca di un cactus che picchia.) Potrebbero anche chiamare la loro società di carte di credito per annullare l'addebito, che si traduce in una tassa di $ 15 per te e la perdita di una vendita. Quindi, gioca sul sicuro: assicurati di avere tutto pronto per andare PRIMA di caricare il cliente!

Questo è tutto! Questo è tutto il codice necessario per caricare una carta di credito sul tuo sito web. Il resto dell'articolo tratta alcuni dettagli aggiuntivi sull'utilizzo di Stripe che potresti trovare utile:


Test e debug

Quando utilizziamo le chiavi API "test", possiamo utilizzare numeri di carte di credito speciali che obbligano Stripe a restituire un determinato tipo di risposta in modo da poter testare a fondo il nostro codice. Ecco i numeri speciali:

  • 4242-4242-4242-4242: Simula una transazione con carta di successo
  • 4000-0000-0000-0002: Forza una risposta "carta rifiutata"
  • 4242-4242-4242-4241: Impone una risposta "numero di carta non valido"

In modalità test, qualsiasi numero CVC a 3 o 4 cifre è considerato valido. Ogni data di scadenza che è in futuro è valida. È possibile passare un numero CVC a due cifre per verificare tale errore. Allo stesso modo, è possibile passare qualsiasi data nel passato per verificare la risposta data di scadenza non valida. Infine, se desideri testare la risposta "importo non valido", passa semplicemente un numero intero non intero (come 1.35) come importo da addebitare.

Per informazioni esaustive sul test Stripe, puoi visitare la loro pagina di documentazione.


Abbonamenti, memorizzazione delle informazioni sulla scheda e altro

Stripe ti consente di effettuare più addebiti una tantum sulla carta di un cliente. È possibile impostare un abbonamento che addebiterà la carta su un importo specificato a un intervallo a scelta. Le API che devi fare sono parte della libreria PHP di Stripe e il sito web contiene un'eccellente documentazione che ti guiderà attraverso il processo.

Cosa succede se si desidera memorizzare le informazioni della carta di credito in modo che i clienti non debbano inserirle ogni volta che visitano il sito? Stripe ti permette di farlo anche tu! È sufficiente creare un oggetto "cliente" più o meno nello stesso modo in cui abbiamo creato un token. Questo oggetto contiene tutti i dati sensibili che riguardano un particolare cliente. Stripe memorizzerà in modo sicuro queste informazioni dalla loro parte (il che significa che non devi rischiare un pestaggio di cactus) e puoi fatturare all'utente in qualsiasi momento semplicemente richiedendo l'oggetto "cliente" appropriato, proprio come abbiamo fatto con il token. Ancora una volta, tutte le API fanno parte della libreria PHP di Stripe e il sito Web vi guiderà attraverso.


Guardalo in azione

Ecco fatto: Stripe in poche parole! Se desideri vedere un esempio funzionante di ciò che abbiamo appena coperto con un po 'più di complessità e design, passa da questa pagina e ispeziona la fonte. (Suggerimento: sembrerà familiare.) In caso contrario, se hai domande lascia un commento qui sotto, controlla la pagina di supporto Stripe o trovami su Twitter: @bdkjones. Grazie e buona fortuna!