راهنماها

چطور اشتراک با Stripe اضافه کنیم: طرح‌ها، دوره آزمایشی، وب‌هوک و پرداخت ناموفق

برای افزودن اشتراک با Stripe، یک محصول با قیمت تکرارشونده در داشبورد Stripe بسازید، مشتریان را از سرور به Stripe Checkout در حالت اشتراک بفرستید، و بگذارید یک وب‌هوک به اپ شما بگوید هر پرداخت کی موفق، ناموفق، تغییریافته یا تمام شده است. وضعیت اشتراک را روی کاربر ذخیره کنید و دسترسی را بر اساس آن بدهید، نه بر اساس صفحه موفقیت. یک دکمه مدیریت صورتحساب اضافه کنید که پورتال میزبانی‌شده مشتری Stripe را باز کند تا مردم بتوانند کارت عوض کنند، طرح را تغییر دهند و لغو کنند، بدون اینکه شما آن صفحه‌ها را بسازید.

این راهنما بر پایه نحوه افزودن پرداخت به اپ است که Checkout یک‌باره، حالت تست و انتشار واقعی را پوشش می‌دهد. اینجا روی آنچه صورتحساب تکرارشونده را متفاوت می‌کند تمرکز می‌کنیم. جزئیات Stripe از مستندات Stripe و از سپتامبر ۲۰۲۶ است.

چرا اشتراک‌ها سخت‌تر از پرداخت‌های یک‌باره‌اند

یک پرداخت یک‌باره وقتی مشتری داخل اپ شماست اتفاق می‌افتد. یک اشتراک بعد از رفتن او هم ادامه دارد: تمدید هر ماه، کارت‌هایی که منقضی می‌شوند، ارتقا در میانه دوره، لغوهایی که در پایان دوره اعمال می‌شوند. اپ شما فقط از طریق وب‌هوک‌ها از اینها باخبر می‌شود. بیشتر باگ‌های اشتراک از این می‌آیند که پرداخت اول را کل داستان فرض کنیم.

گزینه‌های شما

روشآنچه می‌سازیدمناسب برای
Payment Link با قیمت تکرارشوندهفقط یک پیوندسنجش تقاضا؛ مدیریت دسترسی به‌صورت دستی
Checkout (حالت اشتراک) + پورتال مشترییک route سروری، یک وب‌هوک، یک دکمه صورتحساببیشتر اپ‌های SaaS و عضویت‌ها
Subscriptions API با فرم پرداخت خودتانبسیار بیشتر: رابط پرداخت، احراز، تلاش مجدداپ‌هایی با جریان‌های صورتحساب غیرمعمول
ارائه‌دهنده تاجر ثبت‌شدهشبیه Checkoutفروشندگانی که می‌خواهند ارائه‌دهنده مالیات فروش را مدیریت کند

برای بیشتر اپ‌ها، Checkout به‌همراه پورتال تعادل مناسبی است. اگر مالیات برایتان نگران‌کننده است، Stripe در برابر Paddle در برابر Lemon Squeezy را مقایسه کنید.

اول قیمت‌گذاری را در Stripe تعیین کنید

در Stripe، یک محصول چیزی است که می‌فروشید («طرح Pro») و یک قیمت روش شارژ آن است («۲۰ دلار در ماه»، «۲۰۰ دلار در سال»). یک محصول می‌تواند چند قیمت داشته باشد. تصمیم بگیرید:

  • چه سطوحی ارائه می‌دهید و هر کدام در اپ چه چیزی را باز می‌کند
  • ماهانه، سالانه، یا هر دو
  • آیا دوره آزمایشی دارید، و آیا برای آن کارت از ابتدا لازم است

محصولات و قیمت‌ها را در حالت تست بسازید و شناسه قیمت‌ها را نگه دارید؛ اپ شما به آن‌ها ارجاع می‌دهد. اگر قیمت‌گذاری هنوز تعیین نشده، نحوه قیمت‌گذاری محصول SaaS و فری‌میوم در برابر دوره آزمایشی رایگان را بخوانید.

چرخه عمر اشتراک که باید مدیریت کنید

اشتراک‌های Stripe وضعیت‌هایی دارند که در نمای کلی اشتراک‌های Stripe آمده است. مهم‌ترین‌ها برای دسترسی:

