როგორ დავამატოთ გამოწერები Stripe-ით: გეგმები, საცდელი პერიოდი, webhook-ები და ჩავარდნილი გადახდები
გამოწერების დასამატებლად Stripe-ით შექმენით პროდუქტი განმეორებადი ფასით Stripe Dashboard-ში, გაგზავნეთ მომხმარებლები Stripe Checkout-ზე გამოწერის რეჟიმში თქვენი სერვერიდან და მიეცით webhook-ს საშუალება, რომ თქვენმა აპმა იცოდეს, როდის წარმატებულია, ჩავარდა, შეიცვალა ან დასრულდა ყოველი გადახდა. სტატუსი მომხმარებელს მიაბით და წვდომა სწორედ ამ სტატუსით განსაზღვრეთ, წარმატების გვერდით კი არა. დაამატეთ ღილაკი Manage billing, რომელიც Stripe-ის ჰოსტირებულ customer portal-ს ხსნის — მომხმარებლებს ბარათის შეცვლა, გეგმის შეცვლა და გაუქმება ამით შეუძლიათ, თქვენ კი ამ ეკრანებს არ აშენებთ.
ეს გზამკვლევი როგორ დავამატოთ გადახდები აპში-ზეა აგებული, რომელიც ერთჯერად Checkout-ს, სატესტო რეჟიმსა და გაშვებას ფარავს. აქ ვფოკუსირდებით იმაზე, რაც განმეორებად გადახდებში განსხვავდება. Stripe-ის დეტალები აღებულია მისი დოკუმენტაციიდან 2026 წლის სექტემბრის მდგომარეობით.
რატომ არის გამოწერები უფრო რთული, ვიდრე ერთჯერადი გადახდები
ერთჯერადი გადახდა მომხმარებლის აპში ყოფნისას ხდება. გამოწერა კი მომხმარებლის წასვლის შემდეგაც გრძელდება: ყოველთვიური განახლებები, ვადაგასული ბარათები, შუა ციკლში გაუმჯობესებები, გაუქმებები, რომლებიც პერიოდის ბოლოს ძალაში შედის. თქვენი აპი ამის შესახებ მხოლოდ webhook-ებით იგებს. გამოწერების უმეტესი შეცდომა სწორედ იმაში მდგომარეობს, რომ პირველი გადახდა მთელ ისტორიად მიიჩნევა.
თქვენი ვარიანტები
| მიდგომა | რა უნდა ააშენოთ | საუკეთესოა |
|---|---|---|
| Payment Link განმეორებადი ფასით | მხოლოდ ბმული | მოთხოვნის გატესტვა; წვდომის ხელით მართვა |
| Checkout (გამოწერის რეჟიმი) + customer portal | სერვერული მარშრუტი, webhook, ანგარიშსწორების ღილაკი | SaaS აპების უმეტესობა და წევრობები |
| Subscriptions API საკუთარი გადახდის ფორმით | გაცილებით მეტი: გადახდის ინტერფეისი, ავთენტიფიკაცია, ხელახალი ცდები | აპები უჩვეულო ანგარიშსწორების პროცესით |
| Merchant-of-record პროვაიდერი | Checkout-ის მსგავსი | გამყიდველები, რომლებიც გადასახადს პროვაიდერს ანდობენ |
რიგითი აპისთვის Checkout და portal საუკეთესო კომპრომისია. თუ გადასახადების დამუშავება გაწუხებთ, შეადარეთ პროვაიდერები Stripe vs Paddle vs Lemon Squeezy გვერდზე.
ფასები Stripe-ში ჯერ დაგეგმეთ
Stripe-ში პროდუქტი არის ის, რასაც ყიდით („Pro გეგმა“), ხოლო ფასი არის ის, თუ როგორ ახდენთ ამის დატარიფებას („$20 თვეში“, „$200 წელიწადში“). ერთ პროდუქტს შეიძლება რამდენიმე ფასი ჰქონდეს. გადაწყვიტეთ:
- რა საფეხურებს სთავაზობთ და რას ხსნის თითოეული თქვენს აპში
- თვიური, წლიური თუ ორივე
- გაქვთ თუ არა საცდელი პერიოდი და სჭირდება თუ არა ბარათი წინასწარ
პროდუქტები და ფასები სატესტო რეჟიმში შექმენით და მათი ფასის ID-ები შეინახეთ; თქვენი აპი მათ იყენებს. თუ ფასი ჯერ არ გაქვთ გადაწყვეტილი, წაიკითხეთ როგორ დავადგინოთ SaaS პროდუქტის ფასი და freemium და უფასო საცდელი პერიოდი.
გამოწერის ციკლი, რომელიც უნდა დაამუშაოთ
Stripe-ის გამოწერების მიმოხილვა ჩამოთვლის სტატუსებს, რომლებიც გამოწერას შეიძლება ჰქონდეს. წვდომისთვის ყველაზე მნიშვნელოვანია:
| სტატუსი | რას ნიშნავს | მისცეთ წვდომა? |
|---|---|---|
trialing | საცდელ პერიოდშია | დიახ |
active | კარგ მდგომარეობაშია | დიახ |
incomplete | პირველი გადახდა ჯერ არ დასრულებულა; Stripe მომხმარებელს 23 საათს აძლევს | არა |
incomplete_expired | პირველი გადახდა არასდროს წარმატებულა | არა |
past_due | ბოლო გადახდა ჩაიშალა ან არ მომხდარა; შეიძლება მოჰყვეს ხელახალი ცდები | თქვენი არჩევანი; ბევრი აპი მოკლე საშუალო პერიოდს აძლევს |
unpaid | ხელახალი ცდები დასრულდა, ინვოისები ღიაა, მეტი ცდა აღარ არის | არა; Stripe-ის დოკუმენტაცია ამბობს, რომ წვდომა უნდა გააუქმოთ |
canceled | დასრულდა; ხელახლა არ იწყება | არა |
paused | საცდელი დასრულდა გადახდის მეთოდის გარეშე და დაპაუზდა | არა |
შეინახეთ სტატუსი თქვენს მომხმარებელზე ან ანგარიშზე და წვდომა მას დააფუძნეთ. ყოველ ჯერზე, როცა შესაბამისი webhook მოვა, განაახლეთ იგი.
webhook მოვლენები, რომლებიც უნდა დაამუშაოთ
| მოვლენა | რას აკეთებს თქვენი აპი |
|---|---|
checkout.session.completed | ახალი Stripe customer-ისა და გამოწერის ID-ები მიაბით თქვენს მომხმარებელს |
invoice.paid | გამოწერა მონიშნეთ აქტიურად და ჩაწერეთ ახალი პერიოდის დასასრული |
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-ის სესიას ქმნის და მომხმარებელს იქ გადაჰყავს.
- წარუმატებელი გადახდები: Stripe-ის ანგარიშსწორების პარამეტრებში აირჩიეთ ხელახალი ცდის ქცევა და ის, რაც ბოლო ცდის შემდეგ მოხდება. აჩვენეთ აპში ბანერი
past_dueსტატუსისას. - შეამოწმეთ მთელი ციკლი, შემდეგ გამოაქვეყნეთ და დაარეგისტრირეთ live 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. როცა სტატუსი past_due-ა, აჩვენე ბანერი „გადახდა ვერ შესრულდა, განაახლეთ ბარათი“. დაამატე ღილაკი Manage billing, რომელიც ამ მომხმარებლისთვის Stripe-ის customer portal-ს ხსნის.
განახლებები, ქვევით გადასვლები და პროპორციული გადასახადი
მომხმარებელი გეგმას რომ შეცვლის, Stripe-ის დოკუმენტაციის თანახმად, ცვლილება ხშირად ქმნის პროპორციულ გადაანგარიშებას (proration): ახალი ფასი მიმდინარე ანგარიშსწორების პერიოდის დარჩენილ ნაწილზე გამოიყენება. შეგიძლიათ პროპორციული გადაანგარიშება წინასწარ ნახოთ ან გამორთოთ. თუ გეგმებს ერთი და იგივე ინტერვალი აქვს, ანგარიშსწორების თარიღები უცვლელი რჩება; თვიურიდან წლიურზე გადასვლისას ანგარიშსწორების თარიღი შეცვლის დღეს გადაინაცვლებს. მომხმარებლებს portal-ში გეგმების შეცვლის საშუალების მიცემა თავად ლოგიკის წერას გიხსნით, მაგრამ portal-ის პარამეტრებში უნდა გადაწყვიტოთ, რომელი გადასვლებია დაშვებული.
ტესტირების ჩამონათვალი
გამოიყენეთ Stripe-ის სატესტო რეჟიმი და სატესტო ბარათები და გაიარეთ ყოველი მდგომარეობა:
- ახალი გამოწერა სწორ მომხმარებელს აძლევს სწორ გეგმას
- გადახდის შემდეგ ბრაუზერის ჩანართის დახურვა მაინც იძლევა წვდომას (ეს ადასტურებს, რომ webhook მუშაობს)
- უარყოფილი ბარათი რეგისტრაციისას არაფერს არ აძლევს
- ჩავარდნილი განახლება ანგარიშს past_due-ში აყენებს და აჩვენებს ბანერს
- portal-ში ბარათის განახლება აბრუნებს active სტატუსს
- გეგმის გაუმჯობესება და დაქვეითება სწორად ცვლის ფუნქციებს
- პერიოდის ბოლოს გაუქმება წვდომას ბოლომდე ინარჩუნებს, შემდეგ კი ხსნის
- საცდელი მომხმარებლები იღებენ წვდომას, იღებენ შეხსენებას და სწორად გადადიან ან კარგავენ წვდომას
- იგივე webhook მოვლენის ორჯერ გაგზავნა არაფერს არ ცვლის
Stripe-ის სატესტო საათები (test clocks) საშუალებას გაძლევთ დრო სიმულირებულად გაატაროთ, რათა განახლებები ერთი თვის ლოდინის გარეშე შეამოწმოთ. Stripe-ის ამჟამინდელი ტესტირების დოკუმენტაცია აღწერს, როგორ გამოიყენოთ ისინი.
გავრცელებული შეცდომები
- წვდომის მინიჭება წარმატების გვერდზე. მომხმარებელმა შეიძლება გადაიხადოს და ამ გვერდამდე ვერ მივიდეს. გამოიყენეთ webhook.
- მხოლოდ პირველი გადახდის დამუშავება. განახლებები, ჩავარდნები და გაუქმებები მოგვიანებით მოდის, როგორც მოვლენები.
- გეგმის სტატუსის შემოწმება მხოლოდ ფრონტენდში. ნებისმიერს შეუძლია API პირდაპირ გამოიძახოს.
- ერთი მომხმარებელი, შემთხვევით ბევრი გამოწერით. ახალი Checkout Session-ის შექმნამდე შეამოწმეთ არსებული გამოწერა, ან არსებული მომხმარებლები portal-ზე გადაიყვანეთ.
- წვდომის გაუქმება პირველი ჩავარდნილი განახლებისთანავე. ბარათები უბრალო მიზეზებით ჩავარდება. მოკლე საშუალო პერიოდი ნათელი ბანერით მომხმარებლებს ინარჩუნებს.
- live webhook-ის დავიწყება. სატესტო და live endpoint-ებს განსხვავებული ხელმოწერის საიდუმლო აქვთ.
- გადასახადებისა და დაბრუნებების იგნორირება. განსაზღვრეთ დაბრუნების პოლიტიკა და გაშვებამდე შეამოწმეთ გადასახადის ვალდებულებები ბუღალტერთან.
გამოწერები Mythex-ში
Mythex-ზე აგებული აპები იყენებს თქვენს Stripe ანგარიშს და გასაღებებს; თქვენი აპისთვის ერთი დაწკაპუნებით Stripe-თან დაკავშირება არ არსებობს. დაამატეთ თქვენი სატესტო გასაღებები და ფასის ID-ები როგორც პროექტის საიდუმლოებები, გამოიყენეთ ზემოთ მოცემულის მსგავსი პრომპტები და შეამოწმეთ Stripe-ის სატესტო ბარათებით Preview-ში. webhook-ებს აპის საჯარო URL სჭირდება, ამიტომ გამოაქვეყნეთ endpoint-ის Stripe-ში რეგისტრაციამდე და კვლავ გამოაქვეყნეთ live გასაღებებზე გადართვის შემდეგ, რომ live აპმა ახალი გასაღებები აიღოს. იხილეთ გადახდების მიღება 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-ის პარამეტრები განსაზღვრავს, გაუქმდება თუ არა გამოწერა, მონიშნება თუ არა unpaid-ად, ან დარჩება past_due-ზე.
შემიძლია უფასო საცდელი პერიოდი შევთავაზო ბარათის მოთხოვნის გარეშე?
დიახ. Stripe უჭერს მხარს უფასო საცდელ პერიოდებს, და მისი დოკუმენტაცია აღწერს paused სტატუსს საცდელებისთვის, რომლებიც გადახდის მეთოდის გარეშე სრულდება, თუ ეს ასეა დაყენებული. ბარათის წინასწარ მოთხოვნა, როგორც წესი, ნაკლებ რეგისტრაციას, მაგრამ მეტ გადამხდელ მომხმარებელს ნიშნავს; გამოსცადეთ, რა შეეფერება თქვენს პროდუქტს.