راهنماها

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

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

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

چرا اصلاً از یک ارائه‌دهنده پرداخت استفاده کنیم

هرگز شماره کارت را در فرم‌های خودتان جمع نکنید. کار با داده کارت شما را در دامنه PCI DSS (استاندارد امنیتی صنعت کارت) قرار می‌دهد و مسئولیت بزرگی است. یک ارائه‌دهنده پرداخت مثل Stripe فرم پرداخت را میزبانی می‌کند، کارت را ذخیره می‌کند، احراز هویت بانکی را انجام می‌دهد و نتیجه را به اپ شما می‌گوید. اپ شما فقط «مشتری X برای Y پرداخت کرد» را می‌بیند.

این راهنما از Stripe استفاده می‌کند چون گسترده‌ به کار می‌رود، مستندات خوبی دارد و بیشتر ساز اپ‌های هوش مصنوعی از آن پشتیبانی می‌کنند. ارائه‌دهندگان دیگری هم وجود دارند و بعضی‌شان به‌عنوان «تاجر ثبت‌شده» (merchant of record) عمل می‌کنند و مدیریت مالیات فروش را برعهده می‌گیرند؛ اگر انطباق مالیاتی نگرانتان می‌کند، این مدل ارزش مقایسه دارد.

سه راه دریافت پرداخت با Stripe

گزینهنیاز به کداپ می‌داند چه کسی پرداخت کرده؟بهترین کاربرد
Payment Linksنداردفقط اگر وب‌هوک اضافه کنیدفروش چند محصول ثابت، کمک مالی، سنجش تقاضا
Checkout (یک‌باره)کد سروری برای ساخت sessionبله، با وب‌هوکفروشگاه‌ها، دانلود پولی، خریدهای یک‌باره
Checkout (اشتراک)کد سروری به‌همراه مدیریت وب‌هوکبله، با وب‌هوکSaaS، عضویت، هر چیز تکرارشونده

Payment Links

Payment Link یک صفحه پرداخت میزبانی‌شده توسط Stripe است که بدون کد در داشبورد Stripe می‌سازید. یک URL می‌گیرید که می‌توانید پشت یک دکمه در اپ بگذارید، در ایمیل به اشتراک بگذارید یا به‌صورت QR code نشان دهید. مستندات Stripe می‌گوید Payment Links می‌توانند یک محصول، یک اشتراک را بفروشند یا کمک مالی بپذیرند، و می‌توانید به مشتری اجازه دهید انتخاب کند چه چیزی پرداخت کند یا تعداد خریدها را محدود کنید.

نکته‌ی منفی: اپ شما به‌طور خودکار نمی‌داند کاربر وارد‌شده خاصی پرداخت کرده است. برای یک صفحه کمک مالی یا فروشگاه کوچکی که سفارش‌ها را از روی ایمیل‌های Stripe دستی انجام می‌دهید، کافی است. برای «برای باز کردن امکانات Pro پرداخت کنید»، کافی نیست.

Stripe Checkout

Checkout یک صفحه پرداخت است که سرور شما برای یک خرید مشخص، در لحظه، می‌سازد. سرور به Stripe می‌گوید چه چیزی خریده می‌شود (و در صورت تمایل کدام مشتری می‌خرد)، Stripe یک URL برمی‌گرداند و شما مشتری را به آنجا می‌فرستید. مستندات Stripe آن را پشتیبان پرداخت یک‌باره و اشتراک معرفی می‌کند، به‌صورت صفحه کامل میزبانی‌شده توسط Stripe، صفحه‌ای که در سایت شما جاسازی شده، یا فرم جاسازی‌شده.

روند کار:

  1. مشتری در اپ شما روی خرید کلیک می‌کند.
  2. سرور شما با استفاده از کلید مخفی‌تان یک Checkout Session می‌سازد، شامل شناسه‌ای که آن را به کاربر یا سفارش شما متصل می‌کند.
  3. مشتری به Stripe هدایت می‌شود و پرداخت می‌کند.
  4. Stripe او را به صفحه موفقیت شما برمی‌گرداند.
  5. Stripe رویداد checkout.session.completed را به وب‌هوک شما می‌فرستد و سرور شما سفارش را پرداخت‌شده علامت می‌زند یا دسترسی را باز می‌کند.

