SaaS-sovelluksen rakentaminen on nykyään helpompaa kuin koskaan. Cursor tekoäly ja vibe-koodaus mahdollistavat toimivan prototyypin pystyttämisen muutamassa tunnissa. Todellinen testi alkaa kuitenkin silloin, kun sovelluksella pitää alkaa tehdä rahaa.
SaaS kaupallistaminen vaatii luotettavan maksujärjestelmän, joka ei riko tietoturvaa tai vaadi satojen rivien monimutkaista koodia. Tässä oppaassa käymme läpi, miten rakennat saumattoman Stripe integraatio -ratkaisun ja tilaushallinnan käyttämällä Cursoria ja Supabasea.
---
Kolmikantainen arkkitehtuuri: Cursor, Supabase ja Stripe
Vibe-koodauksessa arkkitehtuurin hahmottaminen on tärkeämpää kuin syntaksin muistaminen. Kun tiedät, miten data liikkuu, voit antaa Cursorin hoitaa koodin kirjoittamisen.
Tässä on tehokas järjestelmärakenne tekoälysovellukset-projekteihin:
[Käyttäjä / Frontend] ──(1. Aloittaa tilauksen)──> [Stripe Checkout]
│ │
│ (3. Lukee tilan) │ (2. Lähettää tapahtuman)
▼ ▼
[Supabase Database] <───(4. Päivittää tilauksen)─── [Stripe Webhookit]
1. Frontend: Käyttäjä klikkaa tilauspainiketta, ja hänet ohjataan Stripen valmiille kassasivulle (Stripe Checkout).
2. Stripe: Käsittelee maksun turvallisesti ilman, että luottokorttitiedot koskettavat omaa palvelintasi.
3. Stripe webhookit: Stripe lähettää reaaliaikaisen tiedon onnistuneesta maksusta taustajärjestelmääsi.
4. Supabase: Vastaanottaa webhook-tiedon, päivittää käyttäjän tilaustiedot tietokantaan ja avaa pääsyn maksullisiin ominaisuuksiin.
---
Vaihe 1: Tietokannan valmistelu Supabasessa
Älä yritä rakentaa monimutkaista omaa logiikkaa tilausten seurantaan. Anna Stripen toimia totuuden lähteenä ja peilaa tarvittavat tiedot Supabase-tietokantaan.
Luo Supabasessa kaksi keskeistä taulua:
-
profiles: Laajentaa Supabasen omaaauth.users-taulua. Tähän tallennetaan käyttäjän perustiedot jastripe_customer_id. -
subscriptions: Tallentaa aktiivisen tilauksen tilan. Tärkeimmät sarakkeet ovatid(Stripe subscription ID),status(esim. active, trialing, canceled),price_idjacurrent_period_end.
Tämä rakenne varmistaa, että voit tarkistaa käyttäjän oikeudet yhdellä nopealla tietokantakyselyllä aina, kun hän käyttää sovelluksesi maksullisia toimintoja.
---
Vaihe 2: Cursor-tekoälyn ohjeistaminen (Prompt Engineering)
Cursor on loistava apuri, kun sille annetaan selkeät rajat. Jos pyydät sitä vain "integroimaan Stripen", saat usein sekavaa ja vanhentunutta koodia.
Käytä tarkkaa järjestelmäohjetta Cursorin Composer- tai Chat-tilassa. Kopioi ja muokkaa tämä prompti tarpeisiisi:
Rakenna Next.js API-reitti Stripe Checkout -istunnon luomiseksi.
1. Käytä Supabase-asiakasohjelmaa (Supabase client) kirjautuneen käyttäjän tunnistamiseen pyynnön otsikoista.
2. Hae käyttäjän sähköpostiosoite ja tarkista, onko hänellä jo stripe_customer_id profiles-taulussa.
3. Jos ID puuttuu, luo uusi asiakas Stripessä ja päivitä luotu ID Supabasen profiles-tauluun.
4. Luo Stripe Checkout -istunto käyttäen annettua price_id-arvoa ja palauta istunnon URL-osoite.
5. Käytä TypeScriptiä, käsittele virheet selkeästi ja palauta asianmukaiset HTTP-tilakoodit.
Tämä ohjeistus pakottaa Cursorin kirjoittamaan tietoturvallista koodia, joka sitoo Supabase-käyttäjän suoraan Stripen asiakasrekisteriin.
---
Vaihe 3: Stripe webhookit ja tilatiedon synkronointi
Maksutapahtumat tapahtuvat sovelluksesi ulkopuolella. Kun asiakas maksaa onnistuneesti tai peruuttaa tilauksensa, Stripe ilmoittaa tästä webhookin kautta.
Pyydä Cursoria luomaan webhook-vastaanottaja (esim. /api/webhooks/stripe) seuraavilla säännöillä:
- Varmista allekirjoitus: Webhookin on aina tarkistettava
stripe-signature-otsikko käyttäen Stripen webhook-salaisuutta (STRIPE_WEBHOOK_SECRET). Tämä estää hyökkääjiä väärentämästä maksutapahtumia. - Kuuntele oikeat tapahtumat:
-
checkout.session.completed: Ensimmäinen maksu onnistui. Päivitä asiakkaan tilaustiedot Supabaseen. -
customer.subscription.updated: Tilausta muutettiin (esim. päivitetty kalliimpaan pakettiin). -
customer.subscription.deleted: Tilaus päättyi tai peruutettiin. Poista maksulliset oikeudet käytöstä Supabasessa.
---
Vaihe 4: No-code billing ja asiakasportaali
Älä tuhlaa aikaa oman käyttöliittymän rakentamiseen luottokorttien päivittämistä tai tilausten peruuttamista varten. Se on tietoturvariski ja vaatii jatkuvaa ylläpitoa.
Hyödynnä Stripen valmista asiakasportaalia (Customer Portal). Tämä no-code billing -ratkaisu hoitaa kaiken puolestasi.
1. Käyttäjä klikkaa "Hallitse tilausta" -painiketta sovelluksessasi.
2. Sovelluksesi tekee nopean API-kutsun Stripelle ja pyytää portaali-URL-osoitteen kyseiselle stripe_customer_id:lle.
3. Ohjaat käyttäjän tähän osoitteeseen.
4. Käyttäjä voi itse vaihtaa maksukorttinsa, ladata kuitit tai peruuttaa tilauksensa Stripen suojatussa näkymässä.
Tämä säästää viikkojen kehitystyön ja takaa, että tilaushallinta toimii aina standardien mukaisesti.
---
Seuraavat askeleet: Siirrä koodi tuotantoon
Stripe-integraatio ei ole vaikeaa, kun käytät oikeita työkaluja ja selkeää arkkitehtuuria. Cursor hoitaa rutiinikoodin kirjoittamisen, kunhan sinä pidät huolen järjestelmän rakenteesta ja tietoturvasta.
Tee tämä tänään:
1. Luo ilmainen Stripe-testitili ja luo sinne ensimmäinen kuukausitilaustuote.
2. Aja tarvittavat tietokantataulut Supabaseen.
3. Anna yllä oleva prompti Cursorille ja testaa Checkout-virta paikallisesti käyttäen Stripe CLI -työkalua webhookien testaamiseen.
Kun perusrakenne toimii testitilassa, olet valmis siirtymään tuotantoon ja vastaanottamaan ensimmäiset maksusi.