Како да додадете претплати со Stripe: планови, пробни периоди, webhook-ови и неуспешни плаќања
За да додадете претплати со Stripe, создајте производ со повторувачка цена во Stripe Dashboard, испратете ги клиентите на Stripe Checkout во режим на претплата од вашиот сервер, а webhook нека ви кажува кога секое плаќање успева, не успева, се менува или завршува. Статусот на претплатата чувајте го кај корисникот и пристапот давајте според него, а не според страницата за успех. Додајте копче Управувај со наплатата што го отвора хостираниот портал за клиенти на Stripe, за луѓето да можат да менуваат картички, да преминуваат на други планови и да откажуваат, без да градите тие екрани сами.
Овој водич се надоврзува на како да додадете плаќања во апликацијата, каде се опфатени еднократен Checkout, тест режим и пуштање во живот. Тука се фокусираме на тоа што е различно кај повторувачкото наплатување. Деталите за Stripe се од документацијата на Stripe од септември 2026.
Зошто претплатите се потешки од еднократните плаќања
Едногодишното плаќање се случува додека клиентот е во вашата апликација. Претплатата продолжува и откако ќе ја напушти: месечни обновувања, картички што истекуваат, надградби во средина на циклусот, откажувања што стапуваат на сила на крајот на периодот. Вашата апликација за сето ова дознава само преку webhook-ови. Повеќето грешки со претплатите доаѓаат од тоа што првото плаќање се третира како целата приказна.
Вашите опции
| Пристап | Што градите | Најдобар за |
|---|---|---|
| Payment Link со повторувачка цена | Само линк | Тестирање на побарувачката; давање пристап рачно |
| Checkout (режим на претплата) + портал за клиенти | Серверска рута, webhook, копче за наплата | Повеќето SaaS апликации и членарини |
| Subscriptions API со ваш сопствен образец за плаќање | Многу повеќе: UI за плаќање, автентикација, обиди повторно | Апликации со необични текови на наплата |
| Merchant-of-record давател | Слично на Checkout | Продавачи што сакаат давателот да се справи со данокот на промет |
За повеќето апликации, Checkout плус порталот е вистинскиот компромис. Споредете даватели во Stripe наспрема Paddle наспрема Lemon Squeezy ако обработката на данокот ве загрижува.
Прво планирајте ја цената во Stripe
Во Stripe, производ е она што го продавате („Pro план“), а цена е како го наплатувате („$20 месечно“, „$200 годишно“). Еден производ може да има повеќе цени. Одлучете:
- Кои нивоа нудите и што секое од нив отклучува во вашата апликација
- Месечно, годишно или и двете
- Дали нудите пробен период и дали треба картичка однапред
Создајте ги производите и цените во тест режим и зачувајте ги ID-овите на цените; вашата апликација се повикува на нив. Ако цената сè уште не сте ја одредиле, прочитајте како да ја одредите цената на SaaS производ и freemium наспрема бесплатен пробен период.
Животниот циклус на претплатата што мора да го средите
Претплатите на Stripe имаат статуси опишани во прегледот за претплати на Stripe. Оние што најмногу важат за пристапот:
| Статус | Што значи | Дава пристап? |
|---|---|---|
trialing | Во пробен период | Да |
active | Во ред | Да |
incomplete | Првото плаќање уште не е завршено; Stripe му дава на клиентот 23 часа | Не |
incomplete_expired | Првото плаќање никогаш не успеало | Не |
past_due | Последното плаќање не успеало или не е обидено; можат да следат повторни обиди | Ваш избор; многу апликации дозволуваат кратък грејс период |
unpaid | Обидите завршиле, фактурите остануваат отворени, нема понатамошни обиди | Не; документацијата на Stripe вели дека пристапот треба да се укине |
canceled | Завршила; не може да се рестартира | Не |
paused | Пробниот период завршил без начин на плаќање и бил поставен на пауза | Не |
Статусот чувајте го на записот на корисникот или сметката и пристапот базирајте го на него. Ажурирајте го секој пат кога ќе пристигне релевантен webhook.
Webhook настаните што треба да се обработат
| Настан | Што прави вашата апликација |
|---|---|
checkout.session.completed | Поврзи ги новите ID-а на клиентот и претплатата на Stripe со вашиот корисник |
invoice.paid | Означи ја претплатата како активна и запиши го новиот крај на периодот |
invoice.payment_failed | Кажи му на корисникот дека картичката не успеала и поврзи го порталот |
invoice.payment_action_required | Побарај од корисникот да ја заврши автентикацијата на картичката |
customer.subscription.updated | Ажурирај план, статус и евентуално закажано откажување |
customer.subscription.deleted | Отстрани го платениот пристап |
customer.subscription.trial_will_end | Потсети го корисникот пред крајот на пробниот период; Stripe го испраќа три дена порано |
Правилата за обработувачите од документацијата на Stripe за webhook-ови важат и овде: проверувајте го потписот со сурово тело, вратете 2xx брзо, ракувајте со дупликати и настани надвор од редослед, и очекувајте повторувања. Водичот што е webhook го објаснува основниот поим, а водичот за плаќања ги наведува правилата подетално.
Чекор по чекор
- Создајте производи и цени во тест режим на Stripe.
- Додајте тајни: тајниот клуч, ID-овите на цените и подоцна тајниот клуч за потпишување на webhook. Никогаш не ги ставајте во кодот на фронтендот.
- Страница со цени: копчето на секој план повикува ваш сервер, кој создава Checkout Session во режим на претплата за најавениот корисник. Пренесете го ID-то на корисникот за webhook-от да го поврзе плаќањето со сметката.
- Крајна точка за webhook: проверете ги потписите и обработете ги настаните погоре, ажурирајќи по една запис на претплата по корисник.
- Ограничете ги функциите според зачуваниот статус и план, проверени на серверот за секое заштитено дејство, не само со скриени копчиња.
- Портал за клиенти: конфигурирајте го во Stripe Dashboard (на кои планови можат да преминат луѓето, дали можат да откажат), па додајте копче Управувај со наплатата што создава сесија за порталот на серверот и пренасочува таму.
- Неуспешни плаќања: во поставките за наплата на Stripe, изберете однесување за повторни обиди и што се случува по последниот обид. Прикажете банер во апликацијата додека е
past_due. - Тестирајте го целиот животен циклус, па објавете и регистрирајте го живиот webhook.
Упатства за вашиот AI градител
Додај претплатничка наплата со Stripe. Планови: Starter (ID на цената во STRIPE_PRICE_STARTER) и Pro (STRIPE_PRICE_PRO). Страницата со цени создава Checkout Session во режим на претплата на серверот користејќи STRIPE_SECRET_KEY, со ID-то на најавениот корисник прикачено. Зачувај го ID-то на клиентот во Stripe, ID-то на претплатата, планот и статусот кај корисникот. Никогаш не го изложувај тајниот клуч на прелистувачот.
Додај POST /api/stripe/webhook. Провери го потписот со STRIPE_WEBHOOK_SECRET користејќи сурово тело на барањето. Обработи checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted и customer.subscription.trial_will_end. Евидентирај ги ID-ата на обработените настани за дупликатите да се игнорираат. Ажурирај го статусот на корисникот според објектот на претплатата, а не според редоследот по кој пристигнуваат настаните.
Ограничи ги функциите за Pro на серверот: дозволи ги само кога статусот е active или trialing и планот е Pro. Прикажи банер „плаќањето не успеа, ажурирајте ја картичката“ кога статусот е past_due. Додај копче Управувај со наплатата што го отвора порталот за клиенти на Stripe за овој корисник.
Надградби, намалувања и пропорционално плаќање
Кога клиентот ќе смени план, документацијата на Stripe вели дека промената често создава пропорција (proration): новата цена се применува на остатокот од тековниот период на наплата. Можете да ги прегледате пропорциите или да ги исклучите. Ако плановите имаат ист интервал, датумите на наплата остануваат исти; префрлањето од месечно на годишно го поместува датумот на наплата на денот на промената. Дозволувањето клиентите да го менуваат планот во порталот ви штеди да пишувате таква логика, но во поставките на порталот одлучете кои промени се дозволени.
Листа за тестирање
Користете тест режим на Stripe и тест картички, и поминете низ секоја состојба:
- Новата претплата го дава вистинскиот план на вистинскиот корисник
- Затворање на таб веднаш по плаќањето сè уште дава пристап (ова докажува дека webhook-от работи)
- Одбиена картичка при регистрација не дава ништо
- Неуспешно обновување го става корисникот во past_due и прикажува банер
- Ажурирање на картичката во порталот го враќа статусот active
- Надградбата и намалувањето правилно ги менуваат функциите
- Откажување на крајот на периодот го задржува пристапот до крајниот датум, а потоа го отстранува
- Корисниците во пробен период добиваат пристап, ја добиваат потсетката и правилно преминуваат во платени или го губат пристапот
- Испраќањето на истиот webhook настан два пати не менува ништо
Тест часовниците на Stripe ви дозволуваат да симулирате минување на времето, па можете да тестирате обновувања без да чекате месец. Проверете ја тековната документација на Stripe за тестирање за тоа како се користат.
Чести грешки
- Давање пристап на страницата за успех. Клиентите можат да платат и никогаш да не ја стигнат. Користете webhook.
- Обработка само на првото плаќање. Обновувањата, неуспесите и откажувањата доаѓаат подоцна, како настани.
- Проверка на статусот на планот само во фронтендот. Секој може директно да го повика вашиот API.
- Еден корисник, многу претплати по грешка. Проверете дали постои претплата пред да создадете нова Checkout Session, или испратете ги постојните клиенти во порталот.
- Укинување на пристапот при првото неуспешно обновување. Картичките не успеваат од досадни причини. Кратак грејс период со јасен банер ги задржува клиентите.
- Заборавање на webhook-от во живо. Тест и жива крајна точка имаат различни тајни клучеви за потпишување.
- Игнорирање на данокот и враќањата. Одлучете ја политиката за враќање и проверете ги даночните обврски со сметководител пред пуштање.
Претплати во Mythex
Апликациите што ги градите на Mythex користат ваша сметка и клучеви на Stripe; нема едно-кликно поврзување со Stripe за вашата апликација. Додајте ги вашите тест клучеви и ID-ови на цени како тајни на проектот, користете упатства слични на горенаведените и тестирајте со тест картичките на Stripe во Preview. Webhook-овите имаат потреба од јавната URL адреса на апликацијата, па објавете пред да ја регистрирате крајната точка во Stripe, а објавете повторно откако ќе преминете на живи клучеви за живата апликација да ги земе. Видете Примање плаќања со Stripe и Ракување со webhook-ови во вашиот backend. За поширокиот производ, како да направите SaaS MVP опфаќа што да градите околу наплатата.
Прашања
Кој е најједноставниот начин да додадам претплати со Stripe?
Создајте производ со повторувачка цена во Stripe Dashboard, испратете ги клиентите на Stripe Checkout во режим на претплата, обработувајте ги настаните за претплатата со webhook и поврзете го копчето Управувај со наплатата со хостираниот портал за клиенти на Stripe. Така не градите сами формулари за картички и екрани за промена на планот.
Кои webhook настани ми требаат за претплати?
Најмалку checkout.session.completed за да ја поврзете новата претплата со вашиот корисник, invoice.paid за потврда на секое успешно плаќање, invoice.payment_failed за предупредување за неуспешни обновувања, и customer.subscription.updated и customer.subscription.deleted за следење на промени на планот и откажувања.
Што се случува кога ќе не успее плаќањето за претплата?
Според документацијата на Stripe од септември 2026, претплатата обично преоѓа во past_due и Stripe може да го обиде плаќањето повторно според вашите поставки. По последниот обид, поставките во вашиот Dashboard одлучуваат дали таа се откажува, се означува како unpaid или останува past_due.
Можам ли да понудам бесплатен пробен период без да барам картичка?
Да. Stripe поддржува бесплатни пробни периоди, а нејзината документација опишува статус paused за пробни периоди што завршуваат без начин на плаќање, кога е така конфигурирано. Барањето картичка однапред обично значи помалку регистрации, но повеќе платени клиенти; тестирајте што одговара на вашиот производ.