مرحله ۲ باید روی سرور انجام شود، چون از کلید مخفی شما استفاده می‌کند. این اصلی‌ترین دلیل است که Checkout به بک‌اند نیاز دارد.

اشتراک‌ها

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

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

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

وب‌هوک یک درخواست HTTP است که Stripe وقتی اتفاقی می‌افتد به سرور شما می‌فرستد. (برای ایده کلی، وب‌هوک چیست را ببینید.) راهنمای تکمیل سفارش Stripe صریح است: نمی‌توانید فقط به صفحه موفقیت برای تکمیل سفارش تکیه کنید، چون مشتری ممکن است پرداخت کند و قبل از بارگذاری آن صفحه اتصالش قطع شود. برای اشتراک‌ها و روش‌های پرداخت با تأخیر، وب‌هوک‌ها الزامی‌اند.

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

رویدادمعنی آنکار اپ شما
checkout.session.completedCheckout تمام شدسفارش را پرداخت‌شده علامت بزنید یا دسترسی را شروع کنید
checkout.session.async_payment_succeededیک روش با تأخیر (مثل برداشت بانکی) بعداً تأیید شدهمین حالا تکمیل کنید
checkout.session.async_payment_failedآن پرداخت با تأخیر ناموفق شدبه مشتری بگویید؛ تکمیل نکنید
invoice.paidپرداخت اشتراک موفق بود، شامل تمدیدهادسترسی را تمدید کنید
invoice.payment_failedیک تمدید ناموفق بودبه کاربر هشدار دهید؛ Stripe ممکن است دوباره تلاش کند
customer.subscription.updatedطرح عوض شد، یا لغو زمان‌بندی شدطرح کاربر را به‌روز کنید
customer.subscription.deletedاشتراک تمام شددسترسی پولی را حذف کنید

قوانین یک هندلر درست وب‌هوک

این‌ها مستقیم از مستندات وب‌هوک Stripe آمده‌اند و هندلرهای تولیدشده با هوش مصنوعی گاهی یکی از آن‌ها را جا می‌اندازند:

  • امضا را تأیید کنید. هر رویداد هدر Stripe-Signature دارد. هندلر شما آن را با سِکرِت امضای endpoint بررسی می‌کند (که با whsec_ شروع می‌شود). بدون این، هر کسی می‌توانست یک «پرداخت موفق» جعلی به سرور شما بفرستد.
  • بدنه خام درخواست را استفاده کنید. بررسی امضا شکست می‌خورد اگر فریم‌ورک بدنه را قبل از آن تجزیه یا تغییر دهد.
  • سریع یک پاسخ 2xx برگردانید، بعد کارهای کندتر را انجام دهید. timeout هم شکست حساب می‌شود.
  • تکرار را مدیریت کنید. Stripe ممکن است همان رویداد را بیش از یک بار بفرستد. شناسه رویدادهای پردازش‌شده را ثبت کنید، یا تکمیل سفارش را طوری بنویسید که دوبار اجرا شدنش بی‌خطر باشد.
  • ترتیب را فرض نکنید. Stripe تضمین نمی‌کند رویدادها به ترتیب وقوعشان برسند.
  • انتظار تلاش مجدد داشته باشید. در حالت واقعی، Stripe تحویل‌های ناموفق را تا سه روز دوباره تلاش می‌کند، پس یک قطعی کوتاه پرداختی را گم نمی‌کند، اما هندلر شما باید با رویدادهای دیرهنگام کنار بیاید.

وب‌هوک‌ها به یک آدرس عمومی HTTPS نیاز دارند، پس معمولاً فقط بعد از منتشر شدن اپ کار می‌کنند (ابزار CLI تحت وب Stripe می‌تواند رویدادها را به دستگاه محلی توسعه‌دهنده فوروارد کند).

