Gömülü Stripe Uygulamaları
Gömülü Stripe Apps, Stripe Connect üzerine kurulu platformların üçüncü taraf uygulama işlevlerini doğrudan kendi panellerinde sunmasına olanak tanır. Connect gömülü bileşenlerini kullanarak, bağlı hesaplarınıza Stripe panelini ziyaret etmelerine gerek kalmadan QuickBooks, Xero ve Mailchimp gibi uygulamalara erişim verebilirsiniz.
Genel bakış
Gömülü uygulamalar iki temel Connect gömülü bileşenini kullanır:
app-install: Platform arayüzünüzde bir Stripe App için kurulum düğmesi oluştururapp-viewport: Platform arayüzünüzde belirli bir uygulama görünümü oluşturur
Bu, platform operatörlerinin muhasebe, pazarlama ve operasyon araçlarını doğrudan ürünlerine gömmesini sağlar.
Desteklenen uygulamalar
Aşağıdaki uygulamalar Connect bileşenleri aracılığıyla gömülmeyi destekler:
| Uygulama | Kategori | Kullanım senaryosu |
|---|---|---|
| QuickBooks | Muhasebe | Ödemeleri ve faturaları QuickBooks’a senkronize edin |
| Xero | Muhasebe | Otomatik defter tutma ve mutabakat |
| Mailchimp | Pazarlama | E-posta kampanyaları için müşteri verisi senkronizasyonu |
| Özel uygulamalar | Herhangi | Platformunuz için geliştirdiğiniz kendi Stripe Apps uygulamalarınız |
Tip
Tajo Brevo entegrasyonu Connect platformlarına gömülebilir; böylece bağlı hesaplar Stripe verilerini platformun kendi arayüzü üzerinden Brevo’ya senkronize edebilir.
Account Sessions API ile kurulum
Uygulamaları gömmek için, uygun bileşenlerin etkinleştirildiği Account Sessions oluşturmanız gerekir:
Sunucu tarafı: Account Session oluşturma
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 });İstemci tarafı: Connect.js’i başlatma
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 bileşeni
app-install bileşeni, bağlı hesapların bir Stripe App kurmak için kullanabileceği bir kurulum düğmesi oluşturur:
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 bileşeni
app-viewport bileşeni, platformunuz içinde belirli bir uygulama görünümü oluşturur:
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> );};Destination charge meta veri şeması
Gömülü uygulamaları destination charge ile birlikte kullanırken (Connect platformlarında yaygındır), ödeme meta verisi muhasebe ve pazarlama entegrasyonlarının tüketebileceği yapılandırılmış veriler taşır.
Muhasebe entegrasyonları
QuickBooks ve Xero gibi uygulamalar için destination charge meta verisi şu şemayı izler:
{ "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" }}| Alan | Tür | Açıklama |
|---|---|---|
customer_id | string | Platformun müşteri tanımlayıcısı |
customer_email | string | Fatura/makbuz eşleştirmesi için müşteri e-postası |
product_name | string | Satır öğeleri için ürün görünen adı |
product_id | string | Stripe ürün kimliği |
quantity | string | Ürün adedi |
unit_amount | string | En küçük para birimi biriminde (kuruş) birim fiyat |
currency | string | Üç harfli ISO para birimi kodu |
platform_fee | string | En küçük para birimi biriminde uygulama ücreti tutarı |
platform_fee_currency | string | Platform ücretinin para birimi |
tax_amount | string | En küçük para birimi biriminde vergi tutarı |
tax_rate_id | string | Uygulanan Stripe vergi oranı kimliği |
invoice_id | string | İlişkili fatura kimliği |
order_id | string | Platformun dahili sipariş tanımlayıcısı |
Pazarlama entegrasyonları
Mailchimp ve Tajo Brevo entegrasyonu gibi uygulamalar için meta veri, müşteri segmentasyonunu ve kampanya hedeflemesini mümkün kılar:
{ "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" }}Bu meta veri, şu gibi Brevo otomasyonlarını mümkün kılar:
- İlk kez satın alanlar için karşılama serileri (
is_first_purchase: "true") product_categoryvepurchase_valuedeğerlerine dayalı çapraz satış kampanyalarısubscription_intervaldeğerine göre abonelik müşterileri için elde tutma akışları- Ayrılan yüksek
lifetime_valuemüşterilerini hedefleyen geri kazanım kampanyaları
Platform entegrasyonu örneği
Tajo Brevo uygulamasını gömen eksiksiz bir platform entegrasyonu:
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> );};Güvenlik hususları
Uygulamaları platformunuza gömerken:
- Account Sessions süresi dolar: Gerektikçe yeni oturumlar oluşturun, client secret değerlerini önbelleğe almayın
- Kapsam denetimi: Hangi uygulamaların kurulabileceğini kısıtlamak için
allowed_appskullanın - Veri yalıtımı: Her bağlı hesabın verisi yalıtılmıştır, platform uygulama verisine erişemez
- CSP başlıkları: Platformunuzun içerik güvenliği politikasının
https://connect-js.stripe.comadresine bağlantılara izin verdiğinden emin olun
Caution
Gömülü uygulama bileşenleri, Account Sessions API erişimi olan bir Connect entegrasyonu gerektirir. Standart Stripe hesapları gömülü bileşenleri kullanamaz.