Je eerste betaling aannemen: echt geld toevoegen aan je met AI gebouwde app zonder het verkeerd te doen

Betalingen toevoegen aan een met AI gebouwde app is het moment waarop hobby een bedrijf wordt. Zo denk je erover na — wat je je AI-bouwer laat doen, wat je nooit zelf bouwt, en hoe je het test voordat er een echte kaart op terechtkomt.

Er is een specifiek moment waarop een met AI gebouwde app ophoudt een speeltje te zijn en een bedrijf wordt: de eerste keer dat er echt geld doorheen beweegt. Tot dat punt zijn fouten goedkoop. Een kapotte knop is vervelend. Een verkeerd totaal op een scherm waar niemand voor betaalt, is een typefout. Maar de dag dat de kaart van een echte klant wordt belast, kost een fout echt geld — die van jou of die van hen — en “de AI bouwde het zo” is geen zin die je wilt zeggen tegen iemand die een afschrijving betwist.

Het goede nieuws: betalingen aannemen in een met AI gebouwde app is toegankelijker dan het klinkt, als je weet welke delen je aan je AI-bouwer overhandigt en welke delen je nooit zelf aanraakt. Dit is een gids over die lijn.

De ene regel die je veilig houdt: sla nooit kaartnummers op

Begin hier, want het is de regel waar al het andere aan hangt. Je app zou nooit een ruw creditcardnummer moeten zien, opslaan of verwerken. Niet in een database, niet in een formulier dat je bouwde, niet “even tijdelijk”. Kaartdata direct verwerken legt een stapel juridische en beveiligingsverplichtingen op je die geen enkele eerste-keer-bouwer zou moeten dragen.

In plaats daarvan gebruik je een betalingsprovider — Stripe is de gangbare, en de meeste AI-appbouwers kennen hem goed. De provider geeft je een kant-en-klaar, veilig betaalformulier. De klant typt zijn kaart in het formulier van de provider, de provider belast hem, en je app ontvangt alleen ooit een “ja, dit is betaald”-bericht. Je app weet dat de betaling gebeurde. Hij kent het kaartnummer nooit.

Wanneer je je AI-bouwer vertelt om betalingen toe te voegen, zeg dit expliciet: “Gebruik Stripe Checkout (of het gehoste betaalformulier van Stripe) zodat mijn app nooit ruwe kaartdata verwerkt.” Als de bouwer een aangepast formulier met een kaartnummerveld begint te genereren, stop het. Dat is het ene ding dat je niet wilt dat hij bouwt.

Wat “betalingen toevoegen” echt inhoudt

Het helpt om de bewegende delen te kennen voordat je begint, zodat je kunt zien wanneer er iets ontbreekt. Een werkende betaalflow heeft vier stukken:

  1. Een prijs. Wat je rekent, en of het eenmalig of terugkerend is. Dit leeft in je betalingsprovider, niet hard gecodeerd in je app.
  2. Een checkout-stap. De knop waarop de klant klikt, die ze naar het veilige formulier van de provider stuurt.
  3. Een bevestiging terug naar je app. Na betaling vertelt de provider je app “deze persoon betaalde voor dit ding”. Dit is het deel dat beginners het vaakst overslaan — en het overslaan is hoe je eindigt met mensen die betaalden maar geen toegang kregen.
  4. Een registratie van wie waarvoor betaalde. Zodat je app het juiste ding kan ontgrendelen en zodat je later “heeft deze persoon betaald?” kunt beantwoorden.

Als je AI-bouwer je een Betaal-knop geeft die een kaart belast maar je app daarna niets anders doet, bouwde hij stuk 2 en vergat stukken 3 en 4. Dat is de meest voorkomende half-gebouwde betaalflow, en het ziet eruit alsof het werkt tot een klant betaalt en niets krijgt.

Hoe je het beschrijft aan je AI-bouwer

Hier is een prompt die de stukken hierboven dekt:

Voeg betaalde toegang toe aan deze app met Stripe Checkout. Er is één plan: $19/maand.

Wanneer een ingelogde gebruiker op “Upgrade” klikt, stuur ze naar de gehoste checkout-pagina van Stripe. Bouw geen aangepast kaartformulier — mijn app zou nooit kaartnummers moeten verwerken.

Na een geslaagde betaling, markeer die gebruiker als “betaald” in de database en ontgrendel de Rapporten-pagina voor ze. Na een mislukte of geannuleerde betaling, breng ze terug naar de prijspagina met een bericht.

Gebruik een Stripe-webhook om de betaling server-side te bevestigen voordat je iets ontgrendelt — ontgrendel niet alleen op basis van de gebruiker die op een succespagina terechtkomt.

Die laatste alinea is degene die een echte betaalflow scheidt van een fragiele. De succespagina toegang laten ontgrendelen betekent dat iedereen die het adres van de succespagina leert kennen, het gratis kan ontgrendelen. De webhook — een direct, geverifieerd bericht van Stripe naar de backend van je app — is het betrouwbare signaal. Je AI-bouwer weet hoe hij dit moet opzetten; je moet er gewoon bij naam om vragen.

Test met nepgeld voordat je echt geld gebruikt

