Conector Stripe
Conector Stripe
Conecte sua conta Stripe ao Brevo via Tajo para sincronização completa de dados de pagamento, gestão do ciclo de vida de assinaturas e automação de marketing orientada por receita.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Stripe |
| Categoria | E-commerce |
| Complexidade de configuração | Fácil |
| Integração oficial | Sim |
| Dados sincronizados | Clientes, Pagamentos, Assinaturas, Faturas, Eventos |
| URL base da API | https://api.stripe.com/v1 |
Recursos
- Sincronização de clientes - Sincronize clientes do Stripe com contatos do Brevo incluindo metadados
- Rastreamento de pagamentos - Rastreie pagamentos bem-sucedidos, reembolsos e cobranças que falharam
- Gestão de assinaturas - Sincronize eventos do ciclo de vida de assinaturas para campanhas de retenção
- Dados de faturas - Sincronize detalhes de faturas para automação pós-compra e de renovação
- Atribuição de receita - Mapeie o valor vitalício e o MRR para atributos do Brevo
- Eventos por webhook - Notificações de eventos em tempo real para todas as atividades de pagamento
- Suporte multi-moeda - Gerencie pagamentos em várias moedas
- Rastreamento de sessões de checkout - Rastreie o Stripe Checkout para recuperação de pagamento abandonado
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta Stripe com acesso à API
- Chaves de API do Stripe (publishable e secret keys)
- Uma conta Brevo com acesso à API
- Uma conta Tajo
Autenticação
Autenticação por chave de API
O Stripe usa autenticação por bearer token com sua chave de API secreta.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Segurança da chave de API
Nunca exponha sua chave secreta em código do lado do cliente. Use a chave publishable para operações no frontend e a chave secreta apenas em seu servidor.
Chaves de API restritas
Crie chaves restritas com permissões específicas para maior segurança:
- Acesse Stripe Dashboard > Developers > API Keys
- Clique em “Create restricted key”
- Conceda apenas as permissões que o Tajo precisa
Permissões necessárias
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readConfiguração
Configuração básica
connectors: stripe: enabled: true secret_key: "${STRIPE_SECRET_KEY}" webhook_secret: "${STRIPE_WEBHOOK_SECRET}"
# Data sync options sync: customers: true payments: true subscriptions: true invoices: true products: true
# Brevo list assignment lists: all_customers: 20 subscribers: 21 churned: 22Mapeamento de campos
Mapeie dados de clientes do Stripe para atributos de contato do Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Endereço de e-mail do cliente (identificador único) |
name optional | string | Nome completo do cliente, dividido em FIRSTNAME/LASTNAME |
phone optional | string | Mapeia para o atributo SMS para WhatsApp/SMS |
currency optional | string | Moeda padrão do cliente |
created optional | timestamp | Data de criação do cliente no Stripe |
metadata optional | object | Metadados personalizados chave-valor do Stripe |
subscriptions optional | array | Detalhes de assinaturas ativas |
balance optional | integer | Saldo da conta do cliente em centavos |
Mapeamento de atributos personalizados
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Payment metrics total_spent: TOTAL_SPENT payment_count: PAYMENT_COUNT last_payment_date: LAST_PAYMENT_DATE average_order_value: AOV
# Subscription fields subscription_status: SUB_STATUS plan_name: PLAN_NAME mrr: MONTHLY_REVENUE subscription_start: SUB_START_DATE
# Custom metadata metadata.customer_tier: VIP_TIER metadata.referral_source: REFERRAL_SOURCEEndpoints da API
Endpoints principais
| Método | Endpoint | Descrição |
|---|---|---|
GET | /v1/customers | Listar todos os clientes |
POST | /v1/customers | Criar um cliente |
GET | /v1/customers/{id} | Recuperar um cliente |
POST | /v1/customers/{id} | Atualizar um cliente |
GET | /v1/charges | Listar todas as cobranças |
GET | /v1/payment_intents | Listar payment intents |
Endpoints de assinatura
| Método | Endpoint | Descrição |
|---|---|---|
GET | /v1/subscriptions | Listar assinaturas |
GET | /v1/subscriptions/{id} | Recuperar uma assinatura |
GET | /v1/invoices | Listar faturas |
GET | /v1/invoices/upcoming | Recuperar fatura futura |
GET | /v1/products | Listar produtos |
GET | /v1/prices | Listar preços |
Endpoints de eventos
| Método | Endpoint | Descrição |
|---|---|---|
GET | /v1/events | Listar eventos |
GET | /v1/events/{id} | Recuperar um evento |
Eventos
Eventos de pagamento
| Evento | Gatilho | Caso de uso |
|---|---|---|
payment_intent.succeeded | Pagamento concluído | Confirmação de pedido |
payment_intent.payment_failed | Pagamento falhou | E-mail de recuperação |
charge.refunded | Reembolso processado | Notificação de reembolso |
charge.dispute.created | Chargeback iniciado | Tratamento de disputa |
Eventos de assinatura
| Evento | Gatilho | Caso de uso |
|---|---|---|
customer.subscription.created | Nova assinatura | Fluxo de onboarding |
customer.subscription.updated | Plano alterado | Fluxo de upgrade/downgrade |
customer.subscription.deleted | Assinatura cancelada | Prevenção de churn |
customer.subscription.trial_will_end | Trial terminando em 3 dias | Campanha de conversão de trial |
invoice.payment_failed | Pagamento de assinatura falhou | Sequência de e-mails de cobrança |
Eventos de cliente
| Evento | Gatilho | Caso de uso |
|---|---|---|
customer.created | Novo cliente adicionado | E-mail de boas-vindas |
customer.updated | Dados do cliente alterados | Sincronização de atributos |
customer.deleted | Cliente removido | Limpeza |
Exemplos de código
Inicializar o conector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Stripeawait tajo.connectors.connect('stripe', { secretKey: process.env.STRIPE_SECRET_KEY, webhookSecret: process.env.STRIPE_WEBHOOK_SECRET});Executar sincronização de clientes
// Full historical syncawait tajo.connectors.sync('stripe', { type: 'full', resources: ['customers', 'subscriptions', 'payments'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('stripe');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// customersSynced: 12500,// subscriptionsSynced: 8200,// paymentsSynced: 45000// }Tratar webhooks do Stripe
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
app.post('/webhooks/stripe', async (req, res) => { const sig = req.headers['stripe-signature'];
let event; try { event = stripe.webhooks.constructEvent( req.body, sig, process.env.STRIPE_WEBHOOK_SECRET ); } catch (err) { return res.status(400).send(`Webhook Error: ${err.message}`); }
// Forward to Tajo for Brevo sync await tajo.connectors.handleWebhook('stripe', { type: event.type, data: event.data.object });
res.status(200).json({ received: true });});Limites de taxa
O Stripe aplica os seguintes limites de taxa:
| Tipo | Limite | Detalhes |
|---|---|---|
| Modo live | 100 requisições de leitura/segundo | Por chave secreta |
| Modo live | 100 requisições de escrita/segundo | Por chave secreta |
| Modo test | 25 requisições/segundo | Por chave secreta |
| Entrega de webhook | 100.000 eventos/dia | Por endpoint |
Tratamento de limites de taxa
O Stripe retorna uma resposta 429 Too Many Requests quando os limites são excedidos. Implemente backoff exponencial. Use endpoints de listagem com paginação automática para recuperação de dados em massa.
Solução de problemas
Problemas comuns
| Problema | Causa | Solução |
|---|---|---|
| 401 Unauthorized | Chave de API inválida | Verifique a chave secreta no Stripe Dashboard |
| Falha na assinatura do webhook | Webhook secret incorreto | Copie novamente o signing secret do webhook no Dashboard |
| Cliente não sincronizado | Sem e-mail no cliente do Stripe | Garanta que o e-mail esteja definido nos registros de cliente do Stripe |
| Dados de assinatura ausentes | Permissões insuficientes | Atualize as permissões da chave restrita |
| Eventos duplicados | Reentrega de webhook | Implemente idempotência usando os IDs de evento |
Modo de depuração
Habilite logging detalhado:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueTestar conexão
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedMelhores práticas
- Use chaves de API restritas - Crie chaves com as permissões mínimas necessárias
- Sempre verifique assinaturas de webhook - Previna eventos de webhook forjados
- Trate a idempotência - Use IDs de evento do Stripe para evitar processamento duplicado
- Sincronize metadados do cliente - Armazene dados relevantes para marketing nos campos de metadata do Stripe
- Monitore a entrega de webhooks - Verifique o Stripe Dashboard para entregas que falharam
- Use o modo test primeiro - Valide sua integração com o modo test e test clocks do Stripe
Segurança
- Autenticação por chave de API - Acesso baseado em chave secreta com suporte a chaves restritas
- Verificação de assinatura de webhook - Validação de assinatura HMAC SHA-256
- Criptografia TLS - Toda comunicação com a API é criptografada via HTTPS
- Conformidade PCI - O Stripe cuida da conformidade PCI DSS para dados de pagamento
- Whitelisting de IP - Restrições de IP opcionais para acesso à API