Så du vil godta kredittkort på nettet?

Inntil nylig var akseptering av kredittkort på et nettsted dyrt og komplisert. Men det var før Stripe: et radikalt annerledes og sinnsykt fantastisk kredittkortbehandlingsfirma. I dag skal jeg vise deg hvordan du begynner å akseptere kort på 30 minutter eller mindre - uten å bruke en krone.

Publisert opplæring

Noen få uker besøker vi noen av leserens favorittinnlegg fra hele historien til nettstedet. Denne opplæringen ble først publisert i juni 2012.


Måten ting pleide å være

Uten Stripe, er å akseptere kredittkort på et nettsted et enormt foretak. Først må du åpne en «handelsmannskonto», som er som en vanlig bankkonto, men med flere avgifter. Deretter trenger du en "betalingsgateway" - fordi kredittkortbehandling tilsynelatende foregår i en egen dimensjon hvor bankfolk regjeres med en jernnote og Lindsey Lohan har en vellykket skuespillerkarriere. Og så kommer leeches: $ 25 månedlig avgift. $ 99 oppsettgebyr. $ 50 årlig avgift. $ 0,35 mislyktes transaksjonsavgift (du betaler når kundens kort ikke klarer å gå gjennom!). $ 0,25 + 2,0% vellykket transaksjonsgebyr. $ 2.00 batch avgift. $ 5,00 pappa-behov-en-ny-porsche avgift. Det er latterlig. Den mest populære kortprosessoren er Authorize.net, og folkene på det selskapet (og dets mange forhandlere) bruker hver dag og tenker på nye, latterlige måter å ta pengene dine på..


Skriv inn stripe

Oppsettet tar omtrent fem minutter.

Dessverre, det er ulovlig å kidnappe konsernsjef for Authorize.net, slather ham i grill saus og slippe ham inn i en grop av honning dugge. Men du kan gjøre det nest beste: ikke bruk hans tjeneste. Bytt til Stripe. Du trenger ikke en selgerkonto eller betalingsgateway. Stripe vil sette inn penger til noen bankkonto du liker. Det er null avgifter. Oppsettet tar omtrent fem minutter. (Ja, seriøst.) Og du betaler nøyaktig én ting: 2,9% + $ 0,30 på hver vellykket korttransaksjon. (Så, hvis du selger noe for $ 30, holder du $ 28,83, og Stripe får $ 1,17.) Nettstedet er enkelt og intuitivt og ansatte er super hjelpsomme. Den eneste ulempen er at Stripe for øyeblikket ikke er tilgjengelig utenfor USA. (Merk: Stripe aksepterer kredittkort fra utlandet, det er bare at du ikke kan registrere deg for en Stripekonto utenfor USA) De jobber med å ekspandere til andre land.

Resten av denne opplæringen beskriver hvordan du implementerer Stripe på nettstedet ditt med PHP og Javascript (jQuery). Tjenesten har også APIer for Ruby, Python, Java og andre plattformer. Selv om det kan se ut som det er mye arbeid foran, er det egentlig ikke det; du vil være oppe på et øyeblikk. La oss komme i gang:


Trinn 0: Installer et SSL-sertifikat

Vi har å gjøre med kredittkortinformasjon, så selvfølgelig må vi sikre brukerens tilkobling til vår server. Vi gjør dette ved hjelp av et SSL-sertifikat, og det er ikke valgfritt. Ikke bare forventer brukerne å se "https: //" -protokollen på en ordreside, Stripe krever det. Men ikke bekymre deg: implementering av SSL er veldig enkelt. Nesten alle vertsleverandører tilbyr automatisk SSL-sertifikatinstallasjon. Du kjøper bare sertifikatet gjennom leverandøren din og de installerer og konfigurerer det automatisk for deg. Du trenger ikke å gjøre noe annet på nettstedet ditt. Hvis bestillingsskjemaet ditt er på http://mydomain.com/order.php, sender du bare kunden til https://mydomain.com/order.php i stedet, og forbindelsen blir sikret med ditt nye SSL-sertifikat. Det er det!