Stripe (en de meeste providers) geven je een testmodus met nep-kaartnummers die zich gedragen als echte — inclusief kaarten die slagen, kaarten die geweigerd worden, en kaarten die fouten veroorzaken. Gebruik het. Voordat één echte kaart je app aanraakt, loop elk pad door:

  • Een geslaagde betaling. Ontgrendelde het juiste ding? Veranderde de status van de gebruiker naar “betaald”?
  • Een geweigerde kaart. Handelde de app het gracieus af, of liet het de gebruiker vastzitten op een kapot scherm?
  • Een geannuleerde checkout — de gebruiker klikt op “terug” in plaats van te betalen. Belandden ze ergens zinnigs, nog steeds niet-geüpgraded?
  • Betalen, dan uitloggen en weer inloggen. Zijn ze nog steeds “betaald”? (Dit vangt apps die toegang alleen voor de huidige sessie ontgrendelen en het tegen morgen vergeten.)

Vraag je AI-bouwer om de test-kaartnummers, of zoek ze op in de documentatie van je provider. Een gangbare testkaart voor “deze betaling slaagt” is er een die je bouwer je op verzoek kan geven. Voer alle vier scenario’s uit. De geweigerde-kaart- en geannuleerde-checkout-paden zijn degene die AI-bouwers het vaakst kapot laten, omdat het gelukkige pad het pad is dat ze optimaliseren.

De fouten die echt geld kosten

Een paar specifieke faalwijzen duiken keer op keer op bij eerste betaalflows:

Ontgrendelen op de succespagina in plaats van de webhook. Hierboven behandeld, maar het waard om te herhalen omdat het de dure is. Als je app betaalde functies ontgrendelt op het moment dat de gebruiker op /success belandt, vertrouw je erop dat de browser van de gebruiker eerlijk is over of ze betaalden. Dat zijn ze niet altijd. Ontgrendel op de webhook.

Geen registratie van waarvoor ze betaalden. Als je app gewoon een globale “betaald: ja”-vlag omzet, worstel je op het moment dat je meer dan één plan hebt, of iemand opzegt, of je een terugbetaling moet doen. Sla het specifieke ding op: welk plan, wanneer, en de ID van de provider voor die betaling. Je hebt het later nodig voor supportvragen.

Vergeten dat abonnementen eindigen. Een eenmalige betaling is simpel: betaald is betaald. Een terugkerend abonnement kan verlopen — de kaart verloopt, de betaling mislukt volgende maand. Als je app alleen luistert naar “ze betaalden” en nooit naar “hun abonnement eindigde”, heb je mensen die gratis toegang houden nadat ze stoppen met betalen. Vertel je bouwer om ook het “abonnement geannuleerd of betaling mislukt”-bericht af te handelen, niet alleen het succes.

Het verkeerde bedrag rekenen omdat de prijs op twee plekken leeft. Als de prijs in het scherm van je app is geschreven en ingesteld in je betalingsprovider, drijven ze uiteindelijk uit elkaar, en zal een klant $19 zien maar $29 belast krijgen. Houd de prijs op één plek — je provider — en laat je app weergeven wat de provider ook zegt. Eén bron van waarheid.

Een korte checklist voordat je live gaat

Voordat je van testmodus naar echt geld overschakelt:

  • Mijn app heeft nooit een veld waar iemand een ruw kaartnummer typt.
  • De betaling wordt bevestigd door een webhook van de provider, niet door de gebruiker die een succespagina bereikt.
  • Ik heb een geslaagde betaling, een geweigerde kaart en een geannuleerde checkout getest — alle drie gedragen zich zinnig.
  • Na het betalen blijft de toegang ontgrendeld na uitloggen en de volgende dag.
  • Mijn app registreert waarvoor elke persoon betaalde, niet alleen dat ze betaalden.
  • Als een abonnement verloopt, wordt de toegang automatisch verwijderd.
  • Ik heb de providersleutels van testmodus naar livemodus geschakeld (makkelijk te vergeten — je eerste echte klant die testsleutels raakt, krijgt een verwarrende fout).

Als elk vakje is aangevinkt, ben je klaar voor een echte kaart. Zo niet, dan is dat je volgende gesprek met je AI-bouwer — voordat je de link deelt, niet na het eerste geschil.

De mindset die helpt

Geld is het deel van je app waar “ziet eruit alsof het werkt” en “werkt echt” het verst uit elkaar liggen. Een kapotte lay-out zie je meteen. Een betaalflow die toegang ontgrendelt zonder de betaling te verifiëren, ziet er perfect uit — totdat iemand het merkt en het zijn vrienden vertelt.

Dus behandel de betaalflow als het ene deel van je met AI gebouwde app dat je test als een scepticus. Probeer binnen te komen zonder te betalen. Probeer het te breken. Betaal en probeer dan je toegang kwijt te raken. De 30 minuten die je besteedt aan het bedriegen van je eigen app, is de goedkoopste verzekering die je er ooit op zult kopen.


Sta je op het punt betalingen toe te voegen aan iets dat je hebt gebouwd? Open je volgende AI-bouwersessie door de hele flow te beschrijven — de prijs, de checkout, de webhook-bevestiging, en wat er ontgrendelt — in één keer, in plaats van alleen om een Betaal-knop te vragen. De Betaal-knop is de makkelijke 10%. De andere 90% is wat het geld eerlijk houdt.