Install Links & Deep Links

Install links آپ کو marketplace سے باہر اپنی Stripe App تقسیم کرنے کی اجازت دیتے ہیں، جبکہ deep links صارفین کو آپ کی انسٹال شدہ app کے اندر مخصوص views پر براہ راست navigate کراتے ہیں۔ دونوں ہموار onboarding اور انٹیگریشن flows کے لیے ضروری ہیں۔

Install links ایک براہ راست URL فراہم کرتے ہیں جو merchants آپ کی app انسٹال کرنے کے لیے استعمال کر سکتے ہیں۔ جب کوئی صارف install link پر کلک کرتا ہے، Stripe انسٹالیشن فلو سنبھالتا ہے اور پھر آپ کے مخصوص URI پر واپس redirect کرتا ہے۔

ضروری شرائط

Install links استعمال کرنے سے پہلے، اپنے app manifest میں 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ہاںآپ کی app ID (مثلاً com.tajo.brevo-integration)
redirect_uriہاںآپ کے allowed_redirect_uris میں سے ایک سے مطابقت ہونی چاہیے
stateتجویز شدہCSRF تحفظ کے لیے بے ترتیب string

Redirect پیرامیٹرز

کامیاب انسٹالیشن کے بعد، Stripe صارف کو آپ کے redirect_uri پر ان query پیرامیٹرز کے ساتھ redirect کرتا ہے:

پیرامیٹرتفصیل
user_idانسٹال کرنے والے اکاؤنٹ کا Stripe user ID
account_idStripe account ID (مثلاً acct_xxxxx)
stateآپ کا فراہم کردہ state قدر (CSRF تصدیق کے لیے)
install_signatureانسٹالیشن کو جائز ثابت کرنے کی HMAC دستخط

مثال redirect URL:

https://tajo.io/stripe/callback
?user_id=usr_xxxxx
&account_id=acct_xxxxx
&state=abc123random
&install_signature=sig_xxxxx

CSRF تحفظ

Cross-site request forgery حملوں کو روکنے کے لیے ہمیشہ state پیرامیٹر استعمال کریں:

import crypto from 'crypto';
// بے ترتیب state قدر بنائیں اور session میں محفوظ کریں
const generateInstallLink = (req, res) => {
const state = crypto.randomBytes(32).toString('hex');
// بعد میں تصدیق کے لیے session میں state محفوظ کریں
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());
};
// redirect callback سنبھالیں
const handleInstallCallback = (req, res) => {
const { state, user_id, account_id, install_signature } = req.query;
// تصدیق کریں کہ state محفوظ کردہ سے مطابقت رکھتا ہے
if (state !== req.session.stripeInstallState) {
return res.status(403).json({ error: 'Invalid state parameter' });
}
// محفوظ کردہ state صاف کریں
delete req.session.stripeInstallState;
// install signature تصدیق کریں
if (!verifyInstallSignature(install_signature, account_id)) {
return res.status(403).json({ error: 'Invalid install signature' });
}
// کامیاب انسٹالیشن پروسیس کریں
await processInstallation(user_id, account_id);
res.redirect('/dashboard/stripe-connected');
};

دستخط کی تصدیق

اپنے app کے signing secret کا استعمال کرتے ہوئے 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

Timing attacks کو روکنے کے لیے دستخط موازنہ کے لیے ہمیشہ crypto.timingSafeEqual استعمال کریں۔ کبھی بھی سادہ string equality (===) استعمال نہ کریں۔

Signing Secret

آپ کی app کا signing secret Stripe Dashboard میں آپ کی app کی ترتیبات کے تحت دستیاب ہے۔ اسے استعمال کریں:

  • redirect callbacks سے install signatures کی تصدیق کے لیے
  • Stripe کے webhook payloads کی تصدیق کے لیے
  • آپ کے backend اور Stripe کے درمیان requests کی توثیق کے لیے

Signing secret محفوظ طریقے سے محفوظ کریں:

Terminal window
# environment variable کے طور پر سیٹ کریں
export STRIPE_APP_SIGNING_SECRET="whsec_xxxxx"

Signing secrets کو source code میں hardcode نہ کریں یا version control میں commit نہ کریں۔

Deep links صارفین کو آپ کی انسٹال شدہ Stripe App کے اندر ایک مخصوص view پر براہ راست navigate کراتے ہیں۔ انہیں بیرونی مواصلات (ای میلز، نوٹیفکیشنز، سپورٹ صفحات) سے صارفین کو متعلقہ app context میں ہدایت کرنے کے لیے استعمال کریں۔

https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID
جزوتفصیلمثال
MODElive یا testlive
acct_IDہدف Stripe account IDacct_1234567890
PAGEDashboard صفحہ کا راستہcustomers/cus_xxxxx
APP_IDآپ کی app کی IDcom.tajo.brevo-integration
TARGETdrawer یا modaldrawer
VIEWPORT_IDکھولنے کے لیے viewportstripe.dashboard.customer.detail

Drawer بمقابلہ Modal Targets

Targetرویہاستعمال کا معاملہ
drawerapp کو side panel (drawer) میں کھولتا ہےپہلے سے طے شدہ app تعامل، صفحے کے ساتھ ساتھ context
modalapp کو پورے اسکرین modal overlay میں کھولتا ہےمرکوز workflows، onboarding، پیچیدہ forms

drawer میں customer detail view کھولیں

https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx
?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detail
https://dashboard.stripe.com/live/acct_xxxxx/settings
?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.settings

onboarding flow کھولیں

https://dashboard.stripe.com/live/acct_xxxxx/dashboard
?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.onboarding
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()}`;
};
// گاہک کا Brevo profile دیکھنے کا link بنائیں
const customerLink = generateDeepLink({
accountId: 'acct_xxxxx',
page: 'customers/cus_xxxxx',
viewport: 'stripe.dashboard.customer.detail',
});
// app settings کا link بنائیں
const settingsLink = generateDeepLink({
accountId: 'acct_xxxxx',
page: 'settings',
viewport: 'stripe.dashboard.settings',
target: 'modal',
});

Deep links خاص طور پر مندرجہ ذیل میں مفید ہیں:

  • ای میل نوٹیفکیشنز: “اس گاہک کے لیے Brevo sync status دیکھیں”
  • سپورٹ جوابات: “اپنی انٹیگریشن ترتیبات چیک کرنے کے لیے یہاں کلک کریں”
  • Onboarding ای میلز: “اپنا Brevo سیٹ اپ مکمل کریں”
  • Error alerts: “گاہک X کے sync مسئلہ کا جائزہ لیں”
<!-- ای میل 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>

بہترین onboarding تجربے کے لیے، install links کو post-install deep links کے ساتھ ملائیں:

  1. صارف آپ کی ویب سائٹ یا ای میل سے install link پر کلک کرتا ہے
  2. صارف app انسٹال کرتا ہے اور آپ کے callback URL پر redirect ہو جاتا ہے
  3. آپ کا callback انسٹالیشن پروسیس کرتا ہے اور صارف کو ایک deep link پر redirect کرتا ہے جو onboarding viewport کھولتا ہے
const handleInstallCallback = async (req, res) => {
const { account_id, install_signature, state } = req.query;
// state اور signature کی تصدیق کریں
// ... (verification code)
// انسٹالیشن پروسیس کریں
await processInstallation(account_id);
// deep link کے ذریعے app کے onboarding view پر redirect کریں
const onboardingLink = generateDeepLink({
accountId: account_id,
page: 'dashboard',
viewport: 'stripe.dashboard.onboarding',
target: 'modal',
});
res.redirect(onboardingLink);
};

Tip

تمام ماحول میں صحیح کام کو یقینی بنانے کے لیے live اور test دونوں موڈز میں install links اور deep links کو ہمیشہ جانچیں۔

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔

Brevo کے ساتھ مفت شروع کریں