Kuinka lisätä maksut sovellukseesi: kassa, tilaukset ja webhookit
Yksinkertaisin tapa ottaa maksuja sovelluksessasi on Stripe: käytä Payment Linkiä, jos tarvitset vain "Osta"-painikkeen ja pystyt käsittelemään tilaukset käsin, Stripe Checkoutia, jos sovelluksesi täytyy tietää, kuka maksoi ja reagoida automaattisesti, sekä Checkoutia tilaustilassa ja Stripen asiakasportaalia toistuvaa laskutusta varten. Kaikissa muissa tapauksissa paitsi yksinkertaisimmassa tarvitset myös webhookin — palvelinpäätepisteen, jonka Stripe kutsuu maksun onnistuessa — ja kaikki kannattaa testata Stripen testiavaimilla ja testikorteilla ennen kuin siirryt oikeisiin avaimiin.
Tässä oppaassa selitetään kukin vaihtoehto, webhook-osa, jonka useimmat opetusohjelmat jättävät väliin, ja se, mitä kannattaa tarkistaa ennen kuin otat oikeaa rahaa vastaan. Stripen tiedot ovat Stripen omasta dokumentaatiosta syyskuulta 2026.
Miksi käyttää maksupalveluntarjoajaa lainkaan
Älä koskaan kerää korttinumeroita omilla lomakkeillasi. Korttitietojen käsittely tuo sinut PCI DSS -standardin (korttialan turvallisuusstandardi) piiriin ja on vakava vastuu. Stripen kaltainen maksupalveluntarjoaja isännöi maksulomakkeen, tallentaa kortin, hoitaa pankin tunnistautumisen ja kertoo sovelluksellesi tuloksen. Sovelluksesi näkee vain "asiakas X maksoi tuotteesta Y".
Tämä opas käyttää Stripeä, koska se on laajalti käytetty, hyvin dokumentoitu ja useimpien tekoälysovellusrakentajien tukema. Muitakin palveluntarjoajia on, ja jotkut toimivat "merchant of record" -mallilla, joka hoitaa myyntiverotuksen puolestasi. Jos veronoudattaminen huolettaa, se malli kannattaa vertailla.
Kolme tapaa ottaa maksuja Stripellä
| Vaihtoehto | Tarvittava koodi | Tietääkö sovelluksesi, kuka maksoi? | Parhaiten sopii |
|---|---|---|---|
| Payment Links | Ei mitään | Vain jos lisäät webhookin | Muutaman kiinteän tuotteen myynti, lahjoitukset, kysynnän testaus |
| Checkout (kertamaksu) | Palvelinkoodi istunnon luomiseen | Kyllä, webhookin kautta | Kaupat, maksettavat lataukset, kertaostokset |
| Checkout (tilaus) | Palvelinkoodi plus webhook-käsittely | Kyllä, webhookin kautta | SaaS, jäsenyydet, kaikki toistuva |
Payment Links
Payment Link on Stripen isännöimä maksusivu, jonka luot Stripe-hallintapaneelissa ilman koodia. Saat URL-osoitteen, jonka voit asettaa sovelluksesi painikkeen taakse, jakaa sähköpostissa tai näyttää QR-koodina. Stripen dokumentaation mukaan Payment Links voi myydä tuotteen, tilauksen tai vastaanottaa lahjoituksen, ja voit antaa asiakkaiden valita, mitä maksavat, tai rajoittaa ostojen määrän.
Saalis: sovelluksesi ei automaattisesti tiedä, että tietty kirjautunut käyttäjä maksoi. Lahjoitussivulle tai pieneen kauppaan, jossa täytät tilaukset käsin Stripen sähköposti-ilmoitusten perusteella, tämä riittää. Jos maksu avaa "Pro-ominaisuudet", se ei riitä.
Stripe Checkout
Checkout on maksusivu, jonka palvelimesi luo tarvittaessa tiettyä ostoa varten. Palvelimesi kertoo Stripelle, mitä ostetaan (ja valinnaisesti, kuka ostaa), Stripe palauttaa URL-osoitteen ja lähetät asiakkaan sinne. Stripen dokumentaation mukaan se tukee sekä kertamaksuja että tilauksia, ja sivu voi olla Stripen isännöimä kokonaan, sivustoosi upotettu tai upotettu lomake.
Kulku:
- Asiakas napsauttaa sovelluksessasi Osta-painiketta.
- Palvelimesi luo Checkout-istunnon salaisella avaimellasi ja sisällyttää tunnuksen, joka yhdistää sen käyttäjääsi tai tilaukseesi.
- Asiakas ohjataan Stripeen ja maksaa.
- Stripe ohjaa hänet takaisin onnistumissivullesi.
- Stripe lähettää
checkout.session.completed-tapahtuman webhookillesi, ja palvelimesi merkitsee tilauksen maksetuksi tai avaa käytön.
Vaihe 2 tapahtuu palvelimella, koska se käyttää salaista avaintasi. Tämä on pääsyy siihen, miksi Checkout tarvitsee taustajärjestelmän.
Tilaukset
Tilaukset käyttävät Checkoutia tilaustilassa, ja niissä on toistuva hinta, jonka asetat Stripessä. Ensimmäinen maksu toimii kuten yllä kuvattu kulku. Sen jälkeen uusimiset, epäonnistuneet kortit, päivitykset kesken laskutuskauden ja peruutukset tapahtuvat ajan kuluessa — usein silloin, kun asiakas ei ole sovelluksessasi lainkaan — joten sovelluksesi saa tietää niistä vain webhookien kautta.
Asiakkaan omaa tilausta varten Stripe tarjoaa isännöidyn asiakasportaalin. Stripen dokumentaation mukaan asiakkaat voivat siellä päivittää maksutapoja ja laskutustietoja, vaihtaa tai peruuttaa tilauksia sekä katsella ja ladata laskuja. Määrität sen Stripe-hallintapaneelissa ja lisäät "Hallinnoi laskutusta" -painikkeen, joka vie asiakkaan sinne. Näin et rakenna näitä näkymiä itse.
Webhookit: osa, jota ei voi ohittaa
Webhook on HTTP-pyyntö, jonka Stripe lähettää palvelimellesi, kun jotain tapahtuu. (Katso mikä webhook on yleistä selitystä varten.) Stripen toteutusohje on selvä: tilauksia ei voi käsitellä pelkän onnistumissivun varassa, koska asiakas voi maksaa ja menettää yhteyden ennen kuin sivu latautuu. Tilauksille ja viivästyneille maksutavoille webhookit ovat pakollisia.
Tapahtumat, jotka kannattaa käsitellä
| Tapahtuma | Mitä se tarkoittaa | Mitä sovelluksesi tekee |
|---|---|---|
checkout.session.completed | Checkout valmistui | Merkitse tilaus maksetuksi tai avaa käyttö |
checkout.session.async_payment_succeeded | Viivästetty maksutapa (kuten pankkiveloitus) hyväksyttiin myöhemmin | Toteuta nyt |
checkout.session.async_payment_failed | Viivästetty maksu epäonnistui | Kerro asiakkaalle; älä toteuta |
invoice.paid | Tilausmaksu onnistui, mukaan lukien uusimiset | Pidennä käyttöä |
invoice.payment_failed | Uusiminen epäonnistui | Varoita käyttäjää; Stripe saattaa yrittää uudelleen |
customer.subscription.updated | Tilaus muuttui tai peruutus on ajastettu | Päivitä käyttäjän paketti |
customer.subscription.deleted | Tilaus päättyi | Poista maksullinen käyttö |
Säännöt oikealle webhook-käsittelijälle
Nämä tulevat suoraan Stripen webhook-dokumentaatiosta, ja tekoälyn tuottamat käsittelijät unohtavat niistä joskus jonkin:
- Varmista allekirjoitus. Jokaisessa tapahtumassa on
Stripe-Signature-otsake. Käsittelijäsi tarkistaa sen päätepisteen allekirjoitussalaisuudella (se alkaawhsec_:llä). Ilman tätä kuka tahansa voisi lähettää palvelimellesi väärennetyn "maksu onnistui" -viestin. - Käytä raakaa pyyntörunkoa. Allekirjoituksen tarkistus epäonnistuu, jos kehys jäsentää tai muokkaa rungon ensin.
- Palauta 2xx-vastaus nopeasti, ja tee hitaampi työ sen jälkeen. Aikakatkaisut lasketaan epäonnistumisiksi.
- Käsittele kaksoiskappaleet. Stripe voi toimittaa saman tapahtuman useammin kuin kerran. Kirjaa käsitellyt tapahtumatunnukset tai tee toteutuksesta turvallinen ajaa kahdesti.
- Älä oleta järjestystä. Stripe ei takaa, että tapahtumat saapuvat siinä järjestyksessä, jossa ne tapahtuivat.
- Odota uudelleenyrityksiä. Live-tilassa Stripe yrittää epäonnistuneita toimituksia uudelleen jopa kolme päivää, joten lyhyt katkos ei menetä maksuja — mutta käsittelijäsi täytyy selvitä myöhästyneistä tapahtumista.
Webhookit tarvitsevat julkisen HTTPS-osoitteen, joten ne toimivat yleensä vasta, kun sovelluksesi on julkaistu. (Stripen CLI voi välittää tapahtumat paikalliselle koneelle kehittäjille.)
Kehote, joka kattaa koko kulun
Lisää kertaostos Stripe Checkoutilla "Pro-paketille" (hinnan tunnus STRIPE_PRICE_ID:ssä). Luo Checkout-istunto palvelimella käyttäen STRIPE_SECRET_KEY-avainta salaisuuksista ja sisällytä kirjautuneen käyttäjän tunnus istuntoon. Lisää POST /api/stripe/webhook -päätepiste, joka varmistaa Stripe-allekirjoituksen STRIPE_WEBHOOK_SECRET-avaimella raakaa pyyntörunkoa käyttäen, käsittelee checkout.session.completed-tapahtuman ja merkitsee käyttäjän Pro-paketin omistajaksi. Varmista, että sama tapahtuma kahdesti ei aiheuta ongelmia. Onnistumis- ja peruutussivut. Salainen avain ei saa koskaan näkyä selaimelle.
Tilauksille lisää: "Käytä tilaustilaa STRIPE_PRICE_ID:llä. Käsittele invoice.paid, invoice.payment_failed, customer.subscription.updated ja customer.subscription.deleted. Lisää Hallinnoi laskutusta -painike, joka avaa Stripen asiakasportaalin tälle käyttäjälle."
Testitila
Stripella on erilliset hiekkalaatikko- (test) ja live-ympäristöt erillisillä avaimilla. Testiavaimet alkavat pk_test_, sk_test_ tai rk_test_; live-avaimet alkavat pk_live_, sk_live_ tai rk_live_. Testitapahtumat eivät siirrä rahaa.
Hyödyllisiä testikortteja Stripen testausdokumentaatiosta (millä tahansa tulevalla vanhenemispäivällä, millä tahansa kolminumeroisella CVC:llä):
| Korttinumero | Tulos |
|---|---|
4242 4242 4242 4242 | Maksu onnistuu |
4000 0000 0000 0002 | Kortti hylätään |
4000 0000 0000 3220 | Vaatii 3D Secure -tunnistautumisen, jonka jälkeen onnistuu |
Testaa vähintään:
- Onnistunut maksu avaa oikean asian oikealle käyttäjälle
- Hylätty kortti näyttää selkeän viestin eikä avaa mitään
- Kun suljet selainvälilehden heti maksun jälkeen, käyttö silti aukeaa (tämä todistaa, että webhook toimii, ei pelkkä onnistumissivu)
- Peruutus Stripen sivulla palauttaa käyttäjän sovellukseesi ilman veloitusta
- Tilauksille: peruuta asiakasportaalissa ja varmista, että käyttö päättyy silloin, kun sen pitää
Tuotantoon siirtyminen
- Aktivoi Stripe-tilisi yrityksesi ja pankkitietojesi kanssa.
- Vaihda live-avaimet sovelluksesi salaisuuksiin. Stripe suosittelee rajoitettuja avaimia, joilla on vain integraatiosi tarvitsemat oikeudet, eikä rajoittamatonta salaista avainta.
- Luo live-webhook-päätepiste, joka osoittaa julkaistuun sovellukseesi. Sillä on oma allekirjoitussalaisuus, joka poikkeaa testisalaisuudesta — päivitä se.
- Luo tuotteet ja hinnat uudelleen live-tilassa; testitilan tunnuksia ei ole siellä.
- Tee yksi pieni oikea ostos ja hyvitä se.
Ssäilytä kaikki avaimet projektisi salaisuuksissa, koskaan koodissa tai chatissa. Tekoälyllä rakennettujen sovellusten turvallisuuslista käsittelee avaimia ja webhookien varmennusta tarkemmin.
Verot, hyvitykset ja paperityöt
Maksut tuovat velvoitteita, joita koodi ei ratkaise. Tämä ei ole veroneuvontaa; kysy kirjanpitäjältä.
- Myyntivero, ALV ja GST. Riippuen siitä, missä sinä ja asiakkaasi olette, sinun saattaa tarvita rekisteröityä, periä ja ilmoittaa veroa. Stripe Tax voi laskea ja kerätä veron kassalla, seurata, missä myynnistäsi voi syntyä velvoite, ja auttaa rekisteröinneissä ja ilmoituksissa — vastuu pysyy kuitenkin sinulla. Merchant of record -palveluntarjoajat ovat vaihtoehto, joka ottaa enemmän tästä vastuusta.
- Hyvitykset ja riidat. Päätä hyvityskäytännöstäsi ennen julkaisua ja laita se sivustollesi. Riitoja (takaisinveloituksia) sattuu; säilytä kirjanpito siitä, mitä ostettiin ja toimitettiin.
- Kuitit ja laskut. Stripe voi lähettää kuitit sähköpostitse; yritykset tarvitsevat ehkä kunnollisia laskuja.
- Maksut. Jokainen palveluntarjoaja veloittaa per tapahtuma. Tarkista palveluntarjoajan nykyinen hinnoittelusivu sen sijaan, että luottaisit artikkelien lukuihin.
Mikä asetus sopii sovellukselle
- Lahjoitukset tai muutama tuote: Payment Links. Katso kuinka rakentaa voittoa tavoittelemattoman järjestön lahjoitussivu.
- Kauppa ostoskorilla: Checkout rivikohtaisilla tuotteilla ja webhook. Katso kuinka rakentaa verkkokauppa.
- SaaS tai jäsenyydet: Checkout tilaustilassa, webhookit ja asiakasportaali. Katso kuinka rakentaa SaaS-MVP ja kuinka hinnoitella SaaS-tuote.
- Markkinapaikka, joka maksaa myyjille: erilainen ja tiukemmin säännelty asetelma (Stripe Connect tai vastaava). Suunnittele se erikseen.
Maksujen lisääminen Mythexissä
Mythexilla rakentamissasi sovelluksissa maksut käyttävät omaa Stripe-tiliäsi ja avaimiasi; sovellukselle ei ole yhden napsautuksen "Yhdistä Stripe" -toimintoa. Tavallinen kulku on tämä:
- Hanki Stripen testiavaimet.
- Lisää
STRIPE_SECRET_KEY(ja webhookin salaisuus myöhemmin) projektin salaisuuksiin —/secrets-sivun, projektin asetusten tai agentin näyttämän salaisuuskortin kautta. - Pyydä agenttia tekemään Checkout yllä olevan kaltaisella kehotteella.
- Testaa Previewssa testikorteilla. Julkaise ennen webhookin rekisteröintiä, koska se tarvitsee julkisen URL-osoitteesi.
- Kun vaihdat live-avaimiin, julkaise uudelleen, jotta live-sovellus ottaa ne käyttöön.
Katso Ota maksut vastaan Stripellä ja Käsittele webhookit taustajärjestelmässäsi dokumentaatiosta.
Kysymykset
Mikä on helpoin tapa ottaa maksuja sovelluksessa?
Stripe Payment Link ei vaadi koodia: luot sen Stripe-hallintapaneelissa ja linkität siihen sovelluksestasi. Jos sovelluksesi täytyy tietää, kuka maksoi, ja avata jotain automaattisesti, käytä sen sijaan Stripe Checkoutia webhookin kanssa.
Tarvitsenko webhookin maksujen ottamiseen?
Jos sovelluksesi täytyy reagoida maksuun — avata tili, merkitä tilaus maksetuksi tai käsitellä uusiminen — tarvitset. Stripen dokumentaation mukaan maksun onnistumissivuun ei voi luottaa yksin, sillä asiakas voi maksaa eikä koskaan päätyä sille sivulle. Webhookit vaaditaan myös tilauksille.
Miten testaan maksuja ilman oikeaa rahaa?
Käytä Stripen hiekkalaatikko- (test) API-avaimia ja sen testikorttinumeroita, kuten 4242 4242 4242 4242 millä tahansa tulevalla vanhenemispäivällä ja millä tahansa kolminumeroisella CVC:llä. Testitapahtumat eivät siirrä oikeaa rahaa.
Hoitaako Stripe myyntiveron ja ALV:n puolestani?
Stripe Tax voi laskea ja kerätä veron kassalla sekä seurata, missä sinun saattaa tarvita rekisteröityä. Vastuu verovelvoitteistasi on kuitenkin edelleen sinulla. Kysy tilanteestasi kirjanpitäjältä.