Stripe کے ساتھ سبسکرپشنز کیسے شامل کریں: پلانز، ٹرائلز، webhooks اور ناکام ادائیگیاں
Stripe کے ساتھ سبسکرپشنز شامل کرنے کے لیے Stripe Dashboard میں بار بار کی قیمت والا پروڈکٹ بنائیں، اپنے سرور سے گاہکوں کو سبسکرپشن موڈ میں Stripe Checkout پر بھیجیں، اور ایک webhook کے ذریعے اپنی ایپ کو بتائیں کہ ہر ادائیگی کب کامیاب، ناکام، تبدیل یا ختم ہوئی۔ سبسکرپشن کی حالت کو صارف کے ساتھ محفوظ کریں اور رسائی اسی سے دیں، کامیابی والے صفحے سے نہیں۔ ایک Manage billing بٹن شامل کریں جو Stripe کے hosted customer portal کھولے، تاکہ لوگ کارڈ بدل سکیں، پلان تبدیل کر سکیں اور منسوخ کر سکیں، بغیر آپ کے وہ اسکرینز بنائے۔
یہ گائیڈ اپنی ایپ میں ادائیگیاں کیسے شامل کریں پر مبنی ہے، جو ایک بار کے Checkout، ٹیسٹ موڈ اور لائیو ہونے کا احاطہ کرتی ہے۔ یہاں ہم اس پر توجہ دیتے ہیں کہ بار بار کی بلنگ میں کیا مختلف ہے۔ Stripe کی تفصیلات ستمبر 2026 تک کی Stripe کی دستاویزات سے ہیں۔
سبسکرپشنز ایک بار کی ادائیگیوں سے مشکل کیوں ہیں
ایک بار کی ادائیگی اس وقت ہوتی ہے جب گاہک آپ کی ایپ میں ہو۔ سبسکرپشن اس کے بعد بھی جاری رہتی ہے: ہر مہینے تجدید، کارڈز کی میعاد ختم ہونا، مدت کے درمیان اپ گریڈ، اور ایسی منسوخیاں جو مدت کے آخر میں نافذ ہوں۔ آپ کی ایپ ان کے بارے میں صرف webhooks کے ذریعے جانتی ہے۔ زیادہ تر سبسکرپشن کے بگز اس وجہ سے آتے ہیں کہ پہلی ادائیگی کو پوری کہانی سمجھ لیا جاتا ہے۔
آپ کے اختیارات
| طریقہ | آپ کیا بناتے ہیں | کس کے لیے بہتر |
|---|---|---|
| بار بار کی قیمت والا Payment Link | صرف ایک لنک | مانگ کی جانچ؛ رسائی ہاتھ سے سنبھالنا |
| Checkout (سبسکرپشن موڈ) + customer portal | ایک سرور راستہ، ایک webhook، ایک بلنگ بٹن | زیادہ تر SaaS ایپس اور ممبرشپس |
| Subscriptions API اپنے ادائیگی فارم کے ساتھ | بہت زیادہ: ادائیگی UI، تصدیق، دوبارہ کوششیں | غیر معمولی بلنگ بہاؤ والی ایپس |
| Merchant-of-record فراہم کنندہ | Checkout جیسا | وہ فروخت کنندگان جو چاہتے ہیں کہ سیلز ٹیکس فراہم کنندہ سنبھالے |
زیادہ تر ایپس کے لیے Checkout اور portal مناسب توازن ہے۔ اگر ٹیکس کا معاملہ آپ کو پریشان کرتا ہے تو Stripe بمقابلہ Paddle بمقابلہ Lemon Squeezy میں فراہم کنندگان کا موازنہ کریں۔
پہلے Stripe میں اپنی قیمتوں کی منصوبہ بندی کریں
Stripe میں پروڈکٹ وہ ہے جو آپ بیچتے ہیں ("Pro plan")، اور قیمت وہ ہے کہ اس کا کتنا چارج ہوتا ہے ("ماہانہ $20"، "سالانہ $200")۔ ایک پروڈکٹ کی کئی قیمتیں ہو سکتی ہیں۔ طے کریں:
- آپ کون سے درجات (tiers) پیش کرتے ہیں اور ہر ایک آپ کی ایپ میں کیا کھولتا ہے
- ماہانہ، سالانہ، یا دونوں
- کیا آپ ٹرائل دیتے ہیں، اور کیا اس کے لیے پیشگی کارڈ چاہیے
پروڈکٹس اور قیمتیں ٹیسٹ موڈ میں بنائیں، اور ان کے price IDs محفوظ رکھیں؛ آپ کی ایپ انہی کا حوالہ دیتی ہے۔ اگر قیمتیں ابھی طے نہیں ہوئیں تو SaaS پروڈکٹ کی قیمت کیسے طے کریں اور freemium بمقابلہ مفت ٹرائل پڑھیں۔
سبسکرپشن کا وہ دور جسے آپ کو ہینڈل کرنا ہے
Stripe کی سبسکرپشنز کی جائزہ دستاویز میں وہ حالتیں درج ہیں جو کوئی سبسکرپشن رکھ سکتی ہے۔ رسائی کے لیے سب سے اہم یہ ہیں:
| حالت | مطلب | رسائی دیں؟ |
|---|---|---|
trialing | ٹرائل کی مدت میں | ہاں |
active | اچھی حالت میں | ہاں |
incomplete | پہلی ادائیگی ابھی مکمل نہیں؛ Stripe گاہک کو 23 گھنٹے دیتا ہے | نہیں |
incomplete_expired | پہلی ادائیگی کبھی کامیاب نہ ہوئی | نہیں |
past_due | تازہ ترین ادائیگی ناکام ہوئی یا کوشش نہیں ہوئی؛ دوبارہ کوششیں ہو سکتی ہیں | آپ کا فیصلہ؛ بہت سی ایپس مختصر مہلت دیتی ہیں |
unpaid | دوبارہ کوششیں ختم، انوائسز کھلے رہتے ہیں، مزید کوشش نہیں ہوتی | نہیں، Stripe کی دستاویزات کے مطابق رسائی ختم کریں |
canceled | ختم ہو گئی؛ دوبارہ شروع نہیں ہو سکتی | نہیں |
paused | ایک ٹرائل ادائیگی کے طریقے کے بغیر ختم ہوا اور pause پر سیٹ تھا | نہیں |
حالت کو اپنے صارف یا اکاؤنٹ کے ریکارڈ میں محفوظ کریں اور رسائی اسی پر مبنی رکھیں۔ ہر بار متعلقہ webhook آنے پر اسے اپ ڈیٹ کریں۔
وہ webhook ایونٹس جنہیں ہینڈل کرنا ہے
| ایونٹ | آپ کی ایپ کیا کرتی ہے |
|---|---|
checkout.session.completed | نیا Stripe گاہک اور سبسکرپشن IDs آپ کے صارف سے جوڑیں |
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 دستاویزات کے ہینڈلر کے اصول اب بھی لاگو ہیں: raw body سے دستخط کی تصدیق کریں، جلد 2xx جواب دیں، ڈپلیکیٹ اور بے ترتیب ایونٹس ہینڈل کریں، اور دوبارہ کوششوں کی توقع رکھیں۔ webhook کیا ہے گائیڈ خیال کی وضاحت کرتی ہے، اور ادائیگیوں والی گائیڈ اصولوں کی تفصیل دیتی ہے۔
مرحلہ وار طریقہ
- Stripe کے ٹیسٹ موڈ میں پروڈکٹس اور قیمتیں بنائیں۔
- Secrets شامل کریں: secret key، price IDs، اور بعد میں webhook signing secret۔ انہیں کبھی فرنٹ اینڈ کوڈ میں نہ رکھیں۔
- Pricing صفحہ: ہر پلان کا بٹن آپ کے سرور کو کال کرتا ہے، جو لاگ ان صارف کے لیے سبسکرپشن موڈ میں Checkout Session بناتا ہے۔ اپنا صارف ID شامل کریں تاکہ webhook ادائیگی کو اکاؤنٹ سے ملا سکے۔
- Webhook endpoint: دستخط کی تصدیق کریں اور اوپر کے ایونٹس ہینڈل کریں، ہر صارف کے لیے ایک سبسکرپشن ریکارڈ اپ ڈیٹ کرتے ہوئے۔
- فیچرز کو محفوظ شدہ حالت اور پلان پر گیٹ کریں، اور ہر محفوظ کارروائی پر سرور پر جانچیں، صرف چھپے ہوئے بٹنوں پر نہیں۔
- Customer portal: اسے Stripe Dashboard میں ترتیب دیں (کون سے پلانز میں جا سکتے ہیں، کیا وہ منسوخ کر سکتے ہیں)، پھر ایک Manage billing بٹن شامل کریں جو سرور پر portal سیشن بنائے اور وہاں redirect کرے۔
- ناکام ادائیگیاں: Stripe کی بلنگ ترتیبات میں دوبارہ کوشش کا رویہ اور آخری کوشش کے بعد کیا ہوگا، یہ منتخب کریں۔
past_dueکے دوران ایپ میں ایک بینر دکھائیں۔ - پوری زندگی کے دور کی جانچ کریں، پھر پبلش کریں اور لائیو webhook رجسٹر کریں۔
اپنے AI بلڈر کو دینے کے پرامپٹس
Stripe کے ساتھ سبسکرپشن بلنگ شامل کریں۔ پلانز: Starter (price ID STRIPE_PRICE_STARTER میں) اور Pro (STRIPE_PRICE_PRO)۔ Pricing صفحہ سرور پر STRIPE_SECRET_KEY استعمال کرتے ہوئے سبسکرپشن موڈ میں Checkout Session بناتا ہے، جس میں لاگ ان صارف کا ID شامل ہو۔ Stripe گاہک ID، سبسکرپشن ID، پلان اور حالت صارف پر محفوظ کریں۔ secret key کبھی براؤزر کو نہ دکھائیں۔
POST /api/stripe/webhook شامل کریں۔ raw request body استعمال کرتے ہوئے STRIPE_WEBHOOK_SECRET سے دستخط کی تصدیق کریں۔ checkout.session.completed، invoice.paid، invoice.payment_failed، customer.subscription.updated، customer.subscription.deleted اور customer.subscription.trial_will_end ہینڈل کریں۔ پروسیس شدہ ایونٹ IDs محفوظ کریں تاکہ ڈپلیکیٹس نظر انداز ہوں۔ صارف کی حالت سبسکرپشن آبجیکٹ سے اپ ڈیٹ کریں، اس ترتیب سے نہیں جس میں ایونٹس آتے ہیں۔
Pro فیچرز کو سرور پر گیٹ کریں: صرف تب اجازت دیں جب حالت active یا trialing ہو اور پلان Pro ہو۔ جب حالت past_due ہو تو "ادائیگی ناکام، اپنا کارڈ اپ ڈیٹ کریں" کا بینر دکھائیں۔ ایک Manage billing بٹن شامل کریں جو اس صارف کے لیے Stripe customer portal کھولے۔
اپ گریڈز، ڈاؤن گریڈز اور پرو ریشن
جب کوئی گاہک پلان بدلتا ہے تو Stripe کی دستاویزات کے مطابق یہ اکثر proration پیدا کرتا ہے: نئی قیمت موجودہ بلنگ مدت کے باقی حصے پر لاگو ہوتی ہے۔ آپ proration کا پیش نظارہ دیکھ سکتے ہیں یا اسے بند کر سکتے ہیں۔ اگر پلانز کا وقفہ ایک ہی ہو تو بلنگ کی تاریخیں وہی رہتی ہیں؛ ماہانہ سے سالانہ پر جانے سے بلنگ کی تاریخ تبدیلی کے دن پر آ جاتی ہے۔ گاہکوں کو portal میں پلان بدلنے دینے سے یہ منطق لکھنے کی ضرورت نہیں رہتی، لیکن portal کی ترتیبات میں طے کریں کہ کون سی تبدیلیاں اجازت شدہ ہیں۔
جانچ کی چیک لسٹ
Stripe کا ٹیسٹ موڈ اور ٹیسٹ کارڈز استعمال کریں، اور ہر حالت سے گزریں:
- نئی سبسکرپشن صحیح صارف کو صحیح پلان دیتی ہے
- ادائیگی کے فوراً بعد ٹیب بند کرنے پر بھی رسائی مل جاتی ہے (یہ ثابت کرتا ہے کہ webhook کام کرتا ہے)
- سائن اپ پر مسترد کارڈ کوئی رسائی نہیں دیتا
- ناکام تجدید اکاؤنٹ کو past_due میں لے جاتی ہے اور بینر دکھاتی ہے
- portal میں کارڈ اپ ڈیٹ کرنے سے حالت دوبارہ active ہو جاتی ہے
- اپ گریڈ اور ڈاؤن گریڈ فیچرز کو درست بدلتے ہیں
- مدت کے آخر میں منسوخی رسائی کو اختتامی تاریخ تک رکھتی ہے، پھر اسے ہٹاتی ہے
- ٹرائل کے صارفین رسائی پاتے ہیں، یاد دہانی حاصل کرتے ہیں، اور درست طور پر تبدیل ہوتے ہیں یا رسائی کھو دیتے ہیں
- ایک ہی webhook ایونٹ دو بار بھیجنے سے کچھ نہیں بدلتا
Stripe کے ٹیسٹ کلاکس وقت گزرنے کی نقل کرنے دیتے ہیں، تاکہ آپ ایک مہینہ انتظار کیے بغیر تجدیدیں جانچ سکیں۔ ان کے استعمال کے طریقے کے لیے Stripe کی موجودہ testing دستاویزات دیکھیں۔
عام غلطیاں
- کامیابی والے صفحے پر رسائی دینا۔ گاہک ادائیگی کر سکتا ہے اور وہ صفحہ کبھی نہ دیکھے۔ webhook استعمال کریں۔
- صرف پہلی ادائیگی ہینڈل کرنا۔ تجدیدیں، ناکامیاں اور منسوخیاں بعد میں بطور ایونٹ آتی ہیں۔
- پلان کی حالت صرف فرنٹ اینڈ پر جانچنا۔ کوئی بھی آپ کی API کو براہ راست کال کر سکتا ہے۔
- غلطی سے ایک صارف، کئی سبسکرپشنز۔ نیا Checkout Session بنانے سے پہلے موجودہ سبسکرپشن چیک کریں، یا موجودہ گاہکوں کو portal پر بھیجیں۔
- پہلی ناکام تجدید پر رسائی ختم کر دینا۔ کارڈ بے ضرر وجوہات سے ناکام ہوتے ہیں۔ واضح بینر کے ساتھ مختصر مہلت گاہکوں کو روکے رکھتی ہے۔
- لائیو webhook بھول جانا۔ ٹیسٹ اور لائیو endpoints کے دستخطی راز مختلف ہوتے ہیں۔
- ٹیکس اور ریفنڈز کو نظر انداز کرنا۔ لانچ سے پہلے اپنی ریفنڈ پالیسی طے کریں اور اپنی ٹیکس ذمہ داریاں کسی اکاؤنٹنٹ کے ساتھ چیک کریں۔
Mythex پر سبسکرپشنز
Mythex پر بنائی ہوئی ایپس آپ کے اپنے Stripe اکاؤنٹ اور keys استعمال کرتی ہیں؛ آپ کی ایپ کے لیے کوئی ایک کلک والا Stripe کنکشن نہیں ہے۔ اپنی ٹیسٹ keys اور price IDs پروجیکٹ secrets کے طور پر شامل کریں، اوپر جیسے پرامپٹس استعمال کریں، اور Preview میں Stripe کے ٹیسٹ کارڈز سے جانچیں۔ webhooks کو آپ کی ایپ کا عوامی URL چاہیے، اس لیے Stripe میں endpoint رجسٹر کرنے سے پہلے پبلش کریں، اور لائیو keys پر جانے کے بعد دوبارہ پبلش کریں تاکہ لائیو ایپ انہیں لے لے۔ دیکھیں Stripe کے ساتھ ادائیگیاں قبول کریں اور اپنے بیک اینڈ میں webhooks ہینڈل کریں۔ وسیع پروڈکٹ کے لیے، SaaS MVP کیسے بنائیں بتاتی ہے کہ بلنگ کے گرد کیا بنانا ہے۔
سوالات
Stripe کے ساتھ سبسکرپشنز شامل کرنے کا سب سے سادہ طریقہ کیا ہے؟
Stripe Dashboard میں بار بار کی قیمت والا ایک پروڈکٹ بنائیں، گاہکوں کو سبسکرپشن موڈ میں Stripe Checkout پر بھیجیں، webhook سے سبسکرپشن ایونٹس ہینڈل کریں، اور ایک Manage billing بٹن کو Stripe کے hosted 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 حالت بیان ہے جو ادائیگی کے طریقے کے بغیر ختم ہوں، جب ایسی ترتیب ہو۔ پیشگی کارڈ مانگنے سے عموماً سائن اپس کم ہوتے ہیں مگر ادائیگی کرنے والے گاہک زیادہ ہوتے ہیں؛ دیکھیں آپ کی پروڈکٹ کے لیے کون سا بہتر ہے۔