یک درخواست که کل جریان را پوشش می‌دهد

یک خرید یک‌باره با Stripe Checkout برای «بسته Pro» (شناسه قیمت در STRIPE_PRICE_ID) اضافه کن. Checkout Session را روی سرور با STRIPE_SECRET_KEY از رازها بساز و شناسه کاربر واردشده را در session قرار بده. یک endpoint به نام POST /api/stripe/webhook اضافه کن که امضای Stripe را با STRIPE_WEBHOOK_SECRET و بدنه خام درخواست تأیید کند، checkout.session.completed را مدیریت کند و آن کاربر را دارای «بسته Pro» علامت بزند. اگر همان رویداد دوبار برسد، امن باشد. صفحات موفقیت و لغو اضافه کن. هرگز کلید مخفی را به مرورگر نشان نده.

برای اشتراک‌ها اضافه کنید: «از حالت اشتراک با STRIPE_PRICE_ID استفاده کن. invoice.paid، invoice.payment_failed، customer.subscription.updated و customer.subscription.deleted را مدیریت کن. یک دکمه مدیریت صورتحساب اضافه کن که پورتال مشتری Stripe را برای این کاربر باز کند.»

حالت تست

Stripe محیط‌های جدا برای آزمایش (sandbox) و واقعی دارد، با کلیدهای جدا. کلیدهای آزمایشی با pk_test_، sk_test_ یا rk_test_ شروع می‌شوند؛ کلیدهای واقعی با pk_live_، sk_live_ یا rk_live_. تراکنش‌های تست پول جابه‌جا نمی‌کنند.

کارت‌های آزمایشی مفید از مستندات تست Stripe (هر تاریخ انقضای آینده، هر CVC سه‌رقمی):

شماره کارتنتیجه
4242 4242 4242 4242پرداخت موفق است
4000 0000 0000 0002کارت رد می‌شود
4000 0000 0000 3220نیاز به احراز 3D Secure دارد، سپس موفق است

حداقل این موارد را تست کنید:

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

انتشار واقعی

  1. حساب Stripe خود را فعال کنید با جزئیات کسب‌وکار و بانکی.
  2. کلیدهای واقعی را در رازهای اپ قرار دهید. Stripe کلیدهای محدودشده (restricted) با فقط مجوزهای لازم را به‌جای کلید مخفی نامحدود توصیه می‌کند.
  3. یک endpoint وب‌هوک واقعی بسازید که به اپ منتشرشده شما اشاره کند. سِکرِت امضای جدا دارد، متفاوت از نسخه تست؛ آن را به‌روز کنید.
  4. محصولات و قیمت‌ها را در حالت واقعی دوباره بسازید؛ شناسه‌های حالت تست در آنجا وجود ندارند.
  5. یک خرید واقعی کوچک انجام دهید و آن را بازپرداخت کنید.

هر کلیدی را در رازهای پروژه نگه دارید، نه در کد یا چت. چک‌لیست امنیتی ما کلیدها و تأیید وب‌هوک را با جزئیات بیشتری پوشش می‌دهد.

مالیات، بازپرداخت و کارهای اداری

پرداخت تعهداتی می‌آورد که کد آن‌ها را حل نمی‌کند. این مشاوره مالیاتی نیست؛ با حسابدار مشورت کنید.

  • مالیات فروش، ارزش افزوده و GST. بسته به محل شما و مشتریانتان، ممکن است نیاز باشد ثبت‌نام کنید، مالیات دریافت و اظهار کنید. Stripe Tax می‌تواند مالیات را در تسویه‌حساب محاسبه و جمع‌آوری کند، نشان دهد فروش‌هایتان کجا تعهد ایجاد می‌کند، و در ثبت‌نام و اظهار کمک کند، اما مسئولیت با شما می‌ماند. ارائه‌دهندگان «تاجر ثبت‌شده» گزینه‌ای هستند که بیشتری از این‌ها را برعهده می‌گیرند.
  • بازپرداخت و اختلاف‌ها. قبل از انتشار سیاست بازپرداخت خود را تعیین و روی سایت بگذارید. اختلاف‌ها (chargeback) پیش می‌آیند؛ سوابق آنچه خریده و تحویل شده را نگه دارید.
  • رسید و فاکتور. Stripe می‌تواند رسید ایمیل کند؛ کسب‌وکارها ممکن است به فاکتور درست نیاز داشته باشند.
  • کارمزد. هر ارائه‌دهنده برای هر تراکنش کارمزد می‌گیرد. به صفحه قیمت فعلی ارائه‌دهنده نگاه کنید، نه به ارقام موجود در مقالات.

