---
title: "انسٹال لنکس اور ڈیپ لنکس | Tajo"
description: "ایپ کی تقسیم کے لیے انسٹال URLs بنائیں اور صارفین کو ایپ کے مخصوص ویوز تک لے جانے والے ڈیپ لنکس تیار کریں"
url: https://tajo.io/ur/docs/stripe-apps/install-links/
markdown: https://tajo.io/ur/docs/stripe-apps/install-links.md
lang: ur-PK
author: "Set Noa"
author_url: https://tajo.io/ur/set-noa/
robots: noindex
---

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

اپنا پہلا نام اور دفتری ای میل پتہ درج کریں۔ ہم Tajo تک رسائی کی درخواست کی تصدیق کے لیے ایک لنک ای میل کریں گے۔

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

[Set Noa](https://tajo.io/ur/set-noa/)

انسٹال لنکس کی مدد سے آپ اپنی Stripe App مارکیٹ پلیس سے باہر تقسیم کر سکتے ہیں، جبکہ ڈیپ لنکس صارفین کو آپ کی انسٹال شدہ ایپ کے اندر براہِ راست مخصوص ویوز تک لے جاتے ہیں۔ ہموار آن بورڈنگ اور انٹیگریشن کے بہاؤ کے لیے دونوں ضروری ہیں۔

Caution

**صورتحال: منصوبہ بند، ابھی تیار نہیں ہوا۔** Tajo کی کوئی Stripe App نہیں ہے، اس لیے اس سیکشن کی کوئی چیز آج انسٹال نہیں کی جا سکتی۔ اس صفحے میں دیے گئے ایپ کے شناخت کار، URLs اور کریڈنشلز مثال کے طور پر رکھے گئے پلیس ہولڈرز ہیں، لائیو اینڈ پوائنٹس نہیں۔

## انسٹال لنکس

انسٹال لنکس ایک براہِ راست URL فراہم کرتے ہیں جسے تاجر آپ کی ایپ انسٹال کرنے کے لیے استعمال کر سکتے ہیں۔ جب کوئی صارف انسٹال لنک پر کلک کرتا ہے تو Stripe تنصیب کا عمل سنبھالتا ہے اور پھر صارف کو آپ کے بتائے گئے URI پر واپس بھیج دیتا ہے۔

### پیشگی شرائط

انسٹال لنکس استعمال کرنے سے پہلے اپنے ایپ مینی فیسٹ میں `allowed_redirect_uris` کنفیگر کریں:

```json
{
  "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_xxxxx
```

### CSRF تحفظ

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

```javascript
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` کی تصدیق کریں:

```javascript
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 کے درمیان درخواستوں کی توثیق

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

```bash
# 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
```

| جزو | تفصیل | مثال |
| --- | --- | --- |
| `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
```

### پروگرام کے ذریعے ڈیپ لنکس بنانا

```javascript
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 کے لیے سنک کا مسئلہ دیکھیں”

```html
<!-- 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. آپ کا کال بیک تنصیب پر کارروائی کرتا ہے اور صارف کو ایسے **ڈیپ لنک** پر بھیجتا ہے جو آن بورڈنگ ویو پورٹ کھولتا ہے

```javascript
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 دونوں موڈز میں ٹیسٹ کریں تاکہ یقینی بنے کہ وہ ہر ماحول میں درست کام کرتے ہیں۔
