ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور ای میل یا فون نمبر درج کریں۔ ہم Tajo تک رسائی کی تفصیلات کے ساتھ آپ سے رابطہ کریں گے۔

انسٹال لنکس اور ڈیپ لنکس

انسٹال لنکس کی مدد سے آپ اپنی 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_idStripe اکاؤنٹ ID (مثلاً acct_xxxxx)
stateوہ state قدر جو آپ نے دی تھی (CSRF تصدیق کے لیے)
install_signatureHMAC دستخط جو تصدیق کرتا ہے کہ تنصیب جائز ہے

ری ڈائریکٹ URL کی مثال:

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

CSRF تحفظ

کراس سائٹ ریکویسٹ فورجری حملوں سے بچنے کے لیے ہمیشہ state پیرامیٹر استعمال کریں:

import crypto from 'crypto';
// Generate a random state value and store it in the session
const 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 callback
const 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 کے درمیان درخواستوں کی توثیق

سائننگ سیکرٹ محفوظ طریقے سے رکھیں:

Terminal window
# Set as environment variable
export STRIPE_APP_SIGNING_SECRET="whsec_xxxxx"

سائننگ سیکرٹس کو اپنے سورس کوڈ میں کبھی ہارڈ کوڈ نہ کریں اور نہ ہی ورژن کنٹرول میں کمٹ کریں۔

ڈیپ لنکس

ڈیپ لنکس صارفین کو آپ کی انسٹال شدہ Stripe App کے اندر براہِ راست ایک مخصوص ویو تک لے جاتے ہیں۔ انہیں بیرونی رابطوں (ای میلز، نوٹیفکیشنز، سپورٹ صفحات) سے صارفین کو متعلقہ ایپ سیاق تک بھیجنے کے لیے استعمال کریں۔

ڈیپ لنک URL کا فارمیٹ

https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID
جزوتفصیلمثال
MODElive یا testlive
acct_IDہدف Stripe اکاؤنٹ IDacct_1234567890
PAGEڈیش بورڈ کے صفحے کا راستہcustomers/cus_xxxxx
APP_IDآپ کی ایپ کی IDcom.tajo.brevo-integration
TARGETdrawer یا modaldrawer
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 profile
const customerLink = generateDeepLink({
accountId: 'acct_xxxxx',
page: 'customers/cus_xxxxx',
viewport: 'stripe.dashboard.customer.detail',
});
// Generate a link to app settings
const 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>

انسٹال لنکس اور ڈیپ لنکس کو ملانا

بہترین آن بورڈنگ تجربے کے لیے انسٹال لنکس کو تنصیب کے بعد کے ڈیپ لنکس کے ساتھ ملائیں:

  1. صارف آپ کی ویب سائٹ یا ای میل سے کسی انسٹال لنک پر کلک کرتا ہے
  2. صارف ایپ انسٹال کرتا ہے اور آپ کے کال بیک URL پر بھیج دیا جاتا ہے
  3. آپ کا کال بیک تنصیب پر کارروائی کرتا ہے اور صارف کو ایسے ڈیپ لنک پر بھیجتا ہے جو آن بورڈنگ ویو پورٹ کھولتا ہے
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 دونوں موڈز میں ٹیسٹ کریں تاکہ یقینی بنے کہ وہ ہر ماحول میں درست کام کرتے ہیں۔

ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور ای میل یا فون نمبر درج کریں۔ ہم Tajo تک رسائی کی تفصیلات کے ساتھ آپ سے رابطہ کریں گے۔

خودکار شناخت
AI معاون

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