Merk: det er ett unntak. Hvis bestillingssiden laster inn ressurser som stilark, skript eller bilder ved hjelp av en absolutt (i motsetning til relativ) nettadresse, må du kontrollere at disse nettadressene bruker "https: //" -protokollen. Hvis du for eksempel inkluderer et bilde på din sikre bestillingsside som dette, får du en advarsel i nettleseren om at siden inneholder både sikre og usikre elementer:

 

For å fikse dette, laster du bildet fra en sikker URL, slik:

 

Du trenger ikke å bekymre deg for dette problemet for relative webadresser (for eksempel "... /images/someImage.jpg") fordi serveren din automatisk laster disse elementene.


Trinn 1: Opprett en konto

Besøk Stripe.com og opprett en ny konto. Når du er forbi det første brukernavnet / passordet, klikker du på "Din konto" -menyen øverst til høyre og åpner "Kontoinnstillinger" -ruden, som er vist nedenfor. Først må du sørge for at du setter en god "Statement Descriptor". Dette er hva kundene vil se på sine kredittkort uttalelser. En god deskriptor hjelper kunden til å huske hva de kjøpte, slik at de ikke feiler transaksjonen din for bedrageri og kansellerer avgiften. (Når dette skjer, kalles det en "tilbakebetaling", og du betaler et gebyr på $ 15 i tillegg til å miste salget, så vær sikker på at beskrivelsen er satt!) Deretter angi du bankkontoen du vil ha penger til å deponere . Du er velkommen til å bruke min. Og til slutt, ta en titt på "API Keys" -fanen. Vi bruker disse snart, så hold dem praktiske.


Trinn 2: Opprett din betalingsformular

Den neste tingen vi trenger er et skjema som våre kunder fyller ut for å plassere en kredittkortbestilling hos oss. I dag bruker vi denne enormt forenklede PHP-siden, kalt "buy.php":

       

Betalingsskjema

Fornavn:

Etternavn:

Epostadresse:

Kreditt kort nummer:

Utløpsdato:

CVC:

Det er tre ting å merke seg om kodestykket ovenfor.

  1. Først har vi satt formens handling til "javascript:" i stedet for å gi en bane til et server-side script. (Du vil se hvorfor på bare et minutt.)
  2. For det andre er det en kort utgave av PHP som automatisk fyller utløpsårsfeltet med de neste 20 årene, slik at vi ikke trenger å oppdatere det manuelt i fremtiden.
  3. For det tredje har ingen av skjemafeltene et "navn" -parametersett. Dette er avgjørende fordi det vil forhindre at verdien av feltet (for eksempel kredittkortnummeret) blir sendt til vår server når skjemaet er sendt inn. Vi snakker om hvorfor dette er viktig om et øyeblikk.

Hvor mye informasjon bør jeg samle inn?

De eneste tingene du absolutt må betale et kredittkort er kortnummer og utløpsdato. Men du bør alltid samle minst noen tilleggsinformasjon. Her er hvorfor: Hvis en kunde bestrider avgiften på kortet, må du bevise at de faktisk gjorde en bestilling med deg.

Jo mer informasjon du samler, desto lettere vil det være å bevise at kunden (i motsetning til en identitetstyv) plasserte bestillingen på nettstedet ditt.


Hva er neste: The Big Picture

Ok, vi har SSL installert og et betalingsskjema klar til å gå. La oss anta at vi skal belaste kunden $ 20,00 for denne bestillingen. (I virkeligheten beregner du summen basert på hva kunden har bestilt, etc. Det er opp til deg.) Når han fyller ut skjemaet og trykker på send-knappen, skjer tre ting i denne rekkefølgen:

  1. Ved å bruke Javascript (jQuery) samler vi inn hvert formfelts verdi. Vi sender denne informasjonen direkte til Stripes server ved hjelp av Stripe.js.
  2. Stripes server sørger for at kredittkortdataene er godt dannet, utarbeider en transaksjon og sender oss tilbake en "single-use token".
  3. Vi sender token til et server-side script på vår egen server, som kontakter Stripe igjen og utløser den faktiske belastningen til kredittkortet. Det er det!

Hvorfor gjør det på denne måten?

