Produkteksempel · Fintech

Stripe

En betalingsplatform med fokus på udvikler-oplevelsen: dokumentation, checkout-flows og fejlbeskeder er designet med samme omhu som selve produktet.

Analyseret Juli 20268 min læsning4 principper
UX-scorecard9.2 /10
  • Navigation9.0
  • Visuelt design9.3
  • Performance9.1
  • Onboarding9.0
  • Tilgængelighed8.8
stripe.com
Skærmbillede af Stripe

Executive summary

Stripe scorer 9,2, fordi hele udvikler- og betalingsoplevelsen er bygget med samme designdisciplin: dokumentation organiseret om det, udvikleren prøver at opnå, et sandkassemiljø der lader teams øve konkrete fejlscenarier før lancering, og et betalings-UI, der leverer struktureret feedback frem for generiske fejl.1

Fejlhåndteringen er det tydeligste eksempel. Stripes fejlobjekter indeholder et præcist code, det berørte param, en menneskelæsbar message og en doc_url, der linker direkte til forklaringen. Strukturen følger stort set punkt for punkt Nielsen Norman Groups anbefalinger om at pege præcist på problemet, undgå teknisk jargon og altid tilbyde en konkret vej videre.27

Prisen for bredden er en dokumentation med mange samtidige indgange (skills, brugsscenarier, produktkategorier og en CLI), som kan virke uoverskuelig for helt nye besøgende, samt en tilgængelighedsvurdering, der ikke har kunnet basere sig på en pålidelig, egen måling af hele produktet i denne gennemgang. Begge dele holder scoren lige under topkarakter, men fejlbeskeder, test-miljø og dokumentation hører til blandt de bedste i denne gennemgang.

Kort fortalt

  • Fejlobjekter indeholder code, param, message og doc_url, så udvikleren ved præcis hvad der er galt, hvor og hvordan det rettes.
  • Et fuldt testmiljø med kort til specifikke afvisningsårsager gør fejlflows testbare, før en rigtig betaling nogensinde rammer systemet.
  • Checkout leveres som en prebygget, hostet side med indbygget adressefuldførelse og dynamiske betalingsmetoder.
  • Elements-komponenternes change-event returnerer et fejl-objekt, som udvikleren kan bruge til feedback, mens brugeren taster.
  • Dokumentationens mange samtidige indgange kan virke uoverskuelige for helt nye besøgende.

Hvad gør siden rigtig godt?

  1. Strukturerede, handlingsorienterede fejlobjekter

    Hver fejl fra API'et bærer et code, et param, en menneskelæsbar message og en doc_url til uddybende forklaring. Udvikleren kan derfor bygge fejlbeskeder til slutbrugeren, der peger på det præcise problem i stedet for et generisk "noget gik galt", i tråd med Nielsen Norman Groups anbefalinger til gode fejlbeskeder.27

  2. Testbare fejlscenarier uden rigtige penge

    Et bibliotek af testkort simulerer specifikke afvisningsårsager (insufficient_funds, expired_card, incorrect_cvc og flere), så hele fejlhåndteringslogikken kan bygges og valideres i sandkassen, før produktet går i luften.3

  3. Prebygget Checkout med lavt integrationsbesvær

    Den anbefalede Checkout-side er en Stripe-hostet, fuldt udstyret betalingsside med adressefuldførelse, ordreoversigt og automatisk visning af relevante lokale betalingsmetoder. Stripe beskriver den selv som lav kompleksitet at integrere og vedligeholde.4

  4. Realtids-feedback i selve betalingsformularen

    Elements-komponenterne udsender en change-event, hvis payload inkluderer et fejl-objekt, som udvikleren kan bruge til at vise valideringsfeedback, mens brugeren taster. Det følger princippet om, at fejl bør opdages og forklares tæt på det tidspunkt, brugeren laver dem.568

Forbedringsmuligheder

  1. Mange samtidige indgange uden ét klart standardspor

    Forsiden af dokumentationen tilbyder skills/plugins, brugsscenarier, produktkategorier og en CLI-kommando side om side. Det er nyttigt for erfarne integratører, men uden ét tydeligt anbefalet førstevalg kan det være svært for en helt ny besøgende at vide, hvor man skal starte.1

  2. Tilgængeligheden er ikke målt pålideligt i denne gennemgang

    Der er ikke gennemført en pålidelig, egen tilgængelighedsmåling i denne gennemgang, og selv en sådan ville kun dække stripe.com's forside, ikke det indlejrede checkout-flow eller dashboardet, hvor de fleste brugerinteraktioner foregår.

  3. Fejltaksonomien kræver selv en indlæringskurve

    Otte forskellige fejltype-klasser (StripeCardError, StripeInvalidRequestError, StripeConnectionError m.fl.) skal læres, før udvikleren kan bruge den strukturerede fejlhåndtering fuldt ud.2

Gennemgang af hver kategori

Navigation

9.0

Dokumentationen er organiseret om brugsscenarier og selvstændige quickstarts frem for virksomhedens egen produktstruktur. Man kan starte ved "accepter betalinger online" og blive guidet direkte til den relevante integration, med en CLI-kommando (stripe docs) som ekstra genvej til at læse dokumentationen fra terminalen.1

Visuelt design

9.3

Checkout leveres som en prebygget, Stripe-hostet side med et konsistent formsprog på tværs af over 125 lokale betalingsmetoder og op mod 15 konfigurerbare brand-indstillinger, så merchantens eget udtryk kan overføres uden at gå på kompromis med selve betalingsoplevelsen.4

Performance

9.1