کدام تنظیم برای اپ شما مناسب است

  • کمک مالی یا چند محصول محدود: Payment Links. نحوه ساخت وب‌سایت کمک مالی غیرانتفاعی را ببینید.
  • فروشگاه با سبد خرید: Checkout با اقلام سفارش و وب‌هوک. نحوه ساخت فروشگاه آنلاین را ببینید.
  • SaaS یا عضویت: Checkout در حالت اشتراک، وب‌هوک‌ها و پورتال مشتری. نحوه ساخت MVP سَس و نحوه قیمت‌گذاری محصول SaaS را ببینید.
  • بازاری که به فروشندگان پرداخت می‌کند: یک تنظیم متفاوت و سخت‌گیرانه‌تر (Stripe Connect یا مشابه). جداگانه برنامه‌ریزی کنید.

افزودن پرداخت در Mythex

پرداخت‌ها در اپ‌هایی که با Mythex می‌سازید از حساب و کلیدهای خودتان در Stripe استفاده می‌کنند؛ برای اپ شما اتصال یک‌کلیکی «Connect Stripe» وجود ندارد. روند معمول:

  1. کلیدهای تست Stripe را بگیرید.
  2. STRIPE_SECRET_KEY (و بعداً سِکرِت وب‌هوک) را به رازهای پروژه اضافه کنید؛ از طریق /secrets، تنظیمات پروژه یا کارت رازهایی که عامل وقتی به کلیدی نیاز دارد نشان می‌دهد.
  3. از عامل بخواهید Checkout را با درخواستی مانند بالا بسازد.
  4. در Preview با کارت‌های تست آزمایش کنید. قبل از ثبت وب‌هوک منتشر کنید، چون به آدرس عمومی شما نیاز دارد.
  5. بعد از تغییر به کلیدهای واقعی، دوباره منتشر کنید تا اپ واقعی آن‌ها را بگیرد.

به پذیرش پرداخت با Stripe و مدیریت وب‌هوک‌ها در بک‌اند در مستندات نگاه کنید.

پرسش‌ها

ساده‌ترین راه دریافت پرداخت در یک اپ چیست؟

یک Stripe Payment Link بدون کد کار می‌کند: آن را در داشبورد Stripe می‌سازید و از اپ به آن پیوند می‌دهید. اگر اپ شما باید بداند چه کسی پرداخت کرده و خودکار چیزی را باز کند، از Stripe Checkout به‌همراه وب‌هوک استفاده کنید.

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

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

چطور بدون پول واقعی پرداخت را تست کنم؟

از کلیدهای API آزمایشی (sandbox) Stripe و شماره کارت‌های تست آن استفاده کنید، مثل 4242 4242 4242 4242 با هر تاریخ انقضای آینده و هر CVC سه‌رقمی. تراکنش‌های تست پول واقعی جابه‌جا نمی‌کنند.

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

Stripe Tax می‌تواند مالیات را در تسویه‌حساب محاسبه و جمع‌آوری کند و نشان دهد کجا ممکن است نیاز به ثبت‌نام داشته باشید، اما مسئولیت تعهدات مالیاتی با خودتان است. برای وضعیت خودتان با حسابدار مشورت کنید.

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 简体中文 繁體中文(香港) 繁體中文(台灣)