Sikkerhet. Brukerens kredittkortinformasjon berører aldri vår egen server. Vi sender det direkte til Stripe på klientsiden ved hjelp av Javascript. Stripes server tar den informasjonen og forbereder en transaksjon. "Token" som den sender tilbake til oss, inneholder IKKE kredittkortdetaljer, men inneholder en ID som lar oss utløse transaksjonen som Stripe har utarbeidet på slutten. Dermed kan vi trygt passere token til vår egen server uten å risikere sikkerheten til brukerens kredittkortdetaljer.

Merk: mens du kan bruk Stripe uten token prosessen, jeg sterk motvirke det. Hvis du sender de riktige kredittkortopplysningene til din egen server, må du være forsiktig forsiktig med å beskytte dem, og det er mange måter å skru opp. For eksempel kan serverfeillogger enkelt registrere sensitiv informasjon, så du må skrubbe dem sikkert og regelmessig. Hvis du er på en delt hosting plan, har du sannsynligvis ikke kontrollen som kreves for å gjøre det. I tillegg, hvis serveren din noen gang er hacket, kan du bli saksøkt inn i glemsel av ticked-off kunder. Og hvis du gjør noe egentlig dum som å lagre ukryptert kortinformasjon i en database, vil jeg personlig kjøre til huset ditt og slå deg med en kaktus. På den sikre siden; bruk token-prosessen.


Trinn 3: Samle formverdiene

Opprett en ny Javascript-fil, kalt "buy-controller.js". La oss begynne å kode den filen med noen grunnleggende valideringskontroller:

 funksjon showErrorDialogWithMessage (melding) // For opplæringen, gjør vi bare et varsel. Du bør tilpasse denne funksjonen til // presentere «pen» feilmeldinger på siden din. alert (melding); // Aktiver bestillingsknappen slik at brukeren kan prøve igjen $ ('# buy-submit-button'). RemoveAttr ("deaktivert");  $ (dokument) .ready (funksjon () $ ('# buy-form'). send inn (funksjon (hendelse) // umiddelbart deaktiver send-knappen for å hindre at du sender inn $ ('# buy-submit-button' ) .attr ("deaktivert", "deaktivert"); var fName = $ ('# fornavn') .val (); var lName = $ ('# etternavn') .val $ ('# email') .val (); var cardNumber = $ ('# kortnummer') .val (); var cardCVC = $ ('# kort-sikkerhetskode') .val (); // Fornavn og etternavn felt: Pass på at de ikke er tomme hvis (fName === "") showErrorDialogWithMessage ("Vennligst skriv inn fornavnet ditt."); Return; if (lName === "") showErrorDialogWithMessage "Vennligst skriv inn etternavnet ditt."); Return; // Valider e-postadressen: var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA- Z0-9 \ -]) + \.) + ([A-zA-Z0-9] 2,4) + $ /; hvis (email === "") showErrorDialogWithMessage ("Vennligst skriv inn din e-postadresse . "); return; else if (! emailFilter.test (email)) showErrorDialogWithMessage (" Din e-postadresse er ikke gyldig. "); Return; // Stripe vil validere kortnummeret og CVC for oss, så bare sørg for at de ikke er tomme hvis (cardNumber === "") showErrorDialogWithMessage ("Vennligst skriv inn kortnummeret ditt."); komme tilbake;  hvis (cardCVC === "") showErrorDialogWithMessage ("Vennligst skriv inn sikkerhetskoden til kortet ditt."); komme tilbake;  // Boom! Vi passerte grunnleggende validering, så vi er klare til å sende info til // Stripe for å lage et token! (Vi legger snart til denne koden.)); );

Deretter må vi legge til denne nye JavaScript-filen til element av vår "buy.php" side. Vi skal også legge til "Stripe.js", som er en fil vert på Stripes server som lar oss kontakte Stripe fra klientsiden for å sende kredittkortdetaljer og motta vårt token. (Merk at vi laster Stripe.js ved hjelp av "https: //" -protokollen!) Endre element av "buy.php" for å se slik ut:

     

API-nøkler

Før vi kan sende inn informasjon til Stripe, må vi på en eller annen måte fortelle Stripe hvem vi er. For å gjøre det bruker vi et par "nøkler", som er unike strenger som identifiserer vår konto. For å finne disse nøklene, gå til Stripe-kontoinnstillinger-panelet og trekk på fanen API-taster, vist her:

