Beágyazott Stripe Appok
A beágyazott Stripe Appok segítségével a Stripe Connectre épülő platformok a saját felületükön belül kínálhatják külső alkalmazások funkcióit. A Connect beágyazott komponenseivel a kapcsolt fiókjaid úgy érhetnek el olyan alkalmazásokat, mint a QuickBooks, a Xero vagy a Mailchimp, hogy közben nem kell felkeresniük a Stripe Dashboardot.
Áttekintés
A beágyazott alkalmazások két fontos Connect beágyazott komponenst használnak:
app-install: telepítés gombot jelenít meg egy Stripe Apphoz a saját platformod felületénapp-viewport: egy adott alkalmazásnézetet jelenít meg a saját platformod felületén
Így a platformüzemeltetők közvetlenül a termékükbe ágyazhatják a könyvelési, marketing- és üzemeltetési eszközöket.
Támogatott alkalmazások
A következő alkalmazások támogatják a Connect komponensekkel való beágyazást:
| Alkalmazás | Kategória | Felhasználási eset |
|---|---|---|
| QuickBooks | Könyvelés | Fizetések és számlák szinkronizálása a QuickBooksba |
| Xero | Könyvelés | Automatizált könyvelés és egyeztetés |
| Mailchimp | Marketing | Vásárlói adatok szinkronizálása e-mail kampányokhoz |
| Egyedi alkalmazások | Bármi | A platformodra épített saját Stripe Appjaid |
Tip
A Tajo Brevo integráció beágyazható a Connect platformokba, így a kapcsolt fiókok a platform saját felületén keresztül szinkronizálhatják a Stripe adataikat a Brevóba.
Beállítás az Account Sessions API-val
Az alkalmazások beágyazásához Account Session objektumokat kell létrehoznod, a megfelelő komponensek engedélyezésével:
Szerveroldalon: Account Session létrehozása
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 });Kliensoldalon: a Connect.js inicializálása
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 komponens
Az app-install komponens olyan telepítés gombot jelenít meg, amellyel a kapcsolt fiókok telepíthetnek egy Stripe Appot:
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 komponens
Az app-viewport komponens egy adott alkalmazásnézetet jelenít meg a platformodon belül:
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> );};A destination charge metaadat-sémája
Ha a beágyazott alkalmazásokat destination charge terhelésekkel használod (ez gyakori a Connect platformokon), a terhelés metaadatai strukturált adatot hordoznak, amit a könyvelési és marketingintegrációk fel tudnak dolgozni.
Könyvelési integrációk
A QuickBookshoz és a Xeróhoz hasonló alkalmazásoknál a destination charge metaadatai ezt a sémát követik:
{ "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" }}| Mező | Típus | Leírás |
|---|---|---|
customer_id | string | A platform vásárlóazonosítója |
customer_email | string | A vásárló e-mail címe a számla és a nyugta párosításához |
product_name | string | A termék megjelenítendő neve a tételsorokhoz |
product_id | string | Stripe termékazonosító |
quantity | string | A tétel mennyisége |
unit_amount | string | Egységár a pénznem legkisebb egységében (fillérben) |
currency | string | Hárombetűs ISO pénznemkód |
platform_fee | string | Az alkalmazásdíj a pénznem legkisebb egységében |
platform_fee_currency | string | Az alkalmazásdíj pénzneme |
tax_amount | string | Az adó összege a pénznem legkisebb egységében |
tax_rate_id | string | Az alkalmazott Stripe adókulcs azonosítója |
invoice_id | string | A kapcsolódó számla azonosítója |
order_id | string | A platform belső rendelésazonosítója |
Marketingintegrációk
A Mailchimphez és a Tajo Brevo integrációhoz hasonló alkalmazásoknál a metaadatok teszik lehetővé a vásárlói szegmentálást és a kampánycélzást:
{ "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" }}Ezekkel a metaadatokkal például ilyen Brevo automatizálásokat építhetsz:
- Üdvözlő sorozat az első vásárlóknak (
is_first_purchase: "true") - Upsell kampányok a
product_categoryés apurchase_valuealapján - Megtartási folyamatok az előfizetőknek a
subscription_intervalalapján - Visszaszerző kampányok a magas
lifetime_valueértékű, elpártoló vásárlóknak
Példa platformintegrációra
Egy teljes platformintegráció, amely beágyazza a Tajo Brevo alkalmazást:
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> );};Biztonsági szempontok
Amikor alkalmazásokat ágyazol be a platformodba:
- Az Account Session lejár: hozz létre új munkamenetet, amikor kell, és ne gyorsítótárazd a client secret értékeket
- Hatókör szabályozása: az
allowed_appsmezővel korlátozd, mely alkalmazások telepíthetők - Adatok elkülönítése: minden kapcsolt fiók adata elkülönül, a platform nem fér hozzá az alkalmazás adataihoz
- CSP fejlécek: gondoskodj róla, hogy a platformod Content Security Policy szabálya engedje a
https://connect-js.stripe.comfelé irányuló kapcsolatot
Caution
A beágyazott alkalmazáskomponensekhez olyan Connect integráció kell, amely hozzáfér az Account Sessions API-hoz. A hagyományos Stripe fiókok nem használhatnak beágyazott komponenseket.