اپنی ایپ میں ادائیگیاں کیسے شامل کریں: چیک آؤٹ، سبسکرپشنز اور webhooks
Stripe کے ساتھ ادائیگیاں شامل کرنے کا سادہ ترین طریقہ یہ ہے: اگر آپ کو صرف "خریدیں" کا بٹن چاہیے اور آرڈر ہاتھ سے سنبھال سکتے ہیں تو Payment Link؛ اگر آپ کی ایپ کو معلوم ہونا چاہیے کہ کس نے ادائیگی کی اور وہ خود بخود ردِعمل دے تو Stripe Checkout؛ اور بار بار کی بلنگ کے لیے Checkout کا سبسکرپشن موڈ اور Stripe کا customer portal۔ سب صورتوں میں، سب سے سادہ کے علاوہ، آپ کو ایک webhook بھی چاہیے، یعنی ایک سرور endpoint جسے Stripe کامیاب ادائیگی پر کال کرتا ہے، اور لائیو keys پر جانے سے پہلے ہر چیز کو Stripe کی ٹیسٹ keys اور ٹیسٹ کارڈز سے جانچنا چاہیے۔
یہ گائیڈ ہر آپشن کی وضاحت کرتی ہے، وہ webhook والا حصہ جو زیادہ تر ٹیوٹوریلز چھوڑ دیتے ہیں، اور وہ چیزیں جو حقیقی پیسے لینے سے پہلے چیک کرنی چاہئیں۔ Stripe کی تفصیلات ستمبر 2026 تک کی خود Stripe کی دستاویزات سے ہیں۔
ادائیگی کا فراہم کنندہ کیوں استعمال کریں
کبھی بھی اپنے فارمز میں کارڈ نمبر جمع نہ کریں۔ خام کارڈ ڈیٹا سنبھالنے سے آپ PCI DSS (کارڈ انڈسٹری کا سیکیورٹی معیار) کے دائرے میں آ جاتے ہیں اور یہ سنگین ذمہ داری ہے۔ Stripe جیسا ادائیگی کا فراہم کنندہ ادائیگی کا فارم خود ہوسٹ کرتا ہے، کارڈ محفوظ رکھتا ہے، بینک کی تصدیق سنبھالتا ہے، اور آپ کی ایپ کو نتیجہ بتاتا ہے۔ آپ کی ایپ صرف یہ دیکھتی ہے: "گاہک X نے Y کی ادائیگی کی"۔
یہ گائیڈ Stripe اس لیے استعمال کرتی ہے کہ یہ وسیع پیمانے پر استعمال ہوتا ہے، اچھی طرح دستاویزی ہے، اور زیادہ تر AI ایپ بلڈرز اسے سپورٹ کرتے ہیں۔ دوسرے فراہم کنندگان بھی موجود ہیں، اور کچھ "merchant of record" کے طور پر سیلز ٹیکس کا کام آپ کے لیے سنبھال لیتے ہیں؛ اگر ٹیکس کی تعمیل آپ کے لیے فکر کا باعث ہے تو وہ ماڈل بھی موازنے کے قابل ہے۔
Stripe کے ساتھ ادائیگی لینے کے تین طریقے
| آپشن | کوڈ درکار | کیا آپ کی ایپ جانتی ہے کس نے ادائیگی کی؟ | کس کے لیے بہتر |
|---|---|---|---|
| Payment Links | کوئی نہیں | صرف اگر آپ webhook شامل کریں | چند مقررہ پروڈکٹس بیچنا، عطیات، طلب کی جانچ |
| Checkout (ایک بار کی) | سیشن بنانے کے لیے سرور کوڈ | ہاں، webhook کے ذریعے | اسٹورز، ادا شدہ ڈاؤن لوڈز، ایک بار کی خریداریاں |
| Checkout (سبسکرپشن) | سرور کوڈ اور webhook ہینڈلنگ | ہاں، webhook کے ذریعے | SaaS، ممبرشپس، بار بار ہونے والی ہر چیز |
Payment Links
Payment Link ایک Stripe-hosted ادائیگی کا صفحہ ہے جسے آپ Stripe Dashboard میں بغیر کوڈ کے بناتے ہیں۔ آپ کو ایک URL ملتا ہے جسے آپ اپنی ایپ میں بٹن کے پیچھے رکھ سکتے ہیں، ای میل میں شیئر کر سکتے ہیں، یا QR کوڈ کے طور پر دکھا سکتے ہیں۔ Stripe کی دستاویزات کے مطابق Payment Links ایک پروڈکٹ، ایک سبسکرپشن بیچ سکتے ہیں، یا عطیات قبول کر سکتے ہیں، اور آپ گاہک کو انتخاب کرنے دے سکتے ہیں یا خریداریوں کی تعداد محدود کر سکتے ہیں۔
اس کی ایک کمی ہے: آپ کی ایپ خود بخود نہیں جانتی کہ کوئی خاص لاگ ان صارف نے ادائیگی کی ہے۔ عطیات کے صفحے یا چھوٹی دکان کے لیے، جہاں آپ Stripe کی ای میل اطلاعات سے ہاتھ سے آرڈر پورے کرتے ہیں، یہ ٹھیک ہے۔ "Pro فیچرز کے لیے ادائیگی کریں" کے لیے یہ کافی نہیں۔
Stripe Checkout
Checkout ایک ادائیگی کا صفحہ ہے جسے آپ کا سرور ایک مخصوص خریداری کے لیے فوری طور پر بناتا ہے۔ آپ کا سرور Stripe کو بتاتا ہے کیا خریدا جا رہا ہے (اور اختیاری طور پر کون خرید رہا ہے)، Stripe ایک URL واپس کرتا ہے، اور آپ گاہک کو وہاں بھیجتے ہیں۔ Stripe کی دستاویزات کے مطابق Checkout ایک بار کی اور سبسکرپشن دونوں ادائیگیاں سپورٹ کرتا ہے، ایک مکمل Stripe-hosted صفحے کے طور پر، آپ کی سائٹ میں ایمبیڈڈ صفحے کے طور پر، یا ایمبیڈڈ فارم کے طور پر۔
بہاؤ یہ ہے:
- گاہک آپ کی ایپ میں Buy پر کلک کرتا ہے۔
- آپ کا سرور آپ کی secret key استعمال کرتے ہوئے ایک Checkout Session بناتا ہے، جس میں ایک ID شامل ہوتی ہے جو اسے آپ کے صارف یا آرڈر سے جوڑتی ہے۔
- گاہک Stripe پر جاتا ہے اور ادائیگی کرتا ہے۔
- Stripe اسے آپ کے کامیابی والے صفحے پر واپس بھیجتا ہے۔
- Stripe آپ کے webhook کو
checkout.session.completedایونٹ بھیجتا ہے، اور آپ کا سرور آرڈر کو ادا شدہ نشان زد کرتا ہے یا رسائی کھول دیتا ہے۔
مرحلہ 2 سرور پر ہونا لازمی ہے، کیونکہ وہ آپ کی secret key استعمال کرتا ہے۔ Checkout کو بیک اینڈ کی ضرورت کی یہی بنیادی وجہ ہے۔
سبسکرپشنز
سبسکرپشنز Checkout کو سبسکرپشن موڈ میں استعمال کرتی ہیں، جس میں آپ Stripe میں ایک بار بار کی قیمت سیٹ کرتے ہیں۔ پہلی ادائیگی اوپر والے بہاؤ کی طرح کام کرتی ہے۔ اس کے بعد تجدید، ناکام کارڈز، اپ گریڈز اور منسوخیاں وقت کے ساتھ ہوتی ہیں، اکثر اس وقت جب گاہک آپ کی ایپ میں موجود ہی نہیں ہوتا، اس لیے آپ کی ایپ کو ان کا علم صرف webhooks کے ذریعے ہوتا ہے۔
گاہکوں کو اپنی سبسکرپشن خود منظم کرنے دینے کے لیے Stripe ایک hosted customer portal فراہم کرتا ہے۔ Stripe کی دستاویزات کے مطابق گاہک وہاں ادائیگی کے طریقے اور بلنگ کی تفصیلات اپڈیٹ کر سکتے ہیں، سبسکرپشن تبدیل یا منسوخ کر سکتے ہیں، اور انوائسز دیکھ اور ڈاؤن لوڈ کر سکتے ہیں۔ آپ اسے Stripe Dashboard میں ترتیب دیتے ہیں اور ایک "Manage billing" بٹن شامل کرتے ہیں جو گاہک کو وہاں بھیجے۔ اس سے آپ کو وہ اسکرینز خود بنانے کی ضرورت نہیں رہتی۔
Webhooks: وہ حصہ جسے چھوڑا نہیں جا سکتا
Webhook ایک HTTP درخواست ہے جو Stripe کسی واقعے پر آپ کے سرور کو بھیجتا ہے۔ (عمومی خیال کے لیے webhook کیا ہے دیکھیں۔) Stripe کی fulfilment گائیڈ واضح ہے: آپ آرڈرز پورے کرنے کے لیے صرف کامیابی والے صفحے پر بھروسا نہیں کر سکتے، کیونکہ گاہک ادائیگی کر سکتا ہے اور صفحہ لوڈ ہونے سے پہلے اس کا کنکشن ٹوٹ سکتا ہے۔ سبسکرپشنز اور تاخیر سے ہونے والی ادائیگی کے طریقوں کے لیے webhooks لازمی ہیں۔
وہ ایونٹس جنہیں ہینڈل کرنا ضروری ہے
| ایونٹ | مطلب | آپ کی ایپ کیا کرتی ہے |
|---|---|---|
checkout.session.completed | Checkout مکمل ہوا | آرڈر کو ادا شدہ نشان زد کریں یا رسائی شروع کریں |
checkout.session.async_payment_succeeded | تاخیر والا طریقہ (جیسے بینک ڈیبٹ) بعد میں کلیئر ہوا | ابھی پورا کریں |
checkout.session.async_payment_failed | وہ تاخیر والی ادائیگی ناکام ہوئی | گاہک کو بتائیں؛ پورا نہ کریں |
invoice.paid | سبسکرپشن کی ادائیگی کامیاب ہوئی، تجدید سمیت | رسائی بڑھائیں |
invoice.payment_failed | تجدید ناکام ہوئی | صارف کو خبردار کریں؛ Stripe دوبارہ کوشش کر سکتا ہے |
customer.subscription.updated | پلان تبدیل ہوا، یا منسوخی طے ہوئی | صارف کا پلان اپڈیٹ کریں |
customer.subscription.deleted | سبسکرپشن ختم ہوئی | ادا شدہ رسائی ہٹائیں |
درست webhook ہینڈلر کے اصول
یہ Stripe کی webhook دستاویزات سے براہ راست لیے گئے ہیں، اور AI سے بنائے گئے ہینڈلرز کبھی کبھار ان میں سے کوئی چھوڑ دیتے ہیں:
- دستخط کی تصدیق کریں۔ ہر ایونٹ میں
Stripe-Signatureہیڈر ہوتا ہے۔ آپ کا ہینڈلر اسے endpoint کی signing secret (جوwhsec_سے شروع ہوتی ہے) سے چیک کرتا ہے۔ اس کے بغیر کوئی بھی آپ کے سرور کو جعلی "ادائیگی کامیاب" بھیج سکتا ہے۔ - خام (raw) request body استعمال کریں۔ اگر آپ کا فریم ورک پہلے body کو پارس یا تبدیل کرے تو دستخط کی جانچ ناکام ہوتی ہے۔
- جلد 2xx جواب دیں، پھر سست کام کریں۔ ٹائم آؤٹ ناکامی شمار ہوتے ہیں۔
- ڈپلیکیٹس ہینڈل کریں۔ Stripe ایک ہی ایونٹ ایک سے زیادہ بار بھیج سکتا ہے۔ پروسیس شدہ ایونٹ IDs ریکارڈ کریں، یا فل فلمنٹ کو دو بار چلانا محفوظ بنائیں۔
- ترتیب پر بھروسا نہ کریں۔ Stripe گارنٹی نہیں دیتا کہ ایونٹس اسی ترتیب سے آئیں گے جس میں ہوئے۔
- دوبارہ کوششوں کی توقع رکھیں۔ لائیو موڈ میں Stripe ناکام ڈیلیوری کو تین دن تک دوبارہ بھیجتا ہے، اس لیے مختصر آؤٹیج سے ادائیگیاں ضائع نہیں ہوتیں، لیکن آپ کے ہینڈلر کو تاخیر سے آنے والے ایونٹس سنبھالنے ہوں گے۔
Webhooks کو ایک عوامی HTTPS ایڈریس چاہیے، اس لیے وہ عام طور پر صرف تب کام کرتے ہیں جب آپ کی ایپ پبلش ہو (Stripe کا CLI ڈویلپرز کے لیے ایونٹس مقامی مشین پر بھیج سکتا ہے)۔
پورے بہاؤ کو کور کرنے والا ایک پرامپٹ
"Pro pack" کے لیے Stripe Checkout کے ساتھ ایک بار کی خریداری شامل کریں (price ID، STRIPE_PRICE_ID میں)۔ سرور پر secrets سے STRIPE_SECRET_KEY استعمال کرتے ہوئے Checkout Session بنائیں، اور Session میں لاگ ان صارف کا ID شامل کریں۔ ایک POST /api/stripe/webhook endpoint شامل کریں جو raw request body استعمال کرتے ہوئے STRIPE_WEBHOOK_SECRET سے Stripe دستخط کی تصدیق کرے، checkout.session.completed ہینڈل کرے، اور اس صارف کو Pro pack والا نشان زد کرے۔ اگر وہی ایونٹ دو بار آئے تو اسے محفوظ بنائیں۔ کامیابی اور منسوخی کے صفحات شامل کریں۔ secret key کبھی براؤزر کو نہ دکھائیں۔
سبسکرپشنز کے لیے یہ شامل کریں: "STRIPE_PRICE_ID کے ساتھ سبسکرپشن موڈ استعمال کریں۔ invoice.paid، invoice.payment_failed، customer.subscription.updated اور customer.subscription.deleted ہینڈل کریں۔ ایک Manage billing بٹن شامل کریں جو Stripe customer portal کھولے۔"
ٹیسٹ موڈ
Stripe کے sandbox (ٹیسٹ) اور لائیو ماحول الگ الگ keys کے ساتھ ہوتے ہیں۔ sandbox keys pk_test_، sk_test_ یا rk_test_ سے شروع ہوتی ہیں؛ لائیو keys pk_live_، sk_live_ یا rk_live_ سے۔ ٹیسٹ ٹرانزیکشنز سے پیسے منتقل نہیں ہوتے۔
Stripe کی testing دستاویزات کے مفید ٹیسٹ کارڈز (کوئی بھی مستقبل کی expiry تاریخ، کوئی بھی تین ہندسوں کا CVC):
| کارڈ نمبر | نتیجہ |
|---|---|
4242 4242 4242 4242 | ادائیگی کامیاب |
4000 0000 0000 0002 | کارڈ مسترد |
4000 0000 0000 3220 | 3D Secure تصدیق درکار، پھر کامیاب |
کم از کم یہ جانچیں:
- کامیاب ادائیگی صحیح صارف کے لیے صحیح چیز کھولتی ہے
- مسترد کارڈ واضح پیغام دکھاتا ہے اور کچھ بھی غیر مقفل نہیں کرتا
- ادائیگی کے فوراً بعد براؤزر ٹیب بند کرنے پر بھی رسائی مل جاتی ہے (یہ ثابت کرتا ہے کہ webhook کام کرتا ہے، صرف کامیابی والا صفحہ نہیں)
- Stripe کے صفحے پر منسوخی صارف کو آپ کی ایپ میں واپس لاتی ہے، اور کچھ چارج نہیں ہوتا
- سبسکرپشنز کے لیے: customer portal میں منسوخ کریں اور تصدیق کریں کہ رسائی درست وقت پر ختم ہوتی ہے
لائیو ہونا
- اپنا Stripe اکاؤنٹ فعال کریں اپنی کاروباری اور بینک کی تفصیلات کے ساتھ۔
- اپنی ایپ کے secrets میں لائیو keys ڈالیں۔ Stripe ان restricted keys کی سفارش کرتا ہے جن کے پاس صرف آپ کے انضمام کی ضروری اجازتیں ہوں، نہ کہ غیر محدود secret key۔
- لائیو webhook endpoint بنائیں جو آپ کی پبلش شدہ ایپ کی طرف اشارہ کرے۔ اس کی اپنی signing secret ہوتی ہے، جو ٹیسٹ والی سے مختلف ہے، اسے اپ ڈیٹ کریں۔
- لائیو موڈ میں پروڈکٹس اور قیمتیں دوبارہ بنائیں؛ ٹیسٹ موڈ کے IDs وہاں موجود نہیں ہوتے۔
- ایک حقیقی چھوٹی ادائیگی کریں اور اسے ریفنڈ کریں۔
ہر key اپنی پروجیکٹ کے secrets میں رکھیں، کبھی کوڈ یا چیٹ میں نہیں۔ ہماری AI سے بنی ایپس کے لیے سیکیورٹی چیک لسٹ keys اور webhook کی تصدیق کو زیادہ تفصیل سے بیان کرتی ہے۔
ٹیکس، ریفنڈز اور کاغذی کارروائی
ادائیگیاں ایسی ذمہ داریاں لاتی ہیں جنہیں کوڈ حل نہیں کرتا۔ یہ ٹیکس کا مشورہ نہیں؛ کسی اکاؤنٹنٹ سے مشورہ کریں۔
- سیلز ٹیکس، VAT اور GST۔ اس پر منحصر کہ آپ اور آپ کے گاہک کہاں ہیں، آپ کو رجسٹر ہونا، ٹیکس وصول کرنا اور فائل کرنا پڑ سکتا ہے۔ Stripe Tax چیک آؤٹ پر ٹیکس کا حساب اور وصولی کر سکتا ہے، دیکھ سکتا ہے کہ آپ کی فروخت کہاں ذمہ داری پیدا کر سکتی ہے، اور رجسٹریشن اور فائلنگ میں مدد کر سکتا ہے، لیکن ذمہ داری آپ کی رہتی ہے۔ Merchant-of-record فراہم کنندگان ایک متبادل ہیں جو اس کا زیادہ حصہ سنبھال لیتے ہیں۔
- ریفنڈز اور تنازعات۔ لانچ سے پہلے اپنی ریفنڈ پالیسی طے کریں اور اسے اپنی سائٹ پر لکھیں۔ تنازعات (چارج بیکس) ہوتے ہیں؛ جو خریدا اور پہنچایا گیا اس کا ریکارڈ رکھیں۔
- رسیدیں اور انوائسز۔ Stripe رسیدیں ای میل کر سکتا ہے؛ کاروبار کو مناسب انوائسز کی ضرورت ہو سکتی ہے۔
- فیس۔ ہر فراہم کنندہ ہر ٹرانزیکشن پر فیس لیتا ہے۔ مضامین میں دیے گئے اعداد پر بھروسا کرنے کے بجائے فراہم کنندہ کا موجودہ قیمتوں کا صفحہ دیکھیں۔
کون سا سیٹ اپ آپ کی ایپ کے لیے موزوں ہے
- عطیات یا چند پروڈکٹس: Payment Links۔ دیکھیں غیر منافع بخش عطیات کی ویب سائٹ کیسے بنائیں۔
- کارٹ والی دکان: لائن آئٹمز والا Checkout اور webhook۔ دیکھیں آن لائن اسٹور کیسے بنائیں۔
- SaaS یا ممبرشپس: سبسکرپشن موڈ میں Checkout، webhooks اور customer portal۔ دیکھیں SaaS MVP کیسے بنائیں اور SaaS پروڈکٹ کی قیمت کیسے طے کریں۔
- ایک مارکیٹ پلیس جو فروخت کنندگان کو ادائیگی کرتی ہے: ایک مختلف، زیادہ ریگولیٹڈ سیٹ اپ (Stripe Connect یا اس جیسا)۔ اس کی الگ منصوبہ بندی کریں۔
Mythex میں ادائیگیاں شامل کرنا
Mythex پر بنائی ہوئی ایپس میں ادائیگیاں آپ کے اپنے Stripe اکاؤنٹ اور keys استعمال کرتی ہیں؛ آپ کی ایپ کے لیے "Connect Stripe" کا کوئی ایک کلک والا آپشن نہیں ہے۔ عام بہاؤ یہ ہے:
- Stripe کی ٹیسٹ keys حاصل کریں۔
STRIPE_SECRET_KEY(اور بعد میں webhook secret) پروجیکٹ secrets میں شامل کریں،/secretsکے ذریعے، پروجیکٹ سیٹنگز کے ذریعے، یا وہ secrets کارڈ جو ایجنٹ کو کسی key کی ضرورت پر دکھاتا ہے۔- ایجنٹ سے اوپر جیسے پرامپٹ کے ساتھ Checkout کی درخواست کریں۔
- Preview میں ٹیسٹ کارڈز سے جانچیں۔ webhook رجسٹر کرنے سے پہلے پبلش کریں، کیونکہ اسے آپ کا عوامی URL چاہیے۔
- لائیو keys پر منتقل ہونے کے بعد دوبارہ پبلش کریں تاکہ لائیو ایپ انہیں لے لے۔
دستاویزات میں Stripe کے ساتھ ادائیگیاں قبول کریں اور اپنے بیک اینڈ میں webhooks ہینڈل کریں دیکھیں۔
سوالات
ایپ میں ادائیگی قبول کرنے کا سب سے آسان طریقہ کیا ہے؟
Stripe Payment Link کو کوڈ کی ضرورت نہیں: آپ اسے Stripe Dashboard میں بناتے ہیں اور اپنی ایپ سے اس کا لنک دیتے ہیں۔ اگر آپ کی ایپ کو خود بخود معلوم ہونا چاہیے کہ کس نے ادائیگی کی اور کچھ غیر مقفل کرنا ہے، تو webhook کے ساتھ Stripe Checkout استعمال کریں۔
کیا ادائیگیاں لینے کے لیے webhook ضروری ہے؟
اگر آپ کی ایپ کو ادائیگی پر ردِعمل دینا ہے، جیسے اکاؤنٹ غیر مقفل کرنا، آرڈر کو ادا شدہ نشان زد کرنا، یا تجدید کو سنبھالنا، تو جی ہاں۔ Stripe کی دستاویزات کہتی ہیں کہ صرف کامیابی والے صفحے پر بھروسا نہیں کیا جا سکتا، کیونکہ گاہک ادائیگی کر سکتا ہے اور وہ صفحہ کبھی نہ دیکھ سکے۔ سبسکرپشنز کے لیے webhooks لازمی ہیں۔
حقیقی پیسوں کے بغیر ادائیگیوں کی جانچ کیسے کروں؟
Stripe کی sandbox (ٹیسٹ) API keys اور اس کے ٹیسٹ کارڈ نمبرز استعمال کریں، جیسے 4242 4242 4242 4242 جس کی کوئی بھی مستقبل کی expiry تاریخ اور کوئی بھی تین ہندسوں کا CVC ہو۔ ٹیسٹ ٹرانزیکشنز سے حقیقی پیسے منتقل نہیں ہوتے۔
کیا Stripe میرے لیے سیلز ٹیکس اور VAT سنبھالتا ہے؟
Stripe Tax چیک آؤٹ پر ٹیکس کا حساب اور وصولی کر سکتا ہے اور دیکھ سکتا ہے کہ آپ کو کہاں رجسٹر ہونا پڑ سکتا ہے، لیکن اپنی ٹیکس ذمہ داریوں کے ذمہ دار آپ خود رہتے ہیں۔ اپنی صورتِ حال کے لیے کسی اکاؤنٹنٹ سے مشورہ کریں۔