Som du ser, er det totalt fire nøkler i to sett: "Test" og "Live". Du bruker testsettet under utvikling slik at du kan bekrefte koden din uten å lade noen kort. Når du er klar til å distribuere et nettsted, kan du bare erstatte testnøklene med de levende. Det er to nøkler i hvert sett: "publiserbar" og "hemmelig". (Vi bruker "hemmelig" nøkkelen i server-side scriptet vårt når vi har mottatt et token fra Stripe.) For nå, ta den publiserbar testnøkkel og legg det til HEAD-elementet av "buy.php" som dette:

      

Advarsel: Du må inkludere Stripe.js FØR du angir publiseringsnøkkelen. Vær også veldig forsiktig med at du ikke tar en nettside live uten å bytte til "live" -tastene! Og endelig, vær helt sikker på å holde dine hemmelige nøkler trygge og hemmelig!


Trinn 4: Be om et Token

Tilbake nederst på "buy-controller.js", er vi klare til å legge til koden som ber om et token fra Stripe. Det er bare noen få linjer:

 // Boom! Vi passerte grunnleggende validering, så be om et token fra Stripe: Stripe.createToken (nummer: cardNumber, cvc: cardCVC, exp_month: $ ('# utløpsmåned') .val (), exp_year: $ ('# utløp- år ') .val (), stripeResponseHandler); // Forhindre standard innsending handling på skjemaet returnere falsk;

Funksjonen "createToken" (som er definert i Stripe.js) aksepterer to parametere. Den første er et objekt med kredittkortopplysningene. Den andre er navnet på tilbakeringingsfunksjonen som vil bli påkalt når Stripes server er ferdig med å forberede transaksjonen og returnerer token. I dette tilfellet kalles vår tilbakeringingsfunksjon "stripeResponseHandler". La oss legge til den funksjonen til toppen av "buy-controller.js":

 funksjon stripeResponseHandler (status, respons) if (response.error) // Stripe.js klarte ikke å generere et token. Feilmeldingen vil forklare hvorfor. // Vanligvis er det fordi kunden mistypte kortinformasjonen. // Du bør tilpasse dette for å presentere meldingen på en pen måte: varsling (response.error.message);  ellers // Stripe.js genererte et token med hell. Vi er klare til å lade kortet! var token = response.id; var firstName = $ ("# first-name") .val (); var lastName = $ ("# etternavn") .val (); var email = $ ("# email") .val (); // Vi trenger å vite hvilket beløp som skal belades. Anta $ 20,00 for opplæringen. // Du vil selvsagt beregne dette på egen hånd: var pris = 20; // Gjør anropet til server-scriptet for å behandle bestillingen. // Pass på token og ikke-sensitiv forminformasjon. var request = $ .ajax (type: "POST", url: "pay.php", dataType: "json", data: "stripeToken": token, "firstName": firstName, "lastName": lastName, " e-post ": e-post," pris ": pris); request.done (funksjon (msg) if (msg.result === 0) // Tilpass denne delen for å presentere en suksessmelding og vis hva som helst // skal vises til brukeren. varsel ("Kredittkortet ble belastet vellykket! "); else // Kortet ble IKKE belastet, men vi falt med Stripe // bare bra. Det er sannsynligvis et problem med brukerens kredittkort. // Tilpass denne delen for å presentere en feilforklaringsvarsel Brukerens kredittkort mislyktes. ");); request.fail (funksjon (jqXHR, textStatus) // Vi klarte ikke å ringe AJAX til pay.php. Det er noe galt på slutten. // Dette skal normalt ikke skje, men vi må håndtere det hvis det gjør det. ("Feil: klarte ikke å ringe pay.php for å behandle transaksjonen.");); 

Denne funksjonen kontrollerer først for å se om det oppsto en feil ved å opprette token. Hvis Stripe.js ikke returnerer et gyldig token, er det vanligvis fordi kunden har lagt inn noe av kredittkortinformasjonen sin feil. De kan ha mistyped et nummer eller valgt feil utløpsdato. Heldigvis vil feilmeldingen som følger med svaret, fortelle deg nøyaktig hvorfor tokenskapelsen mislyktes. Stripe garanterer at denne feilmeldingen er egnet for visning, men det er ikke ordentlig. Forvent å se strenger som "ugyldig utløpsdato" eller "feil CVC" i stedet for full setninger.

