Solicite acesso antecipado

Informe seu nome e um e-mail ou número de telefone. Entraremos em contato com os detalhes de acesso à Tajo.

Stripe Apps incorporados

Os Stripe Apps incorporados permitem que plataformas construídas sobre o Stripe Connect exibam funcionalidades de apps de terceiros dentro dos seus próprios painéis. Com os componentes incorporados do Connect, você dá às suas contas conectadas acesso a apps como QuickBooks, Xero e Mailchimp sem que elas precisem acessar o Stripe Dashboard.

Visão geral

Os apps incorporados usam dois componentes principais do Connect:

  • app-install: renderiza um botão de instalação de um Stripe App dentro da interface da sua plataforma
  • app-viewport: renderiza um viewport específico do app dentro da interface da sua plataforma

Isso permite que operadores de plataforma incorporem ferramentas de contabilidade, marketing e operação diretamente no seu produto.

Apps compatíveis

Os apps a seguir podem ser incorporados por meio dos componentes do Connect:

AppCategoriaCaso de uso
QuickBooksContabilidadeSincroniza pagamentos e faturas com o QuickBooks
XeroContabilidadeContabilidade e conciliação automatizadas
MailchimpMarketingSincroniza dados de clientes para campanhas de e-mail
Apps personalizadosQualquerSeus próprios Stripe Apps criados para a sua plataforma

Tip

A integração da Tajo com a Brevo pode ser incorporada em plataformas Connect, o que permite que as contas conectadas sincronizem seus dados da Stripe com a Brevo pela interface da própria plataforma.

Configuração com a Account Sessions API

Para incorporar apps, você precisa criar Account Sessions com os componentes adequados habilitados:

No servidor: criar a Account Session

const stripe = require('stripe')('sk_live_...');
// Create an Account Session for the connected account
const 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 frontend
res.json({ clientSecret: accountSession.client_secret });

No cliente: inicializar o Connect.js

import { loadConnectAndInitialize } from '@stripe/connect-js';
// Initialize Connect.js with the account session
const stripeConnect = loadConnectAndInitialize({
publishableKey: 'pk_live_...',
fetchClientSecret: async () => {
const response = await fetch('/api/account-session', {
method: 'POST',
});
const { clientSecret } = await response.json();
return clientSecret;
},
});

Componente app install

O componente app-install renderiza um botão de instalação que as contas conectadas podem usar para instalar um Stripe App:

JavaScript

// Create the app install element
const appInstall = stripeConnect.create('app-install');
// Set the app to install
appInstall.setApp('com.tajo.brevo-integration');
// Mount to a DOM element
const container = document.getElementById('app-install-container');
appInstall.mount(container);
// Listen for install events
appInstall.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>
);
};

Componente app viewport

O componente app-viewport renderiza um viewport específico do app dentro da sua plataforma:

JavaScript

// Create the app viewport element
const appViewport = stripeConnect.create('app-viewport');
// Configure the viewport
appViewport.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 element
const 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>
);
};

Schema de metadados de destination charges

Ao usar apps incorporados com destination charges (algo comum em plataformas Connect), os metadados da cobrança carregam dados estruturados que as integrações de contabilidade e marketing conseguem consumir.

Integrações de contabilidade

Em apps como QuickBooks e Xero, os metadados das destination charges seguem este 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"
}
}
CampoTipoDescrição
customer_idstringIdentificador do cliente na plataforma
customer_emailstringE-mail do cliente, usado para casar faturas e recibos
product_namestringNome de exibição do produto nos itens de linha
product_idstringID do produto na Stripe
quantitystringQuantidade do item
unit_amountstringPreço unitário na menor unidade da moeda (centavos)
currencystringCódigo ISO da moeda com três letras
platform_feestringValor da taxa da aplicação na menor unidade da moeda
platform_fee_currencystringMoeda da taxa da plataforma
tax_amountstringValor do imposto na menor unidade da moeda
tax_rate_idstringID da alíquota de imposto aplicada na Stripe
invoice_idstringID da fatura associada
order_idstringIdentificador interno do pedido na plataforma

Integrações de marketing

Em apps como o Mailchimp e a integração da Tajo com a Brevo, os metadados viabilizam a segmentação de clientes e a definição de público das campanhas:

{
"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"
}
}

Esses metadados viabilizam automações na Brevo como:

  • Série de boas-vindas para quem compra pela primeira vez (is_first_purchase: "true")
  • Campanhas de upsell com base em product_category e purchase_value
  • Fluxos de retenção para clientes de assinatura com base em subscription_interval
  • Campanhas de reconquista direcionadas a clientes com lifetime_value alto que cancelaram

Exemplo de integração em plataforma

Uma integração completa de plataforma incorporando o app Tajo para Brevo:

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>
);
};

Considerações de segurança

Ao incorporar apps na sua plataforma:

  • As Account Sessions expiram: crie novas sessões conforme a necessidade e não guarde client secrets em cache
  • Controle de escopo: use allowed_apps para restringir quais apps podem ser instalados
  • Isolamento de dados: os dados de cada conta conectada ficam isolados e a plataforma não acessa os dados do app
  • Cabeçalhos de CSP: garanta que a Content Security Policy da sua plataforma permita conexões com https://connect-js.stripe.com

Caution

Os componentes de apps incorporados exigem uma integração Connect com acesso à Account Sessions API. Contas Stripe padrão não podem usar componentes incorporados.

Solicite acesso antecipado

Informe seu nome e um e-mail ou número de telefone. Entraremos em contato com os detalhes de acesso à Tajo.

detecção automática
Assistente AI

Olá! Pergunte-me qualquer coisa sobre a documentação.