Előfizetések hozzáadása Stripe-pal: csomagok, próbaidőszakok, webhookok és sikertelen fizetések
Ahhoz, hogy előfizetéseket adj hozzá a Stripe-pal, hozz létre egy terméket ismétlődő árral a Stripe irányítópultjában, küldd a vásárlókat a szerveredről Stripe Checkoutra előfizetési módban, és hagyd, hogy egy webhook jelezze az appodnak, amikor egy fizetés sikerül, sikertelen, megváltozik vagy véget ér. A hozzáférést a felhasználóhoz tárolt előfizetési állapotból add, nem a sikeres fizetés oldalból. Adj hozzá egy Számlázás kezelése gombot, amely a Stripe hosztolt ügyfélportáljára visz, hogy az emberek kártyát cserélhessenek, csomagot válthassanak és lemondhassanak anélkül, hogy neked ezeket a képernyőket kellene megépítened.
Ez az útmutató a fizetések hozzáadása az appodhoz útmutatóra épít, amely az egyszeri Checkoutot, a teszt módot és az éles indítást fedi le. Itt az ismétlődő számlázás különbségeire koncentrálunk. A Stripe-adatok a Stripe 2026 szeptemberi dokumentációja szerint szerepelnek.
Miért nehezebbek az előfizetések az egyszeri fizetéseknél
Az egyszeri fizetés addig történik, amíg a vásárló az appban van. Az előfizetés azután is folytatódik, hogy elhagyta: havi megújítások, lejáró kártyák, ciklus közbeni bővítések, lemondások, amelyek a periódus végén lépnek életbe. Az appod ezekről csak webhookokon keresztül értesül. A legtöbb előfizetéses hiba abból fakad, hogy az első fizetést tekintik az egész történetnek.
A lehetőségeid
| Megközelítés | Amit építesz | Legjobb ehhez |
|---|---|---|
| Payment Link ismétlődő árral | Csak egy link | Kereslet tesztelése; a hozzáférés kézi kezelése |
| Checkout (előfizetési mód) + ügyfélportál | Szerveri útvonal, webhook, számlázás gomb | A legtöbb SaaS-app és tagság |
| Előfizetési API a saját fizetési űrlappal | Sokkal több: fizetési felület, hitelesítés, újrapróbálkozások | Szokatlan számlázási folyamatú appok |
| Merchant-of-record szolgáltató | Hasonló a Checkouthoz | Eladók, akik azt szeretnék, hogy a szolgáltató kezelje az értékesítési adót |
A legtöbb appnál a Checkout plusz a portál a jó kompromisszum. Ha aggaszt az adókezelés, a Stripe vs. Paddle vs. Lemon Squeezy összehasonlítás segít a szolgáltatók közötti választásban.
Először a Stripe-ban tervezd meg az árazást
A Stripe-ban a termék az, amit eladsz („Pro csomag”), az ár pedig az, ahogyan számláznod ("havi 20 dollár", "évi 200 dollár"). Egy terméknek több ára lehet. Döntsd el:
- Mely szinteket kínálod, és az egyes szintek mit oldanak fel az appodban
- Havi, éves vagy mindkettő
- Kínálsz-e próbaidőszakot, és kell-e hozzá kártya előzetesen
Hozd létre a termékeket és az árakat teszt módban, és jegyezd fel az ár-azonosítóikat; az appod ezekre hivatkozik. Ha még nem döntöttél az árakról, olvasd el a SaaS-termék árazása és a freemium vs. ingyenes próba útmutatót.
Az előfizetési életciklus, amelyet kezelned kell
A Stripe előfizetési áttekintése felsorolja, milyen állapotai lehetnek egy előfizetésnek. A hozzáférés szempontjából ezek a legfontosabbak:
| Állapot | Jelentése | Adj hozzáférést? |
|---|---|---|
trialing | Próbaidőszakban van | Igen |
active | Rendben van | Igen |
incomplete | Az első fizetés még nem történt meg; a Stripe 23 órát ad a vásárlónak | Nem |
incomplete_expired | Az első fizetés soha nem sikerült | Nem |
past_due | A legutóbbi fizetés sikertelen volt, vagy nem próbálták meg; újrapróbálkozások következhetnek | A te döntésed; sok app rövid türelmi időt ad |
unpaid | Az újrapróbálkozások véget értek, a számlák nyitva maradnak, további próbálkozás nincs | Nem; a Stripe dokumentációja szerint a hozzáférést vissza kell vonni |
canceled | Véget ért; nem indítható újra | Nem |
paused | A próbaidőszak fizetési mód nélkül ért véget, és szüneteltetésre volt állítva | Nem |
Tárold az állapotot a felhasználói vagy fiókrekordodon, és a hozzáférést erre alapozd. Minden alkalommal frissítsd, amikor egy vonatkozó webhook érkezik.
A kezelendő webhook-események
| Esemény | Mit csinál az appod |
|---|---|
checkout.session.completed | Összeköti az új Stripe-ügyfél- és előfizetés-azonosítókat a felhasználóddal |
invoice.paid | Aktívra állítja az előfizetést, és rögzíti az új időszak végét |
invoice.payment_failed | Értesíti a felhasználót, hogy a kártyája sikertelen, és linkel a portálra |
invoice.payment_action_required | Arra kéri a felhasználót, hogy végezze el a kártya hitelesítését |
customer.subscription.updated | Frissíti a csomagot, az állapotot és az esetleges ütemezett lemondást |
customer.subscription.deleted | Eltávolítja a fizetős hozzáférést |
customer.subscription.trial_will_end | Emlékezteti a felhasználót a próbaidőszak vége előtt; a Stripe három nappal korábban küldi |
A Stripe webhook-dokumentációjának kezelőszabályai itt is érvényesek: ellenőrizd az aláírást a nyers törzs alapján, gyorsan adj 2xx választ, kezeld az ismétlődő és sorrenden kívüli eseményeket, és számolj az újrapróbálkozásokkal. A mi a webhook útmutató az általános elképzelést magyarázza, a fizetési útmutató pedig részletesen felsorolja a szabályokat.
Lépésről lépésre
- Hozz létre termékeket és árakat a Stripe teszt módjában.
- Adj hozzá titkokat: a titkos kulcsot, az ár-azonosítókat, később pedig a webhook aláíró titkot. Soha ne tedd őket a frontend kódba.
- Árazási oldal: minden csomag gombja meghívja a szervered, amely előfizetési módban Checkout-munkamenetet hoz létre a bejelentkezett felhasználónak. Add át a felhasználói azonosítódat, hogy a webhook a fizetést a fiókhoz tudja párosítani.
- Webhook-végpont: ellenőrizd az aláírásokat, és kezeld a fenti eseményeket, felhasználónként egy előfizetési rekordot frissítve.
- Szabályozd a funkciókat a tárolt állapot és csomag alapján, minden védett műveletnél a szerveren ellenőrizve, nem csak elrejtett gombokkal.
- Ügyfélportál: állítsd be a Stripe irányítópultjában (mely csomagokra válthatnak az emberek, lemondhatnak-e), majd adj egy Számlázás kezelése gombot, amely a szerveren portálmunkamenetet hoz létre, és oda irányít.
- Sikertelen fizetések: a Stripe számlázási beállításaiban válaszd ki az újrapróbálkozás viselkedését és az utolsó újrapróbálkozás utáni teendőket. Mutass az appban banner-t, amíg
past_dueaz állapot. - Teszteld a teljes életciklust, majd tedd közzé az appot, és regisztráld az éles webhookot.
Promptok az AI app-építőnek
Adj hozzá előfizetéses számlázást a Stripe-pal. Csomagok: Starter (ár-azonosító a STRIPE_PRICE_STARTER-ben) és Pro (STRIPE_PRICE_PRO). Az árazási oldal a szerveren hoz létre Checkout-munkamenetet előfizetési módban a STRIPE_SECRET_KEY-jel, a bejelentkezett felhasználó azonosítóját csatolva. Mentsd el a felhasználóhoz a Stripe ügyfél-azonosítót, az előfizetés-azonosítót, a csomagot és az állapotot. A titkos kulcsot soha ne tedd elérhetővé a böngészőnek.
Adj hozzá egy POST /api/stripe/webhook végpontot. Ellenőrizd az aláírást a STRIPE_WEBHOOK_SECRET-tel a nyers kérés törzsén. Kezeld a checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted és customer.subscription.trial_will_end eseményeket. Rögzítsd a feldolgozott esemény-azonosítókat, hogy a duplikátumokat figyelmen kívül hagyd. A felhasználó állapotát az előfizetési objektumból frissítsd, nem abból a sorrendből, ahogy az események érkeznek.
Szabályozd a Pro funkciókat a szerveren: csak akkor engedd őket, ha az állapot active vagy trialing, és a csomag Pro. Ha az állapot past_due, mutass egy „a fizetés sikertelen, frissítsd a kártyádat” bannert. Adj hozzá egy Számlázás kezelése gombot, amely megnyitja a Stripe ügyfélportálját ehhez a felhasználóhoz.
Bővítések, visszaminősítések és a díjkiigazítás
Ha egy vásárló csomagot vált, a Stripe dokumentációja szerint a változtatás gyakran díjkiigazítást (proration) hoz létre: az új árat az aktuális számlázási időszak hátralévő részére alkalmazzák. Megnézheted a díjkiigazításokat előre, vagy kikapcsolhatod őket. Ha a csomagok intervallumai megegyeznek, a számlázási dátumok nem változnak; havi-ról évesre váltáskor a számlázási dátum a váltás napjára kerül. Ha a vásárlók a portálon módosíthatják a csomagjukat, nem kell neked ezt a logikát megírnod, de a portál beállításaiban döntsd el, mely váltások engedélyezettek.
Tesztellenőrzőlista
Használd a Stripe teszt módját és teszt-kártyákat, és járj végig minden állapotot:
- Az új előfizetés a megfelelő csomagot adja a megfelelő felhasználónak
- Ha közvetlenül fizetés után bezárod a lapot, a hozzáférés akkor is megvan (ez bizonyítja, hogy a webhook működik)
- Az elutasított kártya a regisztrációnál nem ad semmit
- Egy sikertelen megújítás a fiókot
past_dueállapotba teszi, és megjelenik a banner - A kártya frissítése a portálon visszaállítja az
activeállapotot - A bővítés és a visszaminősítés helyesen változtatja a funkciókat
- Lemondás az időszak végén a hozzáférést a végdátumig megtartja, utána eltávolítja
- A próbaidős felhasználók megkapják a hozzáférést, az emlékeztetőt, és helyesen térnek át fizetősre vagy vesztik el a hozzáférést
- Ugyanazon webhook-esemény kétszeri küldése semmit sem változtat
A Stripe teszt-órái (test clocks) lehetővé teszik, hogy szimuláld az idő múlását, így a megújításokat egy hónap várakozás nélkül tesztelheted. A használatukról nézd meg a Stripe aktuális tesztelési dokumentációját.
Gyakori hibák
- Hozzáférés adása a sikeres fizetés oldalon. A vásárlók fizethetnek úgy, hogy soha nem jutnak el oda. Használd a webhookot.
- Csak az első fizetés kezelése. A megújítások, a sikertelen fizetések és a lemondások később, eseményekként érkeznek.
- Csomagállapot ellenőrzése csak a frontenden. Bárki meghívhatja közvetlenül az API-dat.
- Egy felhasználó, véletlenül sok előfizetéssel. Ellenőrizd, van-e már előfizetés, mielőtt új Checkout-munkamenetet hoznál létre, vagy küldd a meglévő ügyfeleket a portálra.
- Hozzáférés visszavonása az első sikertelen megújításnál. A kártyák unalmas okok miatt bukhatnak meg. Egy rövid türelmi idő és egy világos banner megtartja az ügyfeleket.
- Az éles webhook elfelejtése. A teszt- és az éles végpontok eltérő aláíró titkokkal rendelkeznek.
- Az adók és a visszatérítések figyelmen kívül hagyása. Döntsd el a visszatérítési szabályzatodat, és indulás előtt nézd meg az adókötelezettségeidet a könyvelőddel.
Előfizetések a Mythexen
A Mythexen épített appok a saját Stripe-fiókodat és kulcsaidat használják; nincs egykattintásos Stripe-csatlakoztatás az appodhoz. Add a teszt-kulcsaidat és ár-azonosítóidat projekt-titokként, használd a fenti promptokhoz hasonló szövegeket, és teszteld a teszt-kártyákkal az előnézetben. A webhookoknak az appod nyilvános URL-je kell, ezért tedd közzé az appot, mielőtt a végpontot regisztrálod a Stripe-ban, és az éles kulcsokra váltás után tedd közzé újra, hogy az éles app átvegye őket. Lásd: Fizetések elfogadása a Stripe-pal és Webhookok kezelése a háttérrendszerben. A szélesebb termékhez a SaaS MVP építése útmutató mutatja meg, mit építs a számlázás köré.
Kérdések
Mi a legegyszerűbb módja az előfizetések hozzáadásának a Stripe-pal?
Hozz létre egy terméket ismétlődő árral a Stripe irányítópultjában, küldd a vásárlókat Stripe Checkoutra előfizetési módban, kezeld az előfizetési eseményeket webhookkal, és kösd össze a „Számlázás kezelése” gombot a Stripe hosztolt ügyfélportáljával. Így nem kell saját kártyaűrlapot és csomagmódosító képernyőket építened.
Mely Stripe webhook-eseményekre van szükségem az előfizetésekhez?
Legalább a checkout.session.completed eseményre, amely összeköti az új előfizetést a felhasználóddal; az invoice.paid eseményre, amely minden sikeres fizetést megerősít; az invoice.payment_failed eseményre, amely a sikertelen megújításokról figyelmeztet; valamint a customer.subscription.updated és a customer.subscription.deleted eseményekre, amelyek a csomagváltásokat és a lemondásokat követik.
Mi történik, ha egy előfizetési fizetés sikertelen?
A Stripe dokumentációja szerint 2026 szeptemberétől az előfizetés általában past_due állapotba kerül, és a Stripe a beállításaid szerint újrapróbálhatja a fizetést. Az utolsó újrapróbálkozás után az irányítópult-beállításaid döntik el, hogy az előfizetés lemondásra kerül, unpaid állapotba megy, vagy past_due-ban marad.
Kínálhatok ingyenes próbaidőszakot kártyaadat nélkül?
Igen. A Stripe támogatja az ingyenes próbaidőszakokat, dokumentációja pedig leír egy paused állapotot arra az esetre, ha a próbaidőszak fizetési mód nélkül ér véget, és így van beállítva. A kártya előzetes kérése általában kevesebb regisztrációt, de több fizető ügyfelet jelent; teszteld, mi illik a termékedhez.