Selve betalingsformularen er en let, Stripe-hostet komponent adskilt fra merchantens øvrige side, og Stripes egen dokumentation beskriver den anbefalede Checkout-side som lav kompleksitet at integrere og vedligeholde. Vi har ikke kunnet indhente pålidelige feltdata for selve betalingsflowet i denne gennemgang, så vurderingen hviler delvist på arkitekturen frem for målte tal.4

Onboarding

9.0

Et fuldt sandkassemiljø med testkort til specifikke fejlscenarier (afvist kort, utilstrækkelig saldo, forkert CVC, udløbet kort) gør det muligt at bygge og gennemteste hele fejlflowet, før en eneste rigtig betaling rammer systemet. Integrations-quickstarts sænker samtidig tærsklen for selve opstarten.31

Tilgængelighed

8.8

Tilgængelighed er ikke målt med en pålidelig, sammenlignelig automatiseret scanning i denne gennemgang. Strukturelt taler det til Stripes fordel, at den anbefalede Checkout-side er en enkelt, Stripe-hostet komponent frem for en selvbygget formular. Det erstatter dog ikke en efterprøvet WCAG-gennemgang, og hverken dashboardet eller det indlejrede checkout-flow er vurderet her.4

Top 5 anbefalinger

  1. Fremhæv ét anbefalet quickstart-spor for helt nye besøgende

    En tydeligere "start her, hvis du er ny"-sti kunne afkorte vejen gennem de mange samtidige indgange i dokumentationen.

  2. Gennemfør en manuel tilgængelighedsgennemgang af checkout og dashboard

    En manuel WCAG-gennemgang af selve betalings- og administrationsflowene bør prioriteres, fordi det er her, de fleste brugerinteraktioner foregår.

  3. Udbred de strukturerede fejlfelter til alle produkter

    code, param og doc_url bør være standard på tværs af hele API-fladen, så samme kvalitet i fejlbeskeder gælder, uanset hvilket Stripe-produkt man integrerer med.

  4. Behold testkort-biblioteket synligt tidligt i onboardingen

    Muligheden for at simulere konkrete afvisningsårsager er en af de stærkeste onboarding-detaljer og bør fortsat præsenteres, før udvikleren selv støder på behovet.

  5. Dokumentér change-eventens fejl-objekt med flere eksempler på inline-visning

    Selve mekanismen findes, men flere konkrete eksempler på, hvordan fejlteksten vises pænt i UI'et, ville gøre inline-validering lettere at implementere korrekt fra start.

Hvad kan andre lære?

  1. Fejlbeskeder bør pege på det præcise felt i stedet for at sige "noget gik galt"

    Et code, et param og en forklarende message giver udvikleren (og dermed brugeren) et konkret sted at handle. Generiske fejlbeskeder efterlader begge parter uden retning.72

  2. Et realistisk testmiljø er selv en UX-investering

    Testkort, der simulerer specifikke afvisningsårsager, lader teamet designe og afprøve fejltilstande, før en rigtig bruger nogensinde rammer dem. Fejlhåndtering bliver dermed en del af udviklingen frem for en eftertanke.3

  3. Automatiserede tilgængelighedsscanninger måler kun en del af oplevelsen

    Selv et højt automatiseret tilgængelighedstal på forsiden siger ikke nødvendigvis noget om de flows, brugeren gennemfører. Den slags scanning bør altid suppleres med manuel gennemgang af selve interaktionerne.

Afslutning

Hos Stripe hænger udvikler-oplevelse og slutbruger-oplevelse sammen. Den samme omhu, der går i at skrive en klar fejlbesked til en udvikler, går også i at forklare et afvist kort til den, der forsøger at betale. Strukturerede fejlobjekter, et testbart sandkassemiljø og en prebygget, gennemarbejdet checkout-side forstærker hinanden.

Scoren holdes lige under topkarakter af to ting: dokumentationens mange samtidige indgange, der kan virke uoverskuelige for helt nye besøgende, og at tilgængeligheden ikke er målt pålideligt i denne gennemgang.

Ofte stillede spørgsmål

Hvad gør Stripes fejlbeskeder mere handlingsorienterede end en generisk "noget gik galt"?

Hver fejl bærer et præcist code, det berørte param, en menneskelæsbar message og en doc_url til uddybende forklaring. Strukturen følger Nielsen Norman Groups anbefalinger om at pege på det præcise problem og altid tilbyde en vej videre.

Kan man teste fejlscenarier uden at bruge et rigtigt betalingskort?

Ja. Et bibliotek af testkort simulerer specifikke afvisningsårsager som utilstrækkelig saldo, forkert CVC eller udløbet kort, så hele fejlhåndteringen kan bygges og valideres i sandkassen.

Valideres betalingsoplysninger, mens brugeren taster?

Elements-komponenterne udsender en change-event med et fejl-objekt i sin payload, som udvikleren kan bruge til at vise valideringsfeedback undervejs, i stedet for først at fejle efter indsendelse.

Anvendte principper

  • Inline-validering
  • Tydelige fejlbeskeder
  • Progressiv onboarding
  • Konsistent designsystem

Relaterede mønstre

Kilder

  1. Stripe Docs — Start hereStripe Docs
  2. When your API calls fail — Error handling (Node.js)Stripe Docs
  3. Test your integration — TestingStripe Docs
  4. Checkout — About the Checkout integrationStripe Docs
  5. Custom payment flows with Stripe ElementsStripe Docs
  6. Element: change eventStripe Docs
  7. Error-Message GuidelinesNielsen Norman Group
  8. 10 Design Guidelines for Reporting Errors in FormsNielsen Norman Group