Ինչպես ավելացնել բաժանորդագրություններ Stripe-ով. պլաններ, փորձաշրջաններ, webhook-ներ և ձախողված վճարումներ
Stripe-ով բաժանորդագրություններ ավելացնելու համար ստեղծեք ապրանք կրկնվող գնով Stripe Dashboard-ում, ուղարկեք հաճախորդներին Stripe Checkout-ի բաժանորդագրության ռեժիմում ձեր սերվերից, և թող webhook-ը ասի ձեր հավելվածին, երբ յուրաքանչյուր վճարում հաջողվում է, ձախողվում է, փոխվում կամ ավարտվում։ Պահեք բաժանորդագրության կարգավիճակը օգտատիրոջ հետ և հիմնվեք դրա վրա մուտքը տրամադրելիս, ոչ թե հաջողության էջի։ Ավելացրեք Manage billing կոճակ, որ բացում է Stripe-ի հոստված customer portal-ը, որտեղ մարդիկ կարող են փոխել քարտեր, անցնել այլ պլաններ և չեղարկել՝ առանց ձեզ այդ էկրանները կառուցելու։
Այս ուղեցույցը հիմնված է ինչպես ավելացնել վճարումներ ձեր հավելվածին-ի վրա, որը ծածկում է միանգամյա Checkout-ը, թեստային ռեժիմը և արտադրական գործարկումը։ Այստեղ կենտրոնանում ենք այն բանի վրա, ինչով կրկնվող վճարումը տարբերվում է։ Stripe-ի մանրամասները վերցված են Stripe-ի փաստաթղթերից՝ 2026 թվականի սեպտեմբերի դրությամբ։
Ինչու բաժանորդագրությունները ավելի բարդ են, քան միանգամյա վճարումները
Միանգամյա վճարումը տեղի է ունենում, մինչ հաճախորդը ձեր հավելվածում է։ Բաժանորդագրությունը շարունակվում է, երբ նա հեռանում է․ ամենամսյա վերականգնումներ, ժամկետանց քարտեր, ընթացքում արված թարմացումներ, չեղարկումներ, որ ուժի մեջ են մտնում ժամանակաշրջանի վերջում։ Ձեր հավելվածը սրանց մասին իմանում է միայն webhook-ների միջոցով։ Բաժանորդագրության գրեթե բոլոր սխալները գալիս են նրանից, որ առաջին վճարումը համարվում է ամբողջ պատմությունը։
Ձեր տարբերակները
| Մոտեցում | Ինչ եք կառուցում | Ամենալավը՝ |
|---|---|---|
| Payment Link կրկնվող գնով | Միայն հղում | Պահանջարկի փորձարկում․ մուտքը ձեռքով կառավարում |
| Checkout (բաժանորդագրության ռեժիմ) + customer portal | Սերվերային երթուղի, webhook, վճարման կոճակ | Մեծամասնություն SaaS հավելվածների և անդամակցությունների |
| Subscriptions API սեփական վճարման ձևով | Շատ ավելին՝ վճարման UI, նույնականացում, կրկնություններ | Հավելվածներ անսովոր վճարային հոսքերով |
| Merchant-of-record մատակարար | Նման է Checkout-ին | Վաճառողներ, որոնք ցանկանում են, որ մատակարարը վարի վաճառքի հարկը |
Ավելի շատ հավելվածների համար Checkout-ը գումարած portal-ը ճիշտ փոխզիջումն է։ Համեմատեք մատակարարները Stripe vs Paddle vs Lemon Squeezy ուղեցույցում, եթե հարկերի կառավարումը մտահոգում է ձեզ։
Նախ պլանավորեք գնագոյացումը Stripe-ում
Stripe-ում ապրանքը այն է, ինչ վաճառում եք («Pro plan»), իսկ գինը այն է, թե ինչպես եք գանձում («$20 ամսական», «$200 տարեկան»)։ Մեկ ապրանք կարող է ունենալ մի քանի գին։ Որոշեք․
- Ո՞ր շերտերը եք առաջարկում և ինչ է ապակողպում յուրաքանչյուրը ձեր հավելվածում
- Ամսական, տարեկան, թե երկուսը
- Առաջարկում եք արդյոք փորձաշրջան, և պետք է արդյոք քարտը նախապես հավաքվի
Ստեղծեք ապրանքները և գները թեստային ռեժիմում և պահեք դրանց գնի ID-ները․ ձեր հավելվածը դրանց է վերաբերում։ Եթե դեռ չեք որոշել գինը, կարդացեք ինչպես գնագոյացնել SaaS ապրանքը և freemium-ը vs անվճար փորձաշրջանը։
Բաժանորդագրության կյանքի ցիկլը, որ պետք է մշակել
Stripe-ի բաժանորդագրությունների ընդհանուր ակնարկը թվարկում է կարգավիճակները, որ բաժանորդագրությունը կարող է ունենալ։ Մուտքի համար ամենակարևորները հետևյալն են․
| Կարգավիճակ | Ինչ է նշանակում | Տալ մուտք՞ |
|---|---|---|
trialing | Փորձաշրջանում է | Այո |
active | Լավ վիճակում է | Այո |
incomplete | Առաջին վճարումը դեռ չի ավարտվել․ Stripe-ը տալիս է հաճախորդին 23 ժամ | Ոչ |
incomplete_expired | Առաջին վճարումը երբեք չի հաջողվել | Ոչ |
past_due | Վերջին վճարումը ձախողվել է կամ չի փորձվել․ կարող են հաջորդել նոր փորձեր | Ձեր ընտրությունը․ շատ հավելվածներ թույլ են տալիս կարճ շնորհի ժամանակաշրջան |
unpaid | Վերականգնման փորձերը ավարտվել են, հաշիվները բաց են մնում, այլ փորձեր չկան | Ոչ․ Stripe-ի փաստաթղթերը ասում են՝ չեղարկեք մուտքը |
canceled | Ավարտվել է և չի կարող վերսկսվել | Ոչ |
paused | Փորձաշրջանն ավարտվել է առանց վճարման եղանակի և սահմանվել է դադարեցնել | Ոչ |
Պահեք կարգավիճակը ձեր օգտատիրոջ կամ հաշվի գրառման մեջ և հիմնեք մուտքը դրա վրա։ Թարմացրեք այն, երբ համապատասխան webhook-ը գա։
Webhook իրադարձությունները, որ պետք է մշակել
| Իրադարձություն | Ինչ է անում ձեր հավելվածը |
|---|---|
checkout.session.completed | Կապում է նոր Stripe customer և subscription ID-ները ձեր օգտատիրոջ հետ |
invoice.paid | Նշում է բաժանորդագրությունը որպես active և գրանցում նոր ժամանակաշրջանի ավարտը |
invoice.payment_failed | Տեղեկացնում է օգտատիրոջը, որ քարտը ձախողվեց, և կապում է portal-ին |
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 endpoint․ ստուգեք ստորագրությունները և մշակեք վերևի իրադարձությունները՝ թարմացնելով մեկ բաժանորդագրության գրառում յուրաքանչյուր օգտատիրոջ համար։
- Պաշտպանեք գործառույթները պահված կարգավիճակի և պլանի հիման վրա, ստուգված սերվերում յուրաքանչյուր պաշտպանված գործողության համար, ոչ միայն թաքնված կոճակներով։
- Customer portal․ կարգավորեք այն Stripe Dashboard-ում (որ պլաններին կարող են անցնել մարդիկ, և արդյոք կարող են չեղարկել), ապա ավելացրեք Manage billing կոճակ, որ սերվերում ստեղծում է portal session և վերահղում դեպի այն։
- Ձախողված վճարումներ․ Stripe-ի billing կարգավորումներում ընտրեք վերականգնման վարքագիծը և այն, թե ինչ է լինում վերջին փորձից հետո։ Ցույց տվեք հավելվածի ներսի banner, երբ
past_dueէ։ - Փորձարկեք ամբողջ կյանքի ցիկլը, ապա հրապարակեք և գրանցեք արտադրական webhook-ը։
Հրամաններ՝ AI կառուցողին
Ավելացրու բաժանորդագրական վճարումներ Stripe-ով։ Պլաններ՝ Starter (գնի ID-ն STRIPE_PRICE_STARTER-ում) և Pro (STRIPE_PRICE_PRO)։ Գնագոյացման էջը ստեղծում է Checkout Session բաժանորդագրության ռեժիմում սերվերում՝ օգտագործելով STRIPE_SECRET_KEY-ը, մուտք գործած օգտատիրոջ ID-ով։ Պահիր Stripe customer ID-ը, subscription 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 է։ Ցույց տուր «վճարումը ձախողվեց, թարմացրու քարտը» banner, երբ կարգավիճակը past_due է։ Ավելացրու Manage billing կոճակ, որ բացում է Stripe customer portal-ը այդ օգտատիրոջ համար։
Թարմացումներ, իջեցումներ և համամասնական վճար
Երբ հաճախորդը փոխում է պլանը, Stripe-ի փաստաթղթերը ասում են, որ փոփոխությունը հաճախ ստեղծում է proration՝ նոր գինը կիրառվում է ընթացիկ վճարման ժամանակաշրջանի մնացած մասի համար։ Կարող եք նախադիտել proration-ները կամ անջատել դրանք։ Եթե պլանները նույն intervalն ունեն, վճարման ամսաթվերը մնում են նույնը․ ամսականից տարեկանի անցնելիս վճարման ամսաթիվը տեղափոխվում է փոփոխության օրը։ Հաճախորդներին թույլ տալը portal-ում փոխել պլանը խնայում է այդ տրամաբանությունը գրելուց, բայց portal-ի կարգավորումներում որոշեք, թե որ փոխանցումներն են թույլատրված։
Փորձարկման ստուգացանկ
Օգտագործեք Stripe-ի թեստային ռեժիմը և թեստային քարտեր, և անցեք յուրաքանչյուր վիճակով․
- Նոր բաժանորդագրությունը տալիս է ճիշտ պլանը ճիշտ օգտատիրոջը
- Վճարումից անմիջապես հետո փակելով ներդիրը՝ մուտքը դեռ տրվում է (ապացուցում է, որ webhook-ն աշխատում է)
- Մերժված քարտը գրանցման ժամանակ ոչինչ չի տալիս
- Ձախողված վերականգնումը դնում է հաշիվը past_due և ցույց է տալիս banner-ը
- Քարտի թարմացումը portal-ում վերականգնում է active կարգավիճակը
- Թարմացումը և իջեցումը ճիշտ են փոխում գործառույթները
- Չեղարկումը ժամանակաշրջանի վերջում պահում է մուտքը մինչև վերջնաժամկետը, ապա հեռացնում է այն
- Փորձաշրջանի օգտատերերը ստանում են մուտք, ստանում են հիշեցումը և ճիշտ փոխարկվում կամ կորցնում մուտքը
- Նույն webhook իրադարձության երկու ուղարկումը ոչինչ չի փոխում
Stripe-ի թեստային ժամացույցները թույլ են տալիս ձևացնել ժամանակի անցումը, որ փորձարկեք վերականգնումները առանց մեկ ամիս սպասելու։ Ստուգեք Stripe-ի ընթացիկ թեստավորման փաստաթղթերը, թե ինչպես օգտագործել դրանք։
Հաճախակի սխալներ
- Մուտք տալ հաջողության էջում։ Հաճախորդը կարող է վճարել և երբեք չհասնել դրան։ Օգտագործեք webhook-ը։
- Մշակել միայն առաջին վճարումը։ Վերականգնումները, ձախողումները և չեղարկումները գալիս են հետո, որպես իրադարձություններ։
- Ստուգել պլանի կարգավիճակը միայն ֆրոնտենդում։ Ցանկացած մեկը կարող է ուղղակիորեն կանչել ձեր API-ն։
- Մեկ օգտատեր, պատահաբար մի քանի բաժանորդագրություն։ Ստուգեք, արդյոք գոյություն ունի բաժանորդագրություն, մինչև նոր Checkout Session ստեղծելը, կամ ուղարկեք գոյություն ունեցող հաճախորդներին portal։
- Մուտքի չեղարկում առաջին ձախողված վերականգնման դեպքում։ Քարտերը ձախողվում են հասարակ պատճառներով։ Կարճ շնորհի ժամանակաշրջանը և հստակ banner-ը պահում են հաճախորդներին։
- Մոռանալ արտադրական webhook-ը։ Թեստային և արտադրական endpoint-ներն ունեն տարբեր ստորագրության գաղտնիքներ։
- Անտեսել հարկերն ու վերադարձները։ Որոշեք ձեր վերադարձի քաղաքականությունը և ստուգեք հարկային պարտավորությունները հաշվապահի հետ մինչև գործարկումը։
Բաժանորդագրություններ Mythex-ում
Mythex-ով կառուցված հավելվածները օգտագործում են ձեր սեփական Stripe հաշիվը և բանալիները․ ձեր հավելվածի համար Stripe-ի մեկ կտտոցով կապ չկա։ Ավելացրեք ձեր թեստային բանալիները և գնի ID-ները որպես նախագծի գաղտնիքներ, օգտագործեք վերևի նման հրամաններ և փորձարկեք Stripe-ի թեստային քարտերով Preview-ում։ Webhook-ներին անհրաժեշտ է ձեր հավելվածի հանրային URL-ը, ուստի հրապարակեք մինչև endpoint-ը Stripe-ում գրանցելը, և նորից հրապարակեք, երբ անցնեք իրական բանալիներին, որ արտադրական հավելվածը դրանք ընդունի։ Տես Ընդունել վճարումներ Stripe-ով և Մշակել webhook-ներ ձեր backend-ում։ Ավելի լայն արտադրանքի համար ինչպես կառուցել SaaS MVP-ը ծածկում է, թե ինչ կառուցել բիլինգի շուրջը։
Հարցեր
Ո՞րն է բաժանորդագրություններ ավելացնելու ամենապարզ եղանակը Stripe-ով։
Ստեղծեք ապրանք կրկնվող գնով Stripe Dashboard-ում, ուղարկեք հաճախորդներին Stripe Checkout-ի բաժանորդագրության ռեժիմում, մշակեք բաժանորդագրության իրադարձությունները webhook-ով և կապեք Manage billing կոճակը Stripe-ի հոստված customer portal-ին։ Այսպես չեք կառուցում քարտի ձևեր և պլանի փոփոխության էկրաններ։
Բաժանորդագրությունների համար որ Stripe webhook իրադարձություններն են պետք։
Նվազագույնը՝ checkout.session.completed՝ նոր բաժանորդագրությունը ձեր օգտատիրոջ հետ կապելու համար, invoice.paid՝ յուրաքանչյուր հաջող վճարումը հաստատելու համար, invoice.payment_failed՝ ձախողված վերականգնումների մասին զգուշացնելու համար, և customer.subscription.updated ու customer.subscription.deleted՝ պլանի փոփոխություններն ու չեղարկումները հետևելու համար։
Ի՞նչ է լինում, երբ բաժանորդագրության վճարումը ձախողվում է։
Ըստ Stripe-ի փաստաթղթերի՝ 2026 թվականի սեպտեմբերի դրությամբ բաժանորդագրությունը սովորաբար դառնում է past_due, և Stripe-ը կարող է նորից փորձել վճարումը՝ ձեր կարգավորումների հիման վրա։ Վերջին փորձից հետո Dashboard-ի կարգավորումները որոշում են, թե այն չեղարկվում է, նշվում է որպես չվճարված, թե մնում է past_due։
Կարո՞ղ եմ անվճար փորձաշրջան առաջարկել առանց քարտ հարցնելու։
Այո։ Stripe-ը աջակցում է անվճար փորձաշրջաններին, և նրա փաստաթղթերը նկարագրում են paused կարգավիճակ այն փորձաշրջանների համար, որոնք ավարտվում են առանց վճարման եղանակի, եթե այդպես է կարգավորված։ Քարտը նախապես հավաքելը սովորաբար նշանակում է ավելի քիչ գրանցումներ, բայց ավելի շատ վճարող հաճախորդներ․ փորձարկեք, թե ինչը է համապատասխանում ձեր արտադրանքին։