Водичи

Како да додадете претплати со 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 го објаснува основниот поим, а водичот за плаќања ги наведува правилата подетално.

Чекор по чекор

  1. Создајте производи и цени во тест режим на Stripe.
  2. Додајте тајни: тајниот клуч, ID-овите на цените и подоцна тајниот клуч за потпишување на webhook. Никогаш не ги ставајте во кодот на фронтендот.
  3. Страница со цени: копчето на секој план повикува ваш сервер, кој создава Checkout Session во режим на претплата за најавениот корисник. Пренесете го ID-то на корисникот за webhook-от да го поврзе плаќањето со сметката.
  4. Крајна точка за webhook: проверете ги потписите и обработете ги настаните погоре, ажурирајќи по една запис на претплата по корисник.
  5. Ограничете ги функциите според зачуваниот статус и план, проверени на серверот за секое заштитено дејство, не само со скриени копчиња.
  6. Портал за клиенти: конфигурирајте го во Stripe Dashboard (на кои планови можат да преминат луѓето, дали можат да откажат), па додајте копче Управувај со наплатата што создава сесија за порталот на серверот и пренасочува таму.
  7. Неуспешни плаќања: во поставките за наплата на Stripe, изберете однесување за повторни обиди и што се случува по последниот обид. Прикажете банер во апликацијата додека е past_due.
  8. Тестирајте го целиот животен циклус, па објавете и регистрирајте го живиот 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 за пробни периоди што завршуваат без начин на плаќање, кога е така конфигурирано. Барањето картичка однапред обично значи помалку регистрации, но повеќе платени клиенти; тестирајте што одговара на вашиот производ.

Mythex · Pricing · Градете што било со AI · Шаблони за веб-страници и апликации · Mythex во споредба · Речник за градење апликации со AI · Бесплатни алатки за градење апликации со AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)