Conector de Stripe
Conector de Stripe
Conecta tu cuenta de Stripe con Brevo a través de Tajo para una sincronización completa de los datos de pago, la gestión del ciclo de vida de las suscripciones y la automatización del marketing basada en ingresos.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Stripe |
| Categoría | Ecommerce |
| Complejidad de configuración | Fácil |
| Integración oficial | Sí |
| Datos sincronizados | Clientes, Pagos, Suscripciones, Facturas, Eventos |
| URL base de la API | https://api.stripe.com/v1 |
Funcionalidades
- Sincronización de clientes - Sincroniza los clientes de Stripe con los contactos de Brevo, incluidos sus metadatos
- Seguimiento de pagos - Rastrea pagos exitosos, reembolsos y cargos fallidos
- Gestión de suscripciones - Sincroniza eventos del ciclo de vida de la suscripción para campañas de retención
- Datos de facturas - Sincroniza los detalles de las facturas para automatizar mensajes post-compra y renovaciones
- Atribución de ingresos - Asocia el valor de vida y el MRR a atributos de Brevo
- Eventos de webhook - Notificaciones de eventos en tiempo real para todas las actividades de pago
- Soporte multi-moneda - Gestiona pagos en varias monedas
- Seguimiento de Checkout sessions - Rastrea Stripe Checkout para recuperar pagos abandonados
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Stripe con acceso a la API
- Las claves API de Stripe (publishable key y secret key)
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo
Autenticación
Autenticación por clave API
Stripe usa autenticación bearer con tu secret key.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Seguridad de la clave API
Nunca expongas tu secret key en código del lado del cliente. Usa la publishable key para operaciones de frontend y la secret key solo en tu servidor.
Claves API restringidas
Crea claves restringidas con permisos específicos para una seguridad mayor:
- Ve a Stripe Dashboard > Developers > API Keys
- Haz clic en “Create restricted key”
- Concede solo los permisos que Tajo necesita
Permisos requeridos
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readConfiguración
Configuración 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: 22Asignación de campos
Asocia los datos de cliente de Stripe con los atributos de contacto de Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Dirección de email del cliente (identificador único) |
name optional | string | Nombre completo del cliente, dividido en FIRSTNAME/LASTNAME |
phone optional | string | Se asocia al atributo SMS para WhatsApp/SMS |
currency optional | string | Moneda por defecto del cliente |
created optional | timestamp | Fecha de creación del cliente en Stripe |
metadata optional | object | Metadatos clave-valor personalizados desde Stripe |
subscriptions optional | array | Detalles de las suscripciones activas |
balance optional | integer | Saldo de la cuenta del cliente en céntimos |
Asignación 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 de la API
Endpoints principales
| Método | Endpoint | Descripción |
|---|---|---|
GET | /v1/customers | Listar todos los clientes |
POST | /v1/customers | Crear un cliente |
GET | /v1/customers/{id} | Obtener un cliente |
POST | /v1/customers/{id} | Actualizar un cliente |
GET | /v1/charges | Listar todos los cargos |
GET | /v1/payment_intents | Listar payment intents |
Endpoints de suscripción
| Método | Endpoint | Descripción |
|---|---|---|
GET | /v1/subscriptions | Listar suscripciones |
GET | /v1/subscriptions/{id} | Obtener una suscripción |
GET | /v1/invoices | Listar facturas |
GET | /v1/invoices/upcoming | Obtener la próxima factura |
GET | /v1/products | Listar productos |
GET | /v1/prices | Listar precios |
Endpoints de eventos
| Método | Endpoint | Descripción |
|---|---|---|
GET | /v1/events | Listar eventos |
GET | /v1/events/{id} | Obtener un evento |
Eventos
Eventos de pago
| Evento | Disparador | Caso de uso |
|---|---|---|
payment_intent.succeeded | Pago completado | Confirmación de pedido |
payment_intent.payment_failed | Pago fallido | Email de recuperación |
charge.refunded | Reembolso procesado | Notificación de reembolso |
charge.dispute.created | Contracargo iniciado | Gestión de disputas |
Eventos de suscripción
| Evento | Disparador | Caso de uso |
|---|---|---|
customer.subscription.created | Nueva suscripción | Flujo de onboarding |
customer.subscription.updated | Cambio de plan | Flujo de upgrade/downgrade |
customer.subscription.deleted | Suscripción cancelada | Prevención de churn |
customer.subscription.trial_will_end | Prueba termina en 3 días | Campaña de conversión de prueba |
invoice.payment_failed | Pago de suscripción fallido | Secuencia de dunning |
Eventos de cliente
| Evento | Disparador | Caso de uso |
|---|---|---|
customer.created | Nuevo cliente añadido | Email de bienvenida |
customer.updated | Cambio en datos del cliente | Sincronización de atributos |
customer.deleted | Cliente eliminado | Limpieza |
Ejemplos de código
Inicializar el 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});Ejecutar la sincronización 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// }Gestionar webhooks de 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 });});Límites de velocidad
Stripe aplica los siguientes límites de velocidad:
| Tipo | Límite | Detalles |
|---|---|---|
| Modo live | 100 peticiones de lectura/segundo | Por secret key |
| Modo live | 100 peticiones de escritura/segundo | Por secret key |
| Modo test | 25 peticiones/segundo | Por secret key |
| Entrega de webhooks | 100.000 eventos/día | Por endpoint |
Gestión del rate limit
Stripe devuelve una respuesta 429 Too Many Requests cuando se superan los límites. Implementa backoff exponencial. Usa los endpoints de listado con auto-paginación para obtener datos en bloque.
Resolución de problemas
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
| 401 Unauthorized | Clave API no válida | Comprueba la secret key en el Stripe Dashboard |
| Fallo de firma de webhook | Webhook secret incorrecto | Vuelve a copiar el signing secret del Dashboard |
| Cliente no sincronizado | Cliente de Stripe sin email | Asegúrate de que el email está definido en los registros de cliente de Stripe |
| Faltan datos de suscripción | Permisos insuficientes | Actualiza los permisos de la clave restringida |
| Eventos duplicados | Reentrega de webhook | Implementa idempotencia usando los IDs de evento |
Modo depuración
Habilita el logging detallado:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueProbar la conexión
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedBuenas prácticas
- Usa claves API restringidas - Crea claves con los permisos mínimos necesarios
- Verifica siempre las firmas de los webhooks - Evita eventos de webhook falsificados
- Gestiona la idempotencia - Usa los IDs de evento de Stripe para evitar procesamiento duplicado
- Sincroniza los metadatos del cliente - Guarda los datos útiles para marketing en los metadata fields de Stripe
- Monitoriza la entrega de webhooks - Revisa el Stripe Dashboard para entregas fallidas
- Prueba primero en modo test - Valida tu integración con el modo test de Stripe y los test clocks
Seguridad
- Autenticación por clave API - Acceso basado en secret key con soporte para claves restringidas
- Verificación de firma de webhook - Validación de firma HMAC SHA-256
- Cifrado TLS - Toda la comunicación con la API se cifra vía HTTPS
- Cumplimiento PCI - Stripe gestiona el cumplimiento de PCI DSS para los datos de pago
- Whitelisting de IPs - Restricciones opcionales de IP para el acceso a la API