Innebygde Stripe Apps
Innebygde Stripe Apps lar plattformer bygget på Stripe Connect vise funksjonalitet fra tredjepartsapper direkte i sine egne dashboard. Med Connect innebygde komponenter kan du gi de tilkoblede kontoene dine tilgang til apper som QuickBooks, Xero og Mailchimp uten at de må innom Stripe Dashboard.
Oversikt
Innebygde apper bruker to sentrale innebygde Connect-komponenter:
app-install: Viser en installasjonsknapp for en Stripe App i plattform-grensesnittet dittapp-viewport: Viser et bestemt app-viewport i plattform-grensesnittet ditt
Slik kan plattformoperatører legge regnskaps-, markedsførings- og driftsverktøy rett inn i produktet sitt.
Apper som støttes
Disse appene kan bygges inn via Connect-komponenter:
| App | Kategori | Bruksområde |
|---|---|---|
| QuickBooks | Regnskap | Synkroniser betalinger og fakturaer til QuickBooks |
| Xero | Regnskap | Automatisert bokføring og avstemming |
| Mailchimp | Markedsføring | Synkroniser kundedata til e-postkampanjer |
| Egne apper | Alle | Dine egne Stripe Apps bygget for plattformen din |
Tip
Tajos Brevo-integrasjon kan bygges inn i Connect-plattformer, slik at tilkoblede kontoer kan synkronisere Stripe-dataene sine til Brevo gjennom plattformens eget grensesnitt.
Oppsett med Account Sessions API
For å bygge inn apper må du opprette Account Sessions med de riktige komponentene aktivert:
På serversiden: opprett en Account Session
const stripe = require('stripe')('sk_live_...');
// Create an Account Session for the connected accountconst accountSession = await stripe.accountSessions.create({ account: 'acct_connected_account_id', components: { // Enable app install component app_install: { enabled: true, features: { allowed_apps: [ 'com.tajo.brevo-integration', 'com.quickbooks.stripe-app' ], }, }, // Enable app viewport component app_viewport: { enabled: true, features: { allowed_apps: [ 'com.tajo.brevo-integration' ], }, }, },});
// Return the client secret to your frontendres.json({ clientSecret: accountSession.client_secret });På klientsiden: initialiser Connect.js
import { loadConnectAndInitialize } from '@stripe/connect-js';
// Initialize Connect.js with the account sessionconst 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-komponenten
Komponenten app-install viser en installasjonsknapp som tilkoblede kontoer kan bruke til å installere en Stripe App:
JavaScript
// Create the app install elementconst appInstall = stripeConnect.create('app-install');
// Set the app to installappInstall.setApp('com.tajo.brevo-integration');
// Mount to a DOM elementconst container = document.getElementById('app-install-container');appInstall.mount(container);
// Listen for install eventsappInstall.on('app_installed', (event) => { console.log('App installed:', event.app_id); // Show the app viewport after installation 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-komponenten
Komponenten app-viewport viser et bestemt app-viewport i plattformen din:
JavaScript
// Create the app viewport elementconst appViewport = stripeConnect.create('app-viewport');
// Configure the viewportappViewport.setApp('com.tajo.brevo-integration');appViewport.setViewport('stripe.dashboard.customer.detail');
// Pass object context (e.g., customer ID)appViewport.setObjectContext({ id: 'cus_xxxxx', object: 'customer',});
// Mount to a DOM elementconst container = document.getElementById('app-viewport-container');appViewport.mount(container);React
import { ConnectAppViewport, ConnectComponentsProvider,} from '@stripe/react-connect-js';
const BrevoCustomerView = ({ customerId }: { customerId: string }) => { return ( <ConnectComponentsProvider connectInstance={stripeConnect}> <ConnectAppViewport app="com.tajo.brevo-integration" viewport="stripe.dashboard.customer.detail" objectContext={{ id: customerId, object: 'customer', }} /> </ConnectComponentsProvider> );};Metadataskjema for destination charges
Når du bruker innebygde apper sammen med destination charges (vanlig i Connect-plattformer), bærer metadataene på belastningen strukturerte data som regnskaps- og markedsføringsintegrasjoner kan lese.
Regnskapsintegrasjoner
For apper som QuickBooks og Xero følger metadataene for destination charges dette skjemaet:
{ "metadata": { "customer_id": "cus_platform_customer_id", "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" }}| Felt | Type | Beskrivelse |
|---|---|---|
customer_id | string | Plattformens kundeidentifikator |
customer_email | string | Kundens e-post, brukt til å matche faktura og kvittering |
product_name | string | Produktnavnet som vises på ordrelinjene |
product_id | string | Produkt-ID i Stripe |
quantity | string | Antall enheter |
unit_amount | string | Enhetspris i minste valutaenhet (øre) |
currency | string | Valutakode etter ISO, tre bokstaver |
platform_fee | string | Applikasjonsgebyr i minste valutaenhet |
platform_fee_currency | string | Valuta for plattformgebyret |
tax_amount | string | Avgiftsbeløp i minste valutaenhet |
tax_rate_id | string | ID-en til avgiftssatsen i Stripe som er brukt |
invoice_id | string | ID-en til tilhørende faktura |
order_id | string | Plattformens interne ordreidentifikator |
Markedsføringsintegrasjoner
For apper som Mailchimp og Tajos Brevo-integrasjon gjør metadataene det mulig å segmentere kunder og målrette kampanjer:
{ "metadata": { "customer_id": "cus_xxxxx", "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" }}Disse metadataene gjør det mulig å kjøre Brevo-automatiseringer som:
- Velkomstserier for førstegangskjøpere (
is_first_purchase: "true") - Mersalgskampanjer basert på
product_categoryogpurchase_value - Lojalitetsflyter for abonnementskunder basert på
subscription_interval - Gjenvinningskampanjer rettet mot kunder med høy
lifetime_valuesom slutter
Eksempel på plattformintegrasjon
En komplett plattformintegrasjon som bygger inn Tajos Brevo-app:
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> );};Sikkerhetshensyn
Når du bygger inn apper i plattformen din:
- Account Sessions utløper: Opprett nye økter ved behov, og mellomlagre aldri client secrets
- Kontroller omfanget: Bruk
allowed_appstil å begrense hvilke apper som kan installeres - Dataisolasjon: Dataene til hver tilkoblede konto er isolert, og plattformen får ikke tilgang til appdataene
- CSP-headere: Sørg for at Content Security Policy i plattformen din tillater tilkoblinger til
https://connect-js.stripe.com
Caution
Innebygde app-komponenter krever en Connect-integrasjon med tilgang til Account Sessions API. Vanlige Stripe-kontoer kan ikke bruke innebygde komponenter.