وضعیتمعنیدسترسی بدهم؟
trialingدر دوره آزمایشیبله
activeدر وضعیت خوببله
incompleteپرداخت اول هنوز کامل نشده؛ Stripe ۲۳ ساعت به مشتری می‌دهدخیر
incomplete_expiredپرداخت اول هرگز موفق نشدخیر
past_dueآخرین پرداخت ناموفق بود یا امتحان نشد؛ ممکن است تلاش‌های مجدد بیایندانتخاب شما؛ بسیاری از اپ‌ها یک مهلت کوتاه می‌دهند
unpaidتلاش‌های مجدد تمام شد، فاکتورها باز می‌مانند، دیگر تلاشی نیستخیر؛ مستندات Stripe می‌گوید دسترسی باید لغو شود
canceledتمام شد؛ قابل شروع مجدد نیستخیر
pausedیک دوره آزمایشی بدون روش پرداخت تمام شد و طوری تنظیم شده بود که متوقف شودخیر

وضعیت را روی رکورد کاربر یا حساب ذخیره کنید و دسترسی را بر اساس آن قرار دهید. هر بار که وب‌هوک مرتبطی می‌رسد آن را به‌روز کنید.

رویدادهای وب‌هوک که باید مدیریت شوند

رویدادکار اپ شما
checkout.session.completedشناسه‌های مشتری و اشتراک جدید Stripe را به کاربرتان وصل کنید
invoice.paidاشتراک را فعال علامت بزنید و پایان دوره جدید را ثبت کنید
invoice.payment_failedبه کاربر بگویید کارتش ناموفق بود و پیوند پورتال بدهید
invoice.payment_action_requiredاز کاربر بخواهید احراز هویت کارت را کامل کند
customer.subscription.updatedطرح، وضعیت و هر لغو زمان‌بندی‌شده را به‌روز کنید
customer.subscription.deletedدسترسی پولی را حذف کنید
customer.subscription.trial_will_endقبل از پایان دوره آزمایشی یادآوری بدهید؛ Stripe سه روز قبل آن را می‌فرستد

قوانین هندلر از مستندات وب‌هوک Stripe همچنان برقرارند: امضا را با بدنه خام تأیید کنید، سریع یک پاسخ 2xx برگردانید، رویدادهای تکراری و خارج از ترتیب را مدیریت کنید، و انتظار تلاش مجدد داشته باشید. راهنمای وب‌هوک چیست ایده را توضیح می‌دهد و راهنمای پرداخت قوانین را با جزئیات فهرست کرده است.

مرحله به مرحله

  1. محصولات و قیمت‌ها را در حالت تست Stripe بسازید.
  2. رازها را اضافه کنید: کلید مخفی، شناسه‌های قیمت، و بعداً سِکرِت امضای وب‌هوک. هرگز آن‌ها را در کد فرانت‌اند نگذارید.
  3. صفحه قیمت‌ها: دکمه هر طرح یک درخواست به سرور می‌فرستد، که یک Checkout Session در حالت اشتراک برای کاربر واردشده می‌سازد. شناسه کاربر خود را ضمیمه کنید تا وب‌هوک پرداخت را به حساب درست تطبیق دهد.
  4. endpoint وب‌هوک: امضاها را تأیید کنید و رویدادهای بالا را مدیریت کنید، و یک رکورد اشتراک برای هر کاربر به‌روز کنید.
  5. دسترسی به امکانات را بر اساس وضعیت و طرح ذخیره‌شده بدهید، و آن را برای هر کار محافظت‌شده روی سرور بررسی کنید، نه فقط دکمه‌های پنهان.
  6. پورتال مشتری: آن را در داشبورد Stripe پیکربندی کنید (مشتری به کدام طرح‌ها می‌تواند برود، آیا می‌تواند لغو کند)، سپس یک دکمه مدیریت صورتحساب اضافه کنید که یک session پورتال روی سرور می‌سازد و هدایت می‌کند.
  7. پرداخت‌های ناموفق: در تنظیمات صورتحساب Stripe، رفتار تلاش مجدد و اتفاق بعد از آخرین تلاش را انتخاب کنید. وقتی past_due است یک بنر داخل اپ نشان دهید.
  8. کل چرخه عمر را تست کنید، سپس منتشر کنید و وب‌هوک واقعی را ثبت کنید.

