Embedded Stripe Apps

Embedded Stripe Apps ان پلیٹ فارمز کو جو Stripe Connect پر بنے ہیں اپنے dashboards میں براہ راست تھرڈ پارٹی app فعالیت پیش کرنے کی اجازت دیتے ہیں۔ Connect embedded components استعمال کرکے، آپ اپنے connected accounts کو QuickBooks، Xero اور Mailchimp جیسی apps تک رسائی دے سکتے ہیں بغیر انہیں Stripe Dashboard پر جانے کی ضرورت کے۔

جائزہ

Embedded apps دو اہم Connect embedded components استعمال کرتے ہیں:

  • app-install: آپ کے platform UI میں Stripe App کا install بٹن render کرتا ہے
  • app-viewport: آپ کے platform UI میں ایک مخصوص app viewport render کرتا ہے

یہ platform operators کو اپنی مصنوعات میں براہ راست اکاؤنٹنگ، مارکیٹنگ اور آپریشنل ٹولز شامل کرنے کی اجازت دیتا ہے۔

حمایت یافتہ Apps

مندرجہ ذیل apps Connect components کے ذریعے embedding کی حمایت کرتی ہیں:

Appزمرہاستعمال کا معاملہ
QuickBooksاکاؤنٹنگادائیگیاں اور انوائسز QuickBooks سے sync کریں
Xeroاکاؤنٹنگخودکار بک کیپنگ اور مفاہمت
Mailchimpمارکیٹنگای میل کمپینز کے لیے گاہک ڈیٹا sync کریں
Custom Appsکوئی بھیآپ کی اپنے پلیٹ فارم کے لیے بنی Stripe Apps

Tip

Tajo Brevo انٹیگریشن Connect platforms میں embedded ہو سکتی ہے، جس سے connected accounts پلیٹ فارم کے اپنے انٹرفیس کے ذریعے اپنا Stripe ڈیٹا Brevo میں sync کر سکتے ہیں۔

Account Sessions API کے ساتھ سیٹ اپ

Apps کو embed کرنے کے لیے، آپ کو مناسب components کے ساتھ Account Sessions بنانی ہوں گی:

Server-Side: Account Session بنائیں

const stripe = require('stripe')('sk_live_...');
// connected account کے لیے Account Session بنائیں
const accountSession = await stripe.accountSessions.create({
account: 'acct_connected_account_id',
components: {
// app install component فعال کریں
app_install: {
enabled: true,
features: {
allowed_apps: [
'com.tajo.brevo-integration',
'com.quickbooks.stripe-app'
],
},
},
// app viewport component فعال کریں
app_viewport: {
enabled: true,
features: {
allowed_apps: [
'com.tajo.brevo-integration'
],
},
},
},
});
// client secret کو frontend کو واپس کریں
res.json({ clientSecret: accountSession.client_secret });

Client-Side: Connect.js شروع کریں

import { loadConnectAndInitialize } from '@stripe/connect-js';
// account session کے ساتھ Connect.js شروع کریں
const stripeConnect = loadConnectAndInitialize({
publishableKey: 'pk_live_...',
fetchClientSecret: async () => {
const response = await fetch('/api/account-session', {
method: 'POST',
});
const { clientSecret } = await response.json();
return clientSecret;
},
});

App Install Component

app-install component ایک install بٹن render کرتا ہے جو connected accounts Stripe App انسٹال کرنے کے لیے استعمال کر سکتے ہیں:

JavaScript

// app install element بنائیں
const appInstall = stripeConnect.create('app-install');
// انسٹال کرنے کے لیے app سیٹ کریں
appInstall.setApp('com.tajo.brevo-integration');
// DOM element پر mount کریں
const container = document.getElementById('app-install-container');
appInstall.mount(container);
// install events سنیں
appInstall.on('app_installed', (event) => {
console.log('App installed:', event.app_id);
// انسٹالیشن کے بعد app viewport دکھائیں
showAppViewport();
});
appInstall.on('app_uninstalled', (event) => {
console.log('App uninstalled:', event.app_id);
});

React

import {
ConnectAppInstall,
ConnectComponentsProvider,
} from '@stripe/react-connect-js';
const AppInstallButton = () => {
return (
<ConnectComponentsProvider connectInstance={stripeConnect}>
<ConnectAppInstall
app="com.tajo.brevo-integration"
onAppInstalled={(event) => {
console.log('App installed:', event.app_id);
}}
onAppUninstalled={(event) => {
console.log('App uninstalled:', event.app_id);
}}
/>
</ConnectComponentsProvider>
);
};

App Viewport Component

app-viewport component آپ کے پلیٹ فارم میں ایک مخصوص app viewport render کرتا ہے:

JavaScript

// app viewport element بنائیں
const appViewport = stripeConnect.create('app-viewport');
// viewport کنفیگر کریں
appViewport.setApp('com.tajo.brevo-integration');
appViewport.setViewport('stripe.dashboard.customer.detail');
// object context پاس کریں (مثلاً customer ID)
appViewport.setObjectContext({
id: 'cus_xxxxx',
object: 'customer',
});
// DOM element پر mount کریں
const container = document.getElementById('app-viewport-container');
appViewport.mount(container);

React

import {
ConnectAppViewport,
ConnectComponentsProvider,
} from '@stripe/react-connect-js';
const BrevoCusomerView = ({ customerId }: { customerId: string }) => {
return (
<ConnectComponentsProvider connectInstance={stripeConnect}>
<ConnectAppViewport
app="com.tajo.brevo-integration"
viewport="stripe.dashboard.customer.detail"
objectContext={{
id: customerId,
object: 'customer',
}}
/>
</ConnectComponentsProvider>
);
};

Destination Charge Metadata Schema

