انسٹال لنکس اور ڈیپ لنکس
انسٹال لنکس کی مدد سے آپ اپنی Stripe App مارکیٹ پلیس سے باہر تقسیم کر سکتے ہیں، جبکہ ڈیپ لنکس صارفین کو آپ کی انسٹال شدہ ایپ کے اندر براہِ راست مخصوص ویوز تک لے جاتے ہیں۔ ہموار آن بورڈنگ اور انٹیگریشن کے بہاؤ کے لیے دونوں ضروری ہیں۔
انسٹال لنکس
انسٹال لنکس ایک براہِ راست URL فراہم کرتے ہیں جسے تاجر آپ کی ایپ انسٹال کرنے کے لیے استعمال کر سکتے ہیں۔ جب کوئی صارف انسٹال لنک پر کلک کرتا ہے تو Stripe تنصیب کا عمل سنبھالتا ہے اور پھر صارف کو آپ کے بتائے گئے URI پر واپس بھیج دیتا ہے۔
پیشگی شرائط
انسٹال لنکس استعمال کرنے سے پہلے اپنے ایپ مینی فیسٹ میں allowed_redirect_uris کنفیگر کریں:
{ "id": "com.tajo.brevo-integration", "allowed_redirect_uris": [ "https://tajo.io/stripe/callback", "https://tajo.io/stripe/oauth/complete" ]}انسٹال لنک کا فارمیٹ
https://marketplace.stripe.com/oauth/v2/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&state=STATE_VALUE| پیرامیٹر | لازمی | تفصیل |
|---|---|---|
client_id | ہاں | آپ کی ایپ کی ID (مثلاً com.tajo.brevo-integration) |
redirect_uri | ہاں | آپ کے allowed_redirect_uris میں سے کسی ایک سے میل کھانا چاہیے |
state | تجویز کردہ | CSRF تحفظ کے لیے بے ترتیب اسٹرنگ |
ری ڈائریکٹ پیرامیٹرز
کامیاب تنصیب کے بعد Stripe صارف کو ان کوئری پیرامیٹرز کے ساتھ آپ کے redirect_uri پر بھیجتا ہے:
| پیرامیٹر | تفصیل |
|---|---|
user_id | انسٹال کرنے والے اکاؤنٹ کی Stripe صارف ID |
account_id | Stripe اکاؤنٹ ID (مثلاً acct_xxxxx) |
state | وہ state قدر جو آپ نے دی تھی (CSRF تصدیق کے لیے) |
install_signature | HMAC دستخط جو تصدیق کرتا ہے کہ تنصیب جائز ہے |
ری ڈائریکٹ URL کی مثال:
https://tajo.io/stripe/callback ?user_id=usr_xxxxx &account_id=acct_xxxxx &state=abc123random &install_signature=sig_xxxxxCSRF تحفظ
کراس سائٹ ریکویسٹ فورجری حملوں سے بچنے کے لیے ہمیشہ state پیرامیٹر استعمال کریں:
import crypto from 'crypto';
// Generate a random state value and store it in the sessionconst generateInstallLink = (req, res) => { const state = crypto.randomBytes(32).toString('hex');
// Store state in session for later verification req.session.stripeInstallState = state;
const installUrl = new URL('https://marketplace.stripe.com/oauth/v2/authorize'); installUrl.searchParams.set('client_id', 'com.tajo.brevo-integration'); installUrl.searchParams.set('redirect_uri', 'https://tajo.io/stripe/callback'); installUrl.searchParams.set('state', state);
res.redirect(installUrl.toString());};
// Handle the redirect callbackconst handleInstallCallback = async (req, res) => { const { state, user_id, account_id, install_signature } = req.query;
// Verify state matches what we stored if (state !== req.session.stripeInstallState) { return res.status(403).json({ error: 'Invalid state parameter' }); }
// Clear the stored state delete req.session.stripeInstallState;
// Verify the install signature if (!verifyInstallSignature(install_signature, account_id)) { return res.status(403).json({ error: 'Invalid install signature' }); }
// Process the successful installation await processInstallation(user_id, account_id);
res.redirect('/dashboard/stripe-connected');};دستخط کی تصدیق
اپنی ایپ کے سائننگ سیکرٹ کی مدد سے install_signature کی تصدیق کریں:
import crypto from 'crypto';
const verifyInstallSignature = (signature, accountId) => { const signingSecret = process.env.STRIPE_APP_SIGNING_SECRET;
const expectedSignature = crypto .createHmac('sha256', signingSecret) .update(accountId) .digest('hex');
return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expectedSignature) );};Caution
ٹائمنگ حملوں سے بچنے کے لیے دستخط کے موازنے کے واسطے ہمیشہ crypto.timingSafeEqual استعمال کریں۔ سادہ اسٹرنگ برابری (===) کبھی استعمال نہ کریں۔
سائننگ سیکرٹ
آپ کی ایپ کا سائننگ سیکرٹ Stripe Dashboard میں آپ کی ایپ کی سیٹنگز کے تحت دستیاب ہے۔ اسے ان کاموں کے لیے استعمال کریں:
- ری ڈائریکٹ کال بیکس سے آنے والے انسٹال دستخطوں کی تصدیق
- Stripe سے آنے والے ویب ہک پے لوڈز کی توثیق
- اپنے بیک اینڈ اور Stripe کے درمیان درخواستوں کی توثیق
سائننگ سیکرٹ محفوظ طریقے سے رکھیں:
# Set as environment variableexport STRIPE_APP_SIGNING_SECRET="whsec_xxxxx"سائننگ سیکرٹس کو اپنے سورس کوڈ میں کبھی ہارڈ کوڈ نہ کریں اور نہ ہی ورژن کنٹرول میں کمٹ کریں۔
ڈیپ لنکس
ڈیپ لنکس صارفین کو آپ کی انسٹال شدہ Stripe App کے اندر براہِ راست ایک مخصوص ویو تک لے جاتے ہیں۔ انہیں بیرونی رابطوں (ای میلز، نوٹیفکیشنز، سپورٹ صفحات) سے صارفین کو متعلقہ ایپ سیاق تک بھیجنے کے لیے استعمال کریں۔
ڈیپ لنک URL کا فارمیٹ
https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID| جزو | تفصیل | مثال |
|---|---|---|
MODE | live یا test | live |
acct_ID | ہدف Stripe اکاؤنٹ ID | acct_1234567890 |
PAGE | ڈیش بورڈ کے صفحے کا راستہ | customers/cus_xxxxx |
APP_ID | آپ کی ایپ کی ID | com.tajo.brevo-integration |
TARGET | drawer یا modal | drawer |
VIEWPORT_ID | کھولنے کے لیے ویو پورٹ | stripe.dashboard.customer.detail |
Drawer بمقابلہ Modal اہداف
| ہدف | طرزِ عمل | استعمال کا موقع |
|---|---|---|
drawer | ایپ کو سائیڈ پینل (drawer) میں کھولتا ہے | ایپ کے ساتھ عام تعامل، صفحے کے ساتھ ساتھ سیاق |
modal | ایپ کو پوری اسکرین کے modal اوورلے میں کھولتا ہے | مرکوز ورک فلوز، آن بورڈنگ، پیچیدہ فارمز |
ڈیپ لنک کی مثالیں
گاہک کی تفصیل کا ویو drawer میں کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx ?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detailسیٹنگز modal میں کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/settings ?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.settingsآن بورڈنگ کا بہاؤ کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/dashboard ?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.onboardingادائیگی کی تفصیل کا ویو ٹیسٹ موڈ میں کھولیں
https://dashboard.stripe.com/test/acct_xxxxx/payments/pi_xxxxx ?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.payment.detailپروگرام کے ذریعے ڈیپ لنکس بنانا
const generateDeepLink = ({ accountId, mode = 'live', page, appId = 'com.tajo.brevo-integration', target = 'drawer', viewport,}) => { const baseUrl = `https://dashboard.stripe.com/${mode}/${accountId}/${page}`; const params = new URLSearchParams(); params.set(`apps[${appId}][${target}]`, viewport);
return `${baseUrl}?${params.toString()}`;};
// Generate a link to view a customer's Brevo profileconst customerLink = generateDeepLink({ accountId: 'acct_xxxxx', page: 'customers/cus_xxxxx', viewport: 'stripe.dashboard.customer.detail',});
// Generate a link to app settingsconst settingsLink = generateDeepLink({ accountId: 'acct_xxxxx', page: 'settings', viewport: 'stripe.dashboard.settings', target: 'modal',});رابطوں میں ڈیپ لنکس کا استعمال
ڈیپ لنکس خاص طور پر ان جگہوں پر مفید ہیں:
- ای میل نوٹیفکیشنز: “اس گاہک کے لیے Brevo سنک کی حیثیت دیکھیں”
- سپورٹ کے جوابات: “اپنی انٹیگریشن سیٹنگز جانچنے کے لیے یہاں کلک کریں”
- آن بورڈنگ ای میلز: “اپنا Brevo سیٹ اپ مکمل کریں”
- خرابی کے الرٹس: “گاہک X کے لیے سنک کا مسئلہ دیکھیں”
<!-- Example in an email template --><a href="https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detail"> View Brevo Profile in Stripe</a>انسٹال لنکس اور ڈیپ لنکس کو ملانا
بہترین آن بورڈنگ تجربے کے لیے انسٹال لنکس کو تنصیب کے بعد کے ڈیپ لنکس کے ساتھ ملائیں:
- صارف آپ کی ویب سائٹ یا ای میل سے کسی انسٹال لنک پر کلک کرتا ہے
- صارف ایپ انسٹال کرتا ہے اور آپ کے کال بیک URL پر بھیج دیا جاتا ہے
- آپ کا کال بیک تنصیب پر کارروائی کرتا ہے اور صارف کو ایسے ڈیپ لنک پر بھیجتا ہے جو آن بورڈنگ ویو پورٹ کھولتا ہے
const handleInstallCallback = async (req, res) => { const { account_id, install_signature, state } = req.query;
// Verify state and signature // ... (verification code)
// Process installation await processInstallation(account_id);
// Redirect to the app's onboarding view via deep link const onboardingLink = generateDeepLink({ accountId: account_id, page: 'dashboard', viewport: 'stripe.dashboard.onboarding', target: 'modal', });
res.redirect(onboardingLink);};Tip
انسٹال لنکس اور ڈیپ لنکس کو ہمیشہ live اور test دونوں موڈز میں ٹیسٹ کریں تاکہ یقینی بنے کہ وہ ہر ماحول میں درست کام کرتے ہیں۔