درخواست‌هایی برای ساز اپ هوش مصنوعی

صورتحساب اشتراک با Stripe اضافه کن. طرح‌ها: Starter (شناسه قیمت در STRIPE_PRICE_STARTER) و Pro (STRIPE_PRICE_PRO). صفحه قیمت‌ها یک Checkout Session در حالت اشتراک را روی سرور با STRIPE_SECRET_KEY می‌سازد و شناسه کاربر واردشده را ضمیمه می‌کند. شناسه مشتری Stripe، شناسه اشتراک، طرح و وضعیت را روی کاربر ذخیره کن. هرگز کلید مخفی را به مرورگر نشان نده.

یک 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 را مدیریت کن. شناسه رویدادهای پردازش‌شده را ثبت کن تا تکرارها نادیده گرفته شوند. وضعیت کاربر را از شیء اشتراک به‌روز کن، نه از ترتیب رسیدن رویدادها.

ویژگی‌های Pro را روی سرور گیت کن: فقط وقتی وضعیت active یا trialing و طرح Pro است اجازه بده. وقتی وضعیت past_due است، یک بنر «پرداخت ناموفق بود، کارت را به‌روز کنید» نشان بده. یک دکمه مدیریت صورتحساب اضافه کن که پورتال مشتری Stripe را برای این کاربر باز کند.

ارتقا، کاهش طرح و تناسب

وقتی مشتری طرح را عوض می‌کند، مستندات Stripe می‌گوید این تغییر اغلب یک proration (تناسب) ایجاد می‌کند: قیمت جدید برای بقیه دوره صورتحساب جاری اعمال می‌شود. می‌توانید proration ها را پیش‌نمایش کنید یا خاموش کنید. اگر طرح‌ها بازه یکسانی دارند، تاریخ‌های صورتحساب ثابت می‌مانند؛ از ماهانه به سالانه، تاریخ صورتحساب به روز تغییر می‌رسد. اجازه دادن به مشتریان برای تغییر طرح در پورتال، نوشتن این منطق را از شما می‌گیرد، اما باید در تنظیمات پورتال تعیین کنید کدام تغییرها مجازند.

چک‌لیست تست

از حالت تست Stripe و کارت‌های آزمایشی استفاده کنید و هر وضعیت را طی کنید:

  • اشتراک جدید طرح درست را به کاربر درست می‌دهد
  • بستن تب بلافاصله بعد از پرداخت هم دسترسی می‌دهد (این ثابت می‌کند وب‌هوک کار می‌کند)
  • یک کارت ردشده هنگام ثبت‌نام هیچ دسترسی نمی‌دهد
  • تمدیدی که ناموفق است، حساب را به past_due می‌برد و بنر را نشان می‌دهد
  • به‌روزرسانی کارت در پورتال، وضعیت active را برمی‌گرداند
  • ارتقا و کاهش طرح، امکانات را درست تغییر می‌دهند
  • لغو در پایان دوره، دسترسی را تا تاریخ پایان نگه می‌دارد و بعد حذف می‌کند
  • کاربران دوره آزمایشی دسترسی دارند، یادآوری می‌گیرند، و درست تبدیل می‌شوند یا دسترسی را از دست می‌دهند
  • فرستادن دوباره همان رویداد وب‌هوک هیچ تغییری ایجاد نمی‌کند

تست‌های ساعت Stripe (test clocks) اجازه می‌دهند زمان گذشتن را شبیه‌سازی کنید، تا تمدیدها را بدون انتظار یک ماه تست کنید. برای نحوه استفاده از آن‌ها، مستندات تست فعلی Stripe را بررسی کنید.