Connect platforms میں destination charges کے ساتھ embedded apps استعمال کرتے وقت، charge metadata منظم ڈیٹا رکھتا ہے جسے اکاؤنٹنگ اور مارکیٹنگ انٹیگریشنز استعمال کر سکتی ہیں۔

اکاؤنٹنگ انٹیگریشنز

QuickBooks اور Xero جیسی apps کے لیے، destination charge metadata اس schema کی پیروی کرتا ہے:

{
"metadata": {
"customer_id": "cus_platform_customer_id",
"customer_email": "[email protected]",
"product_name": "Premium Subscription",
"product_id": "prod_xxxxx",
"quantity": "1",
"unit_amount": "4999",
"currency": "usd",
"platform_fee": "500",
"platform_fee_currency": "usd",
"tax_amount": "450",
"tax_rate_id": "txr_xxxxx",
"invoice_id": "inv_xxxxx",
"order_id": "order_12345"
}
}
فیلڈقسمتفصیل
customer_idstringپلیٹ فارم کا گاہک شناخت کنندہ
customer_emailstringانوائس/رسید مطابقت کے لیے گاہک کا ای میل
product_namestringلائن آئٹمز کے لیے مصنوع کا نام
product_idstringStripe product ID
quantitystringآئٹم کی تعداد
unit_amountstringکم ترین کرنسی یونٹ (cents) میں اکائی قیمت
currencystringتین حرفی ISO کرنسی کوڈ
platform_feestringکم ترین کرنسی یونٹ میں application fee کی رقم
platform_fee_currencystringپلیٹ فارم فیس کی کرنسی
tax_amountstringکم ترین کرنسی یونٹ میں ٹیکس کی رقم
tax_rate_idstringلاگو Stripe tax rate ID
invoice_idstringمتعلقہ invoice ID
order_idstringپلیٹ فارم کا اندرونی آرڈر شناخت کنندہ

مارکیٹنگ انٹیگریشنز

Mailchimp اور Tajo Brevo انٹیگریشن جیسی apps کے لیے، metadata گاہک کی تقسیم اور کمپین targeting کو فعال کرتا ہے:

{
"metadata": {
"customer_id": "cus_xxxxx",
"customer_email": "[email protected]",
"customer_name": "Jane Smith",
"product_category": "subscription",
"product_name": "Pro Plan",
"purchase_value": "4999",
"currency": "usd",
"is_first_purchase": "true",
"referral_source": "partner_campaign",
"subscription_interval": "monthly",
"lifetime_value": "29994"
}
}

یہ metadata Brevo automations کو ممکن بناتا ہے جیسے:

  • پہلی بار خریداروں کے لیے Welcome series (is_first_purchase: "true")
  • product_category اور purchase_value کی بنیاد پر Upsell campaigns
  • subscription_interval کی بنیاد پر subscription گاہکوں کے لیے Retention flows
  • اعلی lifetime_value والے گاہکوں کو target کرنے والی Win-back campaigns

پلیٹ فارم انٹیگریشن مثال

Tajo Brevo app کو embed کرنے والی مکمل پلیٹ فارم انٹیگریشن:

import { useState, useEffect } from 'react';
import {
ConnectAppInstall,
ConnectAppViewport,
ConnectComponentsProvider,
} from '@stripe/react-connect-js';
import { loadConnectAndInitialize } from '@stripe/connect-js';
const TajoBrevoPlatformIntegration = ({ connectedAccountId, customerId }) => {
const [stripeConnect, setStripeConnect] = useState(null);
const [isInstalled, setIsInstalled] = useState(false);
useEffect(() => {
const instance = loadConnectAndInitialize({
publishableKey: 'pk_live_...',
fetchClientSecret: async () => {
const res = await fetch('/api/account-session', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ accountId: connectedAccountId }),
});
const { clientSecret } = await res.json();
return clientSecret;
},
});
setStripeConnect(instance);
}, [connectedAccountId]);
if (!stripeConnect) return <div>Loading...</div>;
return (
<ConnectComponentsProvider connectInstance={stripeConnect}>
{!isInstalled ? (
<div>
<h3>Connect Brevo via Tajo</h3>
<p>Install the Tajo integration to sync customer data with Brevo.</p>
<ConnectAppInstall
app="com.tajo.brevo-integration"
onAppInstalled={() => setIsInstalled(true)}
/>
</div>
) : (
<div>
<h3>Brevo Customer Profile</h3>
<ConnectAppViewport
app="com.tajo.brevo-integration"
viewport="stripe.dashboard.customer.detail"
objectContext={{
id: customerId,
object: 'customer',
}}
/>
</div>
)}
</ConnectComponentsProvider>
);
};

سیکیورٹی کے تحفظات

اپنے پلیٹ فارم میں apps embed کرتے وقت:

  • Account Sessions ختم ہو جاتی ہیں: ضرورت کے مطابق نئی sessions بنائیں؛ client secrets cache نہ کریں
  • Scope control: کون سی apps انسٹال ہو سکتی ہیں محدود کرنے کے لیے allowed_apps استعمال کریں
  • ڈیٹا کی علیحدگی: ہر connected account کا ڈیٹا الگ ہوتا ہے؛ پلیٹ فارم app ڈیٹا تک رسائی نہیں کر سکتا
  • CSP headers: یقینی بنائیں کہ آپ کے پلیٹ فارم کی Content Security Policy https://connect-js.stripe.com سے connections کی اجازت دیتی ہے

Caution

Embedded app components کو Account Sessions API رسائی کے ساتھ Connect انٹیگریشن کی ضرورت ہوتی ہے۔ معیاری Stripe اکاؤنٹس embedded components استعمال نہیں کر سکتے۔

Subscribe to updates

developer-docs

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

AI معاون

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

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