Hvis, derimot, alt valideres og Stripe opprettet et token, er vi klare til å gi det token til server-side scriptet og plassere faktumet faktumet. I koden ovenfor bruker vi jQuery's Ajax-funksjon for å gjøre det. Vi overfører token så vel som noe informasjon vi kanskje vil ta opp i en database: kundens navn og e-post. Til slutt må vi vite hvor mye penger som skal belaste kortet. Vi antar $ 20,00 i dag, men du vil sende en beregnet verdi fra handlekurven din, etc. Vi kaster all den informasjonen inn i et JSON-objekt og gjør Ajax-samtalen til server-side-scriptet, "pay.php" ( som vi lager nedenfor). Da ser vi bare på svaret og presenterer brukeren med en suksess eller feilmelding. Du vil selvsagt tilpasse denne koden slik at den passer til nettstedet ditt.


Trinn 5: Opprett et server-side-script

Det eneste du må gjøre er å lage PHP-scriptet på server-siden som faktisk utløser avgiften på kundens kort. Først trenger vi Stripes PHP-bibliotek. For å laste den ned, gå til Stripes nettsted, klikk på "Dokumentasjon" -koblingen øverst til høyre, og velg deretter "API-bibliotek" -delen. (Eller du kan gå rett der ved å klikke her.) Bla nedover siden til du ser PHP-delen, som ser slik ut:

Last ned den nyeste versjonen og pakke den ut. Du ser to elementer: "Stripe.php" og en mappe med navnet "Stripe" som inneholder en rekke andre PHP-filer. Slipp begge disse elementene i nettsiden din mappe.

Nå lager en ny fil kalt "pay.php". Vi begynner å kode denne filen med noen grunnleggende ting:

  1, 'errorMessage' => $ melding); ekko json_encode ($ a);  // Kredittkortfakturering require_once ('Stripe.php'); // endre denne banen til hvor du setter Stripe PHP-biblioteket! $ trialAPIKey = "oRU5rYklVzp94Ab0RbBTP0soVdlaEtvm"; // Dette er SECRET-tastene! $ liveAPIKey = "4BYrmtvwLb8iiiq9KIdbnRh5KCeSfPsX"; Stripe :: setApiKey ($ trialAPIKey); // Bytt til bytte mellom levende og testmiljøer // Få alle verdiene fra skjemaet $ token = $ _POST ['stripeToken']; $ email = $ _POST ['email']; $ firstName = $ _POST ['firstName']; $ lastName = $ _POST ['LastName']; $ pris = $ _POST ['pris']; $ priceInCents = $ pris * 100; // Stripe krever at beløpet skal uttrykkes i cent

