Kako dodati naročnine s Stripe: načrti, preizkusna obdobja, webhooki in neuspela plačila
Da dodate naročnine s Stripe, v nadzorni plošči Stripe ustvarite izdelek s ponavljajočo se ceno, s strežnika stranke pošljete na Stripe Checkout v načinu naročnine, webhook pa vaši aplikaciji sporoči, ko vsako plačilo uspe, ne uspe, se spremeni ali konča. Stanje naročnine shranite pri uporabniku in dostop odobrite glede na to, ne glede na stran po uspehu. Dodajte gumb Upravljaj zaračunavanje, ki odpre gostovani portal za stranke Stripe, kjer lahko ljudje menjajo kartice, preklapljajo načrte in prekličejo naročnino, ne da bi vi gradili te zaslone.
Ta vodnik temelji na kako dodati plačila v svojo aplikacijo, ki pokriva enkratni Checkout, testni način in vklop v živo. Tu se osredotočamo na to, kaj je pri ponavljajočem se zaračunavanju drugače. Podrobnosti o Stripeju so iz Stripejeve dokumentacije od septembra 2026.
Zakaj so naročnine težje od enkratnih plačil
Enkratno plačilo se zgodi, medtem ko je stranka v vaši aplikaciji. Naročnina se nadaljuje tudi potem, ko odide: mesečne obnovitve, kartice, ki potečejo, nadgradnje sredi cikla, preklici, ki začnejo veljati ob koncu obdobja. Vaša aplikacija za to izve samo prek webhookov. Večina napak pri naročninah izvira iz tega, da se prvo plačilo obravnava kot celotna zgodba.
Vaše možnosti
| Pristop | Kaj gradite | Najboljše za |
|---|---|---|
| Payment Link s ponavljajočo se ceno | Samo povezavo | Preverjanje povpraševanja; dostop ročno |
| Checkout (način naročnine) + portal za stranke | Strežniško pot, webhook, gumb za zaračunavanje | Večino aplikacij SaaS in članarin |
| API naročnin z lastnim plačilnim obrazcem | Veliko več: uporabniški vmesnik za plačila, overitev, ponovne poskuse | Aplikacije z nenavadnimi tokovi zaračunavanja |
| Ponudnik „merchant of record“ | Podobno kot Checkout | Prodajalci, ki želijo, da ponudnik obravnava davek na promet |
Za večino aplikacij sta Checkout in portal prava izbira. Primerjajte ponudnike v Stripe proti Paddle proti Lemon Squeezy, če vas skrbi obračun davkov.
Najprej načrtujte cene v Stripeu
V Stripeu je izdelek tisto, kar prodajate („Pro načrt“), cena pa je, kako to zaračunate („20 $ na mesec“, „200 $ na leto“). En izdelek lahko ima več cen. Odločite se:
- Katere stopnje ponujate in kaj vsaka odklene v vaši aplikaciji
- Mesečno, letno ali oboje
- Ali ponujate preizkusno obdobje in ali zahteva kartico vnaprej
Izdelke in cene ustvarite v testnem načinu in shranite njihove ID-je cen; vaša aplikacija se nanje sklicuje. Če cen še niste določili, preberite kako določiti ceno izdelku SaaS in freemium proti brezplačnemu preizkusnemu obdobju.
Življenjski cikel naročnine, ki ga morate obravnavati
Pregled naročnin pri Stripeju navaja stanja, ki jih naročnina lahko ima. Tista, ki so za dostop najpomembnejša:
| Stanje | Kaj pomeni | Odobri dostop? |
|---|---|---|
trialing | V preizkusnem obdobju | Da |
active | V redu | Da |
incomplete | Prvo plačilo še ni opravljeno; Stripe stranki da 23 ur | Ne |
incomplete_expired | Prvo plačilo nikoli ni uspelo | Ne |
past_due | Zadnje plačilo ni uspelo ali ni bilo poskušano; sledijo lahko ponovni poskusi | Vaša odločitev; mnoge aplikacije dovolijo kratko milostno obdobje |
unpaid | Ponovni poskusi so končani, računi ostanejo odprti, ni nadaljnjih poskusov | Ne, dokumentacija Stripe pravi, da je treba dostop preklicati |
canceled | Končano; ni mogoče ponovno zagnati | Ne |
paused | Preizkusno obdobje se je končalo brez načina plačila in je bilo nastavljeno na pavzo | Ne |
Stanje shranite v zapis uporabnika ali računa in dostop temeljite nanj. Posodobite ga ob vsakem prihodu ustreznega webhooka.
Dogodki webhookov, ki jih obravnavate
| Dogodek | Kaj naredi vaša aplikacija |
|---|---|
checkout.session.completed | Poveže nov ID stranke Stripe in naročnine z vašim uporabnikom |
invoice.paid | Označi naročnino kot aktivno in zabeleži nov konec obdobja |
invoice.payment_failed | Obvesti uporabnika, da kartica ni uspela, in ga poveže s portalom |
invoice.payment_action_required | Prosi uporabnika, naj dokonča overitev kartice |
customer.subscription.updated | Posodobi načrt, stanje in morebitni načrtovan preklic |
customer.subscription.deleted | Odstrani plačani dostop |
customer.subscription.trial_will_end | Opomni uporabnika pred koncem preizkusnega obdobja; Stripe pošlje tri dni prej |
Pravila za obdelovalnik iz Stripejeve dokumentacije za webhooke še vedno veljajo: preverite podpis z neobdelanim telesom, hitro vrnite odgovor 2xx, obravnavajte podvojene in nepravilno urejene dogodke ter pričakujte ponovne poskuse. Vodnik kaj je webhook razloži idejo, vodnik o plačilih pa podrobno našteje pravila.
Korak za korakom
- Ustvarite izdelke in cene v testnem načinu Stripe.
- Dodajte skrivnosti: tajni ključ, ID-je cen in pozneje podpisni ključ webhooka. Nikoli jih ne dajajte v kodo sprednjega dela.
- Stran s cenami: gumb vsakega načrta pokliče vaš strežnik, ki za prijavljenega uporabnika ustvari sejo Checkout v načinu naročnine. Pošljite ID uporabnika, da lahko webhook plačilo poveže z računom.
- Končna točka webhooka: preverite podpise in obravnavajte zgornje dogodke, pri tem pa posodabljajte en zapis naročnine na uporabnika.
- Omejite funkcije glede na shranjeno stanje in načrt, preverjeno na strežniku pri vsakem zaščitenem dejanju, ne samo skrite gumbe.
- Portal za stranke: nastavite ga v nadzorni plošči Stripe (na katere načrte se lahko premaknejo, ali lahko prekličejo), nato dodajte gumb Upravljaj zaračunavanje, ki na strežniku ustvari sejo portala in preusmeri nanjo.
- Neuspela plačila: v nastavitvah zaračunavanja Stripe izberite vedenje ob ponovnih poskusih in kaj se zgodi po zadnjem poskusu. Medtem ko je naročnina
past_due, prikažite pasico v aplikaciji. - Preizkusite celoten življenjski cikel, nato objavite in registrirajte webhook v živo.
Pozivi za vašega graditelja z UI
Dodaj zaračunavanje naročnin s Stripe. Načrti: Starter (ID cene v STRIPE_PRICE_STARTER) in Pro (STRIPE_PRICE_PRO). Stran s cenami na strežniku ustvari sejo Checkout v načinu naročnine z uporabo STRIPE_SECRET_KEY, prijavljenemu uporabniku pa doda njegov ID. Shrani ID stranke Stripe, ID naročnine, načrt in stanje pri uporabniku. Tajnega ključa nikoli ne izpostavi brskalniku.
Dodaj POST /api/stripe/webhook. Preveri podpis s STRIPE_WEBHOOK_SECRET z uporabo neobdelanega telesa zahtevka. Obravnavaj checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted in customer.subscription.trial_will_end. Zabeleži obdelane ID-je dogodkov, da se podvojitve prezrejo. Stanje uporabnika posodobi iz objekta naročnine, ne iz vrstnega reda, v katerem dogodki prispejo.
Na strežniku omeji funkcije Pro: dovoli jih samo, ko je stanje active ali trialing in je načrt Pro. Ko je stanje past_due, prikaži pasico „plačilo ni uspelo, posodobite kartico“. Dodaj gumb Upravljaj zaračunavanje, ki za tega uporabnika odpre portal za stranke Stripe.
Nadgradnje, znižanja in sorazmerni obračun
Ko stranka zamenja načrt, dokumentacija Stripe pravi, da sprememba pogosto ustvari sorazmerni obračun: nova cena se uporabi za preostanek trenutnega obdobja zaračunavanja. Predogled sorazmernih obračunov lahko pregledate ali jih izklopite. Če imajo načrti isti interval, datumi zaračunavanja ostanejo enaki; prehod z mesečnega na letno premakne datum zaračunavanja na dan preklopa. Če strankam dovolite spreminjanje načrtov v portalu, si prihranite pisanje te logike, vendar v nastavitvah portala odločite, kateri preklopi so dovoljeni.
Kontrolni seznam za testiranje
Uporabite testni način Stripe in testne kartice ter preglejte vsako stanje:
- Nova naročnina odobri pravi načrt pravemu uporabniku
- Zapiranje zavihka takoj po plačilu še vedno odobri dostop (dokaže, da webhook deluje)
- Zavrnjena kartica ob prijavi ne odobri ničesar
- Neuspešna obnovitev postavi račun v past_due in prikaže pasico
- Posodobitev kartice v portalu obnovi stanje active
- Nadgradnja in znižanje pravilno spremenita funkcije
- Preklic ob koncu obdobja ohrani dostop do končnega datuma, nato ga odstrani
- Uporabniki v preizkusnem obdobju dobijo dostop, prejmejo opomnik in se pravilno pretvorijo ali izgubijo dostop
- Pošiljanje istega dogodka webhooka dvakrat ne spremeni ničesar
Testne ure Stripe vam omogočajo simulacijo poteka časa, tako da lahko preizkusite obnovitve, ne da čakate mesec. Za to, kako jih uporabljati, preverite trenutno dokumentacijo Stripe za testiranje.
Pogoste napake
- Odobritev dostopa na strani po uspehu. Stranke morda plačajo in tja nikoli ne pridejo. Uporabite webhook.
- Obravnava samo prvega plačila. Obnovitve, neuspehi in preklici pridejo pozneje, kot dogodki.
- Preverjanje stanja načrta samo v sprednjem delu. Vsakdo lahko neposredno pokliče vaš API.
- En uporabnik, več naročnin po naključju. Preverite, ali obstaja naročnina, preden ustvarite novo sejo Checkout, ali pa obstoječe stranke pošljite v portal.
- Preklic dostopa ob prvi neuspeli obnovitvi. Kartice odpovejo iz dolgočasnih razlogov. Kratko milostno obdobje z jasno pasico obdrži stranke.
- Pozabljen webhook v živo. Testne in žive končne točke imajo različne podpisne ključe.
- Ignoriranje davkov in vračil. Pred zagonom določite pravilnik o vračilih in s računovodjo preverite davčne obveznosti.
Naročnine na Mythexu
Aplikacije, ki jih gradite na Mythexu, uporabljajo vaš lasten račun in ključe Stripe; za vašo aplikacijo ni enokliknega povezovanja s Stripe. Testna ključa in ID-je cen dodajte kot skrivnosti projekta, uporabite pozive, podobne zgornjim, in preizkusite s testnimi karticami Stripe v predogledu. Webhooki potrebujejo javni URL vaše aplikacije, zato objavite pred registracijo končne točke v Stripeu, in ponovno objavite, ko preklopite na žive ključe, da jih živa aplikacija prevzame. Glejte Sprejemanje plačil s Stripe in Obravnava webhookov v zaledju. Za širši izdelek vam kako zgraditi MVP SaaS pokaže, kaj graditi okoli zaračunavanja.
Vprašanja
Kako najpreprosteje dodam naročnine s Stripe?
V nadzorni plošči Stripe ustvarite izdelek s ponavljajočo se ceno, stranke pošljete na Stripe Checkout v načinu naročnine, dogodke naročnin obravnavate s webhookom, gumb Upravljaj zaračunavanje pa povežete z gostovanim portalom za stranke Stripe. Tako vam ni treba sami graditi obrazcev za kartice in zaslonov za spremembo načrta.
Katere dogodke webhookov Stripe potrebujem za naročnine?
Najmanj checkout.session.completed, da novo naročnino povežete z uporabnikom, invoice.paid za potrditev vsakega uspešnega plačila, invoice.payment_failed za opozorilo na neuspele obnovitve ter customer.subscription.updated in customer.subscription.deleted za spremljanje sprememb načrta in preklicev.
Kaj se zgodi, ko plačilo naročnine ne uspe?
Po dokumentaciji Stripe od septembra 2026 naročnina ponavadi postane past_due, Stripe pa lahko plačilo glede na vaše nastavitve ponovno poskusi. Po zadnjem poskusu nastavitve v nadzorni plošči odločijo, ali se naročnina prekliče, označi kot neplačana ali pusti kot past_due.
Ali lahko ponudim brezplačno preizkusno obdobje brez zahtevanja kartice?
Da. Stripe podpira brezplačna preizkusna obdobja, njegova dokumentacija pa opisuje stanje paused za preizkuse, ki se končajo brez načina plačila, če je tako nastavljeno. Zbiranje kartice vnaprej običajno pomeni manj prijav, a več plačujočih strank; preizkusite, kaj ustreza vašemu izdelku.