Install Links & Deep Links
Install links آپ کو marketplace سے باہر اپنی Stripe App تقسیم کرنے کی اجازت دیتے ہیں، جبکہ deep links صارفین کو آپ کی انسٹال شدہ app کے اندر مخصوص views پر براہ راست navigate کراتے ہیں۔ دونوں ہموار onboarding اور انٹیگریشن flows کے لیے ضروری ہیں۔
Install Links
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" ]}Install Link فارمیٹ
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_id | Stripe 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_xxxxxCSRF تحفظ
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 محفوظ طریقے سے محفوظ کریں:
# environment variable کے طور پر سیٹ کریںexport STRIPE_APP_SIGNING_SECRET="whsec_xxxxx"Signing secrets کو source code میں hardcode نہ کریں یا version control میں commit نہ کریں۔
Deep Links
Deep links صارفین کو آپ کی انسٹال شدہ Stripe App کے اندر ایک مخصوص view پر براہ راست navigate کراتے ہیں۔ انہیں بیرونی مواصلات (ای میلز، نوٹیفکیشنز، سپورٹ صفحات) سے صارفین کو متعلقہ app context میں ہدایت کرنے کے لیے استعمال کریں۔
Deep Link URL فارمیٹ
https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID| جزو | تفصیل | مثال |
|---|---|---|
MODE | live یا test | live |
acct_ID | ہدف Stripe account ID | acct_1234567890 |
PAGE | Dashboard صفحہ کا راستہ | customers/cus_xxxxx |
APP_ID | آپ کی app کی ID | com.tajo.brevo-integration |
TARGET | drawer یا modal | drawer |
VIEWPORT_ID | کھولنے کے لیے viewport | stripe.dashboard.customer.detail |
Drawer بمقابلہ Modal Targets
| Target | رویہ | استعمال کا معاملہ |
|---|---|---|
drawer | app کو side panel (drawer) میں کھولتا ہے | پہلے سے طے شدہ app تعامل، صفحے کے ساتھ ساتھ context |
modal | app کو پورے اسکرین modal overlay میں کھولتا ہے | مرکوز workflows، onboarding، پیچیدہ forms |
Deep Link مثالیں
drawer میں customer detail view کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx ?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detailmodal میں settings کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/settings ?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.settingsonboarding flow کھولیں
https://dashboard.stripe.com/live/acct_xxxxx/dashboard ?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.onboardingپروگرامی طور پر Deep Links بنائیں
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 کا استعمال
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>Install Links اور Deep Links کو یکجا کریں
بہترین onboarding تجربے کے لیے، install links کو post-install deep links کے ساتھ ملائیں:
- صارف آپ کی ویب سائٹ یا ای میل سے install link پر کلک کرتا ہے
- صارف app انسٹال کرتا ہے اور آپ کے callback URL پر redirect ہو جاتا ہے
- آپ کا 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 کو ہمیشہ جانچیں۔