På toppen har vi en enkel funksjon som vi ringer når vårt skript treffer en feil. Den returnerer et JSON objekt med to elementer: "result" og "errorMessage". Dette JSON-objektet sendes tilbake til "buy-controller.js" (der vi brukte jQuery's AJAX-funksjon for å ringe dette server-side scriptet). Der kan vi inspisere verdien av "resultat" for å se hva som skjedde. Hvis det er 0, ble betalingsscriptet fullført. Hvis det er 1, fant skriptet en feil, og vi kan bruke "errorMessage" -elementet til å rapportere hva som skjedde med brukeren.

Deretter tar vi med i Stripes PHP-bibliotek som vi lastet ned tidligere. Det er ingenting for komplisert her; bare vær sikker på at du oppdaterer banen i krav-setningen til den relative plasseringen av Stripe PHP-biblioteket. Etter det har vi begge våre HEMMELIG API-nøkler. Vi kaller "setApiKey" -funksjonen (som er en del av Stripes PHP-bibliotek) og sender den til prøveversjonen. Kombinert med "publiserbar" nøkkelen som vi har satt tidligere, har Stripe nå all den informasjonen den trenger for å verifisere vår identitet og knytte denne transaksjonen til vår konto. Selvfølgelig, når vi tar nettstedet til live, ville vi bytte denne setningen for å bruke $ liveAPIKey!

Advarsel: Ikke glem å bytte til LIVE API-nøklene når du publiserer nettstedet ditt! Du må bytte både "publiserbar" -tasten i hovedelementet "buy.php" og "hemmelig" -tasten, som vises i "pay.php" ovenfor.

Og til slutt tar vi alle dataene vi passerte fra AJAX-anropet i "buy-controller.js". Merk at Stripe krever at vi spesifiserer beløpet i cent. Her passerte vi verdien i dollar, så vi multipliserer med 100 for å konvertere den til cent.

Faktisk belaste kortet

Her er resten av koden for pay.php:

 prøv // Vi må ha all denne informasjonen for å fortsette. Hvis det mangler, balk. Hvis (! isset ($ token)) kaster ny unntak ("Nettsted Feil: Stripe-token ble ikke generert riktig eller sendt til betalingshåndteringsskriptet. Kredittkortet ditt ble IKKE belastet. Vennligst rapporter dette problemet til webmaster."); hvis (! isset ($ email)) kaste ny unntak ("Nettsted Feil: E-postadressen var NULL i betalingshåndteringsskriptet. Kredittkortet ditt ble IKKE belastet. Vennligst rapporter dette problemet til webmaster."); Hvis (! isset ($ firstName)) kaster ny unntak ("Nettsted Feil: FirstName var NULL i betalingshåndteringsskriptet. Kredittkortet ditt ble IKKE belastet. Vennligst rapporter dette problemet til webmaster."); Hvis (! isset ($ LastName)) kaste ny Unntak ("Nettsted Feil: LastName var NULL i betalingshåndteringsskriptet. Kredittkortet ditt ble IKKE belastet. Vennligst rapporter dette problemet til webmaster."); Hvis (! isset ($ priceInCents)) kaster ny Unntak ("Nettsted Feil: Prisen var NULL i betalingshåndteringsskriptet. Kredittkortet ditt ble IKKE belastet. Vennligst rapporter dette problemet til webmaster."); prøv // opprett avgiften på Stripes servere. DETTE VIL LADDE KORTET! $ charge = Stripe_Charge :: create (array ("amount" => $ priceInCents, "currency" => "usd", "kort" => $ token, "description" => $ email)); // Hvis ikke noe unntak ble kastet, var avgiften vellykket! // Her kan du registrere brukerens info i en database, sende en kvittering, etc. // Retur en resultatkode for '0' og hvilken som helst annen informasjon du vil ha. // Dette er tilgjengelig for jQuery Ajax call return-handler i "buy-controller.js" $ array = array ('result' => 0, 'email' => $ email, 'price' => $ pris, ' melding '=>' Takk, transaksjonen din var vellykket! '); ekko json_encode ($ array);  fangst (Stripe_Error $ e) // Avgiften mislyktes av en eller annen grunn. Stripes melding vil forklare hvorfor. $ message = $ e-> getMessage (); returnErrorWithMessage ($ melding);  fangst (Unntak $ e) // En eller flere variabler var NULL $ message = $ e-> getMessage (); returnErrorWithMessage ($ melding); ?>

Overraskende enkelt, nei? Først bekrefter vi at ingen av våre variabler er null. Selv om vi ikke trenger alle til å lade kortet, kan vi gjerne registrere denne informasjonen i en database eller bruke den til å sende kunden en kvittering, så vi vil ikke fortsette hvis den ikke er tilgjengelig.

Deretter bruker vi "Stripe_Charge :: skape ()"-metoden, som er en del av Stripe PHP-biblioteket. Dette er linjen som faktisk belaster brukerens kort (eller forsøker å, uansett). De to første elementene i arrayet er selvforklarende. Den tredje" kortet "er hvor vi passerer token som vi etterspørte fra Stripe tidligere. Det fjerde elementet, "beskrivelse" er avgjørende. Uansett hva vi passerer her, er det vi vil se når vi logger inn på Stripe og se våre transaksjoner. Du bør velge noe kort som identifiserer kunde som har lagt denne bestillingen. En e-postadresse er din beste innsats, så mange kunder kan ha samme navn.

Hvorfor kan belastningen mislykkes på dette punktet?

Hvis vi klarte å få et token fra Stripe, hvorfor skulle belastningen mislykkes på dette punktet? Svaret er at validering Stripe utført tidligere sjekket bare at kredittkortdataene var godt dannet; det kjørte ikke en transaksjon gjennom kredittkortnettene. Det kan være tilfelle at kundens kort er over grensen. Eller, hvis det er et debetkort, kan det ikke være nok penger på kundens konto for å dekke dette kjøpet. Det kan også være at kredittkortselskapet ganske enkelt flagger transaksjonen som uvanlig og krever at kunden godkjenner å gi det gjennom (dette har skjedd med meg med American Express-kortinnehavere). I slike situasjoner vil kortet validere riktig når vi ber om et token, men mislykkes når vi forsøker å fakturere det. Heldigvis gjør Stripe det veldig enkelt å håndtere disse feilene. Vi bruker bare prøve / fange blokker, som du ser ovenfor.

Last opp kortet sist!

Hvis den kunden er meg, er du inne for en kaktus å slå.

Hvis nettstedet ditt trenger å gjøre ting, for eksempel å generere et serienummer for en programvarelisens, bør du gjøre det før du lade kundens kort. Hvis du belaster kortet først, og siden din ikke klarer å generere en seriell av en eller annen grunn, vil kunden din bli krysset av. (Hvis den kunden er meg, er du inne for en kaktus som slår.) De kan til og med ringe sitt kredittkortselskap for å kansellere avgiften, noe som resulterer i et gebyr på $ 15 og tapet av et salg. Så spill det trygt: vær sikker på at du har alt klart til å gå før du belaster kunden!

Det er det! Det er all koden du trenger for å lade et kredittkort på nettstedet ditt. Resten av artikkelen dekker noen flere detaljer om bruk av stripe som du kanskje finner hendig:


Testing og feilsøking

Når vi bruker "test" API-nøklene, kan vi bruke spesielle kredittkortnumre som tvinge Stripe til å returnere en bestemt type svar, slik at vi kan teste vår kode grundig. Her er de spesielle tallene:

  • 4242-4242-4242-4242: Simulere en vellykket korttransaksjon
  • 4000-0000-0000-0002: Force et "kort avvist" svar
  • 4242-4242-4242-4241: Tvinge et "ugyldig kortnummer" -svar

I testmodus anses alle 3 eller 4-sifrede CVC-nummer som gyldige. Eventuell utløpsdato som er i fremtiden er gyldig. Du kan sende et tosifret CVC-nummer for å teste det feilsaken. På samme måte kan du passere hvilken som helst dato i fortiden for å teste svaret for ugyldig utløpsdato. Og til slutt, hvis du vil teste svaret "ugyldig beløp", må du bare sende et hvilket som helst ikke-heltall (for eksempel 1.35) som beløpet som skal lades.

For uttømmende informasjon om testing Stripe, kan du besøke deres dokumentasjonsside.


Abonnementer, Lagringskortsinfo og mer

Stripe gir deg mulighet til å gjøre mer enn engangsavgift til kundens kort. Du kan sette opp et abonnement som vil belaste kortet et spesifisert beløp med et intervall du velger. APIene du trenger å gjøre dette er en del av Stripes PHP-bibliotek, og nettsiden inneholder utmerket dokumentasjon som vil lede deg gjennom prosessen.

Hva om du vil lagre kredittkortinformasjon, slik at kundene ikke trenger å skrive inn det hver gang de besøker nettstedet ditt? Stripe lar deg gjøre det også! Du oppretter bare et "kunde" objekt på omtrent samme måte som vi opprettet et token. Dette objektet inneholder alle sensitive data som gjelder en bestemt kunde. Stripe vil sikkert lagre denne informasjonen på slutten (som betyr at du ikke trenger å risikere en kaktus slår), og du kan fakturere brukeren når du vil bare ved å be om det aktuelle "kunde" -objektet, akkurat som vi gjorde med symbolet. Igjen er alle APIene en del av Stripes PHP-bibliotek, og nettstedet vil gå deg gjennom det.


Se det i aksjon

Så det er det: Stripe i et nøtteskall! Hvis du vil se et fungerende eksempel på hva vi nettopp har dekket med litt mer kompleksitet og design, sving på denne siden og inspiser kilden. (Hint: Det vil se kjent.) Ellers, hvis du har spørsmål, legg igjen en kommentar nedenfor, sjekk ut Stripes Support Page eller finn meg på Twitter: @bdkjones. Takk og lykke til!