Kako dodati plačila v svojo aplikacijo: Stripe, blagajna in webhooki
Najpreprostejši način za sprejemanje plačil v aplikaciji je Stripe: uporabite Payment Link, če potrebujete samo gumb „Kupi“ in naročila lahko obdelujete ročno, Stripe Checkout, če mora vaša aplikacija vedeti, kdo je plačal, in samodejno ukrepati, ter Checkout v načinu naročnine in Stripejev portal za stranke za ponavljajoče se zaračunavanje. V vsakem primeru, razen v najpreprostejšem, potrebujete tudi webhook — strežniško končno točko, ki jo Stripe pokliče, ko je plačilo uspešno, in vse preizkusite s testnimi ključi in testnimi karticami Stripe, preden preklopite na žive ključe.
Ta vodnik razloži vsako možnost, del z webhookom, ki ga večina vadnic preskoči, in kaj preveriti, preden sprejmete pravi denar. Podrobnosti o Stripeju so iz Stripejeve lastne dokumentacije od septembra 2026.
Zakaj sploh uporabljati ponudnika plačil
Podatkov o kartici nikoli ne zbirajte v lastnih obrazcih. Ravnanje s surovimi podatki o kartici vas uvršča v obseg PCI DSS (varnostnega standarda za kartične transakcije) in je resna odgovornost. Ponudnik plačil, kot je Stripe, gostuje obrazec za plačilo, hrani kartico, poskrbi za overitev pri banki in vaši aplikaciji sporoči rezultat. Vaša aplikacija vidi samo „stranka X je plačala za Y“.
Ta vodnik uporablja Stripe, ker je zelo razširjen, dobro dokumentiran in ga podpira večina graditeljev aplikacij z UI. Obstajajo tudi drugi ponudniki, nekateri pa delujejo kot „merchant of record“ in za vas prevzamejo obračun davka na promet; če vas skrbi davčna skladnost, se splača primerjati ta model.
Tri načini sprejemanja plačil s Stripejem
| Možnost | Potrebna koda | Vaša aplikacija ve, kdo je plačal? | Najboljše za |
|---|---|---|---|
| Payment Links | Brez | Samo če dodate webhook | Prodajo nekaj fiksnih izdelkov, donacije, preverjanje povpraševanja |
| Checkout (enkratno) | Strežniška koda za ustvarjanje seje | Da, prek webhooka | Trgovine, prenosi za enkratni nakup, enkratni nakupi |
| Checkout (naročnina) | Strežniška koda in obdelava webhooka | Da, prek webhooka | SaaS, članarine, vse ponavljajoče |
Payment Links
Payment Link je plačilna stran, ki jo gosti Stripe in jo ustvarite v nadzorni plošči Stripe brez kode. Dobite URL, ki ga lahko postavite za gumb v aplikaciji, delite v e-pošti ali prikažete kot QR kodo. Stripejeva dokumentacija pravi, da lahko Payment Links prodajajo izdelek, naročnino ali sprejemajo donacijo, lahko pa strankam pustite izbiro, koliko plačajo, ali omejite število nakupov.
Ujetje: vaša aplikacija samodejno ne ve, da je določen prijavljen uporabnik plačal. Za stran z donacijami ali majhno trgovino, kjer naročila izpolnjujete ročno iz obvestil Stripe po e-pošti, je to v redu. Za „plačajte, da odklenete funkcije Pro“ pa ni dovolj.
Stripe Checkout
Checkout je plačilna stran, ki jo vaš strežnik ustvari na zahtevo za določen nakup. Vaš strežnik Stripeju pove, kaj se kupuje (in po želji, kateri kupec kupuje), Stripe vrne URL, vi pa stranko pošljete tja. Stripejeva dokumentacija opisuje, da podpira enkratna in naročniška plačila, kot celotno stran, ki jo gosti Stripe, kot stran, vdelano v vašo spletno mesto, ali kot vdelan obrazec.
Potek:
- Stranka v vaši aplikaciji klikne Kupi.
- Vaš strežnik z vašim tajnim ključem ustvari sejo Checkout, vključno z IDjem, ki jo poveže z vašim uporabnikom ali naročilom.
- Stranka je preusmerjena na Stripe in plača.
- Stripe jo preusmeri nazaj na vašo stran za uspeh.
- Stripe pošlje dogodek
checkout.session.completedna vaš webhook, vaš strežnik pa naročilo označi za plačano ali odklene dostop.
Korak 2 mora potekati na strežniku, ker uporablja vaš tajni ključ. To je glavni razlog, da Checkout potrebuje zaledje.
Naročnine
Naročnine uporabljajo Checkout v načinu naročnine z ponavljajočo se ceno, ki jo nastavite v Stripeju. Prvo plačilo poteka po zgornjem toku. Nato se obnovitve, neuspela plačila s kartico, nadgradnje in preklici dogajajo skozi čas — pogosto takrat, ko stranke sploh ni v vaši aplikaciji —, zato vaša aplikacija za to izve samo prek webhookov.
Za to, da stranke upravljajo svojo naročnino, Stripe ponuja gostovani portal za stranke. Po dokumentaciji Stripe lahko stranke tam posodobijo načine plačila in podatke za obračun, spremenijo ali prekličejo naročnine ter si ogledajo in prenesejo račune. Portal nastavite v nadzorni plošči Stripe in dodate gumb „Upravljaj zaračunavanje“, ki stranko pošlje tja. Tako vam ni treba graditi teh zaslonov sami.
Webhooki: del, ki ga ne smete preskočiti
Webhook je zahtevek HTTP, ki ga Stripe pošlje vašemu strežniku, ko se nekaj zgodi. (Glejte kaj je webhook za splošno idejo.) Stripejev vodnik za izpolnjevanje je jasen: samo strani po uspehu ne smete zaupati za izpolnitev naročil, ker lahko stranka plača in izgubi povezavo, preden se ta stran naloži. Pri naročninah in odloženih načinih plačila so webhooki obvezni.
Dogodki, ki jih je vredno obravnavati
| Dogodek | Kaj pomeni | Kaj naredi vaša aplikacija |
|---|---|---|
checkout.session.completed | Checkout je končan | Označi naročilo za plačano ali začni dostop |
checkout.session.async_payment_succeeded | Odložen način (na primer bančno bremenitev) se je pozneje uveljavil | Izpolni zdaj |
checkout.session.async_payment_failed | To odloženo plačilo ni uspelo | Obvestite stranko; ne izpolnjujte |
invoice.paid | Plačilo naročnine je uspelo, vključno z obnovitvami | Podaljšaj dostop |
invoice.payment_failed | Obnovitev ni uspela | Opozori uporabnika; Stripe lahko poskusi znova |
customer.subscription.updated | Načrt je spremenjen ali je preklic načrtovan | Posodobi uporabnikov načrt |
customer.subscription.deleted | Naročnina se je končala | Odstrani plačani dostop |
Pravila za pravilen obdelovalnik webhookov
Ta pravila izhajajo neposredno iz Stripejeve dokumentacije za webhooke, obdelovalniki, ki jih ustvari UI, pa jih včasih zgrešijo:
- Preverite podpis. Vsak dogodek vsebuje glavo
Stripe-Signature. Vaš obdelovalnik jo preveri s tajnim podpisnim ključem končne točke (začne se zwhsec_). Brez tega bi lahko kdorkoli poslal lažno „plačilo uspelo“ na vaš strežnik. - Uporabite surovo telo zahtevka. Preverjanja podpisa ne uspejo, če ogrodje telo pred tem razčleni ali spremeni.
- Hitro vrnite odgovor 2xx, nato opravite počasnejše delo. Časovne omejitve štejejo kot napake.
- Obravnavajte podvojitve. Stripe lahko isti dogodek dostavi večkrat. Shranjujte ID-je obdelanih dogodkov ali naredite izpolnitev varno za dvojni zagon.
- Ne predpostavljajte vrstnega reda. Stripe ne zagotavlja, da dogodki pridejo v vrstnem redu, v katerem so se zgodili.
- Pričakujte ponovne poskuse. V živem načinu Stripe neuspele dostave ponovno poskuša do tri dni, zato kratka izpad ne izgubi plačil — vaš obdelovalnik pa mora obvladati zamujene dogodke.
Webhooki potrebujejo javni naslov HTTPS, zato običajno delujejo šele, ko je aplikacija objavljena (Stripejev CLI lahko dogodke preusmeri na lokalni računalnik za razvijalce).
Poziv, ki pokrije celoten potek
Dodaj enkratni nakup s Stripe Checkout za „Pro pack“ (ID cene v STRIPE_PRICE_ID). Ustvari sejo Checkout na strežniku s STRIPE_SECRET_KEY iz skrivnosti in v sejo vključi ID prijavljenega uporabnika. Dodaj končno točko POST /api/stripe/webhook, ki preveri podpis Stripe s STRIPE_WEBHOOK_SECRET z uporabo surovega telesa zahtevka, obravnava checkout.session.completed in označi tega uporabnika kot lastnika Pro pack. Naj bo varno, če isti dogodek pride dvakrat. Strani za uspeh in preklic. Tajnega ključa nikoli ne izpostavi brskalniku.
Za naročnine dodaj: „Uporabi način naročnine s STRIPE_PRICE_ID. Obravnavaj invoice.paid, invoice.payment_failed, customer.subscription.updated in customer.subscription.deleted. Dodaj gumb Upravljaj zaračunavanje, ki odpre Stripejev portal za stranke.“
Testni način
Stripe ima ločeni peskovniški (testni) in živi okolji z ločenimi ključi. Peskovniški ključi se začnejo z pk_test_, sk_test_ ali rk_test_; živi ključi z pk_live_, sk_live_ ali rk_live_. Testne transakcije ne premaknejo denarja.
Koristne testne kartice iz Stripejeve dokumentacije za testiranje (katerikoli prihodnji datum poteka, poljubna trimestna koda CVC):
| Številka kartice | Rezultat |
|---|---|
4242 4242 4242 4242 | Plačilo uspe |
4000 0000 0000 0002 | Kartica je zavrnjena |
4000 0000 0000 3220 | Zahteva overitev 3D Secure, nato uspe |
Vsaj to preizkusite:
- Uspešno plačilo odklene pravo stvar za pravega uporabnika
- Zavrnjena kartica prikaže jasno sporočilo in ne odklene ničesar
- Zapiranje zavihka brskalnika takoj po plačilu še vedno da dostop (to dokaže, da webhook deluje, ne le stran po uspehu)
- Preklic na strani Stripe vrne uporabnika v vašo aplikacijo brez zaračunavanja
- Pri naročninah: prekličite v portalu za stranke in preverite, da se dostop konča, kadar mora
Vklop v živo
- Aktivirajte svoj račun Stripe s podatki o podjetju in banki.
- Vstavite žive ključe v skrivnosti svoje aplikacije. Stripe priporoča omejene ključe z dovoljenji, ki jih vaša integracija potrebuje, namesto nerazčlenjenega tajnega ključa.
- Ustvarite končno točko živega webhooka, ki kaže na vašo objavljeno aplikacijo. Ima svoj podpisni ključ, drugačen od testnega — posodobite ga.
- Znova ustvarite izdelke in cene v živem načinu; ID-ji iz testnega načina tam ne obstajajo.
- Opravite eno majhno pravo nakup in ga vrnite.
Vse ključe hranite v skrivnostih projekta, nikoli v kodi ali klepetu. Naš kontrolni seznam varnosti podrobneje pokriva ključe in preverjanje webhookov.
Davki, vračila in dokumentacija
Plačila prinašajo obveznosti, ki jih koda ne rešuje. To ni davčni nasvet; posvetujte se z računovodjo.
- Davek na promet, DDV in GST. Glede na to, kje ste vi in kje so vaše stranke, se boste morda morali registrirati, obračunati in oddati davek. Stripe Tax lahko izračuna in zbere davek ob blagajni, spremlja, kje bi lahko nastala obveznost, in pomaga pri registracijah in oddaji — odgovornost pa ostaja na vas. Ponudniki „merchant of record“ so alternativa, ki prevzamejo več tega.
- Vračila in spori. Pred zagonom odločite pravilnik o vračilih in ga objavite na svoji strani. Spori (povratna knjiženja) se zgodijo; hranite evidenco, kaj je bilo kupljeno in dostavljeno.
- Računi in fakture. Stripe lahko pošilja potrdila po e-pošti; podjetja morda potrebujejo prave fakture.
- Provizije. Vsak ponudnik zaračuna na transakcijo. Preverite trenutni cenik ponudnika in se ne zanašajte na številke iz člankov.
Katera postavitev ustreza vaši aplikaciji
- Donacije ali nekaj izdelkov: Payment Links. Glejte kako zgraditi spletno stran za donacije neprofitnim organizacijam.
- Trgovina s košarico: Checkout s postavkami in webhookom. Glejte kako zgraditi spletno trgovino.
- SaaS ali članarine: Checkout v načinu naročnine, webhooki in portal za stranke. Glejte kako zgraditi MVP SaaS in kako določiti ceno SaaS izdelku.
- Tržnica, ki izplačuje prodajalcem: drugačna, bolj regulirana postavitev (Stripe Connect ali podobno). Načrtujte jo ločeno.
Dodajanje plačil v Mythex
Plačila v aplikacijah, ki jih gradite na Mythexu, uporabljajo vaš lasten račun in ključe Stripe; za vašo aplikacijo ni enokliknega gumba „Poveži Stripe“. Običajen potek:
- Pridobite testne ključe Stripe.
- Dodajte
STRIPE_SECRET_KEY(in pozneje skrivnost webhooka) v skrivnosti projekta — prek/secrets, nastavitev projekta ali kartice za skrivnosti, ki jo agent prikaže, ko potrebuje ključ. - Zaprosite agenta za Checkout s pozivom, podobnim zgornjemu.
- Preizkusite v predogledu s testnimi karticami. Objavite pred registracijo webhooka, saj potrebuje vaš javni URL.
- Po preklopu na žive ključe znova objavite, da jih živa aplikacija prevzame.
Glejte Sprejemanje plačil s Stripe in Obravnava webhookov v zaledju v dokumentaciji.
Vprašanja
Kaj je najlažji način za sprejemanje plačil v aplikaciji?
Stripe Payment Link ne potrebuje kode: ustvarite ga v nadzorni plošči Stripe in povežete z aplikacijo. Če mora aplikacija vedeti, kdo je plačal, in samodejno nekaj odkleniti, uporabite Stripe Checkout z webhookom.
Ali za sprejemanje plačil potrebujem webhook?
Če mora aplikacija reagirati na plačilo — odkleniti račun, označiti naročilo za plačano, obdelati obnovitev —, potem da. Stripe v dokumentaciji pravi, da se ne smete zanesti samo na stran po uspehu, ker stranka morda plača in te strani nikoli ne doseže. Webhooki so za naročnine obvezni.
Kako preizkusim plačila brez pravega denarja?
Uporabite testne API ključe Stripe iz peskovnika in njegove testne številke kartic, na primer 4242 4242 4242 4242 z katerim koli prihodnjim datumom poteka in poljubno trimestno kodo CVC. Testne transakcije ne premaknejo pravega denarja.
Ali Stripe namesto mene obračunava davek na promet in DDV?
Stripe Tax lahko izračuna in zbere davek ob blagajni ter spremlja, kje bi morda morali biti registrirani, vendar ste za svoje davčne obveznosti še vedno odgovorni. Za svoj primer se posvetujte z računovodjo.