اشتباهات رایج

  • دادن دسترسی در صفحه موفقیت. مشتریان ممکن است پرداخت کنند و هرگز به آن صفحه نرسند. از وب‌هوک استفاده کنید.
  • فقط مدیریت پرداخت اول. تمدیدها، ناموفق‌ها و لغوها به‌صورت رویداد بعداً می‌رسند.
  • بررسی وضعیت طرح فقط در فرانت‌اند. هر کسی می‌تواند مستقیم API شما را صدا بزند.
  • یک کاربر، چند اشتراک به‌طور تصادفی. قبل از ساختن یک Checkout Session جدید، وجود اشتراک موجود را بررسی کنید، یا مشتریان موجود را به پورتال بفرستید.
  • لغو دسترسی با اولین تمدید ناموفق. کارت‌ها به دلایل پیش‌پاافتاده رد می‌شوند. یک مهلت کوتاه با بنر واضح مشتری را نگه می‌دارد.
  • فراموش کردن وب‌هوک واقعی. endpoint تست و واقعی سِکرِت امضای متفاوت دارند.
  • نادیده گرفتن مالیات و بازپرداخت. قبل از انتشار، سیاست بازپرداخت را تعیین کنید و تعهدات مالیاتی را با حسابدار بررسی کنید.

اشتراک در Mythex

اپ‌هایی که روی Mythex می‌سازید از حساب و کلیدهای خودتان در Stripe استفاده می‌کنند؛ برای اپ شما اتصال یک‌کلیکی به Stripe وجود ندارد. کلیدهای تست و شناسه قیمت‌هایتان را به‌عنوان رازهای پروژه اضافه کنید، از درخواست‌های بالا استفاده کنید و با کارت‌های تست Stripe در Preview آزمایش کنید. وب‌هوک‌ها به آدرس عمومی اپ شما نیاز دارند، پس قبل از ثبت endpoint در Stripe منتشر کنید، و بعد از تغییر به کلیدهای واقعی دوباره منتشر کنید تا اپ واقعی آن‌ها را بگیرد. به پذیرش پرداخت با Stripe و مدیریت وب‌هوک‌ها در بک‌اند نگاه کنید. برای کل محصول، نحوه ساخت MVP سَس نشان می‌دهد چه چیزی باید دور صورتحساب ساخته شود.

پرسش‌ها

ساده‌ترین راه افزودن اشتراک با Stripe چیست؟

در داشبورد Stripe یک محصول با قیمت تکرارشونده بسازید، مشتریان را با Stripe Checkout در حالت اشتراک از سرور به آنجا بفرستید، رویدادهای اشتراک را با وب‌هوک مدیریت کنید و یک دکمه «مدیریت صورتحساب» به پورتال میزبانی‌شده مشتری Stripe وصل کنید. این کار نیاز به ساختن فرم کارت و صفحه‌های تغییر طرح را از بین می‌برد.

برای اشتراک‌ها به کدام رویدادهای وب‌هوک Stripe نیاز دارم؟

حداقل checkout.session.completed برای وصل کردن اشتراک جدید به کاربرتان، invoice.paid برای تأیید هر پرداخت موفق، invoice.payment_failed برای هشدار درباره تمدیدهای ناموفق، و customer.subscription.updated و customer.subscription.deleted برای پیگیری تغییر طرح و لغوها.

وقتی پرداخت اشتراک ناموفق می‌شود چه اتفاقی می‌افتد؟

طبق مستندات Stripe از سپتامبر ۲۰۲۶، معمولاً وضعیت اشتراک به past_due می‌رود و Stripe بر اساس تنظیماتتان ممکن است پرداخت را دوباره امتحان کند. بعد از آخرین تلاش، تنظیمات داشبورد شما تعیین می‌کند آیا لغو شود، به‌عنوان پرداخت‌نشده علامت بخورد، یا در وضعیت past_due بماند.

آیا می‌توانم دوره آزمایشی رایگان بدهم بدون اینکه کارت بخواهم؟

بله. Stripe دوره‌های آزمایشی رایگان را پشتیبانی می‌کند و در مستندات آن وضعیت paused برای دوره‌هایی که بدون روش پرداخت تمام می‌شوند، وقتی به این شکل تنظیم شده باشد، توضیح داده شده است. گرفتن کارت از ابتدا معمولاً ثبت‌نام کمتر، اما مشتری پولی بیشتر می‌آورد؛ آنچه با محصولتان جور است را آزمایش کنید.

Mythex · Pricing · با هوش مصنوعی هر چیزی بسازید · قالب‌های وب‌سایت و اپلیکیشن · مقایسه‌ی Mythex · واژه‌نامه‌ی ساخت اپلیکیشن با هوش مصنوعی · ابزارهای رایگان ساخت اپلیکیشن با هوش مصنوعی · 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 简体中文 繁體中文(香港) 繁體中文(台灣)