Connettore Stripe
Connettore Stripe
Collega il tuo account Stripe a Brevo tramite Tajo per una sincronizzazione completa dei dati di pagamento, la gestione del ciclo di vita degli abbonamenti e l’automazione marketing basata sui ricavi.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Stripe |
| Categoria | E-commerce |
| Complessità di setup | Facile |
| Integrazione ufficiale | Sì |
| Dati sincronizzati | Clienti, Pagamenti, Abbonamenti, Fatture, Eventi |
| API Base URL | https://api.stripe.com/v1 |
Funzionalità
- Sincronizzazione clienti - Sincronizza i clienti Stripe con i contatti Brevo inclusi i metadati
- Tracciamento pagamenti - Traccia pagamenti riusciti, rimborsi e addebiti falliti
- Gestione abbonamenti - Sincronizza gli eventi del ciclo di vita degli abbonamenti per campagne di retention
- Dati delle fatture - Sincronizza i dettagli delle fatture per automazioni post-acquisto e di rinnovo
- Attribuzione dei ricavi - Mappa lifetime value e MRR agli attributi Brevo
- Eventi webhook - Notifiche in tempo reale per tutte le attività di pagamento
- Supporto multi-valuta - Gestisci pagamenti in più valute
- Tracciamento sessioni di checkout - Traccia Stripe Checkout per il recupero dei pagamenti abbandonati
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Stripe con accesso API
- Chiavi API Stripe (chiavi publishable e secret)
- Un account Brevo con accesso API
- Un account Tajo
Autenticazione
Autenticazione tramite API Key
Stripe utilizza l’autenticazione bearer token con la tua chiave API secret.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Sicurezza delle API Key
Non esporre mai la tua chiave secret nel codice lato client. Usa la chiave publishable per le operazioni frontend e la chiave secret solo sul tuo server.
API Key con restrizioni
Crea chiavi con restrizioni e permessi specifici per maggiore sicurezza:
- Vai nella Stripe Dashboard > Developers > API Keys
- Clicca su “Create restricted key”
- Concedi solo i permessi che Tajo richiede
Permessi richiesti
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readConfigurazione
Setup di base
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: 22Mappatura dei campi
Mappa i dati cliente Stripe agli attributi di contatto Brevo:
Mappature predefinite
| Parameter | Type | Description |
|---|---|---|
email required | string | Indirizzo email del cliente (identificatore univoco) |
name optional | string | Nome completo del cliente, suddiviso in FIRSTNAME/LASTNAME |
phone optional | string | Mappato all'attributo SMS per WhatsApp/SMS |
currency optional | string | Valuta predefinita per il cliente |
created optional | timestamp | Data di creazione del cliente in Stripe |
metadata optional | object | Metadati personalizzati chiave-valore da Stripe |
subscriptions optional | array | Dettagli degli abbonamenti attivi |
balance optional | integer | Saldo dell'account cliente in centesimi |
Mappatura attributi personalizzati
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_SOURCEEndpoint API
Endpoint principali
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /v1/customers | Elenca tutti i clienti |
POST | /v1/customers | Crea un cliente |
GET | /v1/customers/{id} | Recupera un cliente |
POST | /v1/customers/{id} | Aggiorna un cliente |
GET | /v1/charges | Elenca tutti gli addebiti |
GET | /v1/payment_intents | Elenca i payment intent |
Endpoint abbonamenti
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /v1/subscriptions | Elenca gli abbonamenti |
GET | /v1/subscriptions/{id} | Recupera un abbonamento |
GET | /v1/invoices | Elenca le fatture |
GET | /v1/invoices/upcoming | Recupera la prossima fattura |
GET | /v1/products | Elenca i prodotti |
GET | /v1/prices | Elenca i prezzi |
Endpoint eventi
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /v1/events | Elenca gli eventi |
GET | /v1/events/{id} | Recupera un evento |
Eventi
Eventi di pagamento
| Evento | Trigger | Caso d’uso |
|---|---|---|
payment_intent.succeeded | Pagamento completato | Conferma d’ordine |
payment_intent.payment_failed | Pagamento fallito | Email di recupero |
charge.refunded | Rimborso elaborato | Notifica di rimborso |
charge.dispute.created | Chargeback avviato | Gestione controversie |
Eventi di abbonamento
| Evento | Trigger | Caso d’uso |
|---|---|---|
customer.subscription.created | Nuovo abbonamento | Flusso di onboarding |
customer.subscription.updated | Piano modificato | Flusso di upgrade/downgrade |
customer.subscription.deleted | Abbonamento annullato | Prevenzione churn |
customer.subscription.trial_will_end | Trial in scadenza tra 3 giorni | Campagna di conversione trial |
invoice.payment_failed | Pagamento abbonamento fallito | Sequenza email di dunning |
Eventi cliente
| Evento | Trigger | Caso d’uso |
|---|---|---|
customer.created | Nuovo cliente aggiunto | Email di benvenuto |
customer.updated | Dati cliente modificati | Sincronizzazione attributi |
customer.deleted | Cliente rimosso | Pulizia |
Esempi di codice
Inizializza il connettore
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});Esegui sincronizzazione clienti
// 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// }Gestisci i webhook di 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 });});Limiti di velocità
Stripe applica i seguenti limiti di velocità:
| Tipo | Limite | Dettagli |
|---|---|---|
| Modalità live | 100 richieste di lettura/secondo | Per secret key |
| Modalità live | 100 richieste di scrittura/secondo | Per secret key |
| Modalità test | 25 richieste/secondo | Per secret key |
| Consegna webhook | 100.000 eventi/giorno | Per endpoint |
Gestione dei limiti di velocità
Stripe restituisce una risposta 429 Too Many Requests quando i limiti vengono superati. Implementa un backoff esponenziale. Usa gli endpoint di elenco con auto-paginazione per il recupero dati in blocco.
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| 401 Unauthorized | Chiave API non valida | Controlla la secret key nella Stripe Dashboard |
| Firma webhook fallita | Webhook secret errato | Ricopia il webhook signing secret dalla Dashboard |
| Cliente non sincronizzato | Nessuna email sul cliente Stripe | Assicurati che l’email sia impostata nei record cliente Stripe |
| Dati abbonamento mancanti | Permessi insufficienti | Aggiorna i permessi della chiave con restrizioni |
| Eventi duplicati | Nuovo tentativo di consegna webhook | Implementa idempotenza con gli ID evento |
Modalità debug
Abilita il logging dettagliato:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueTesta la connessione
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedBest practice
- Usa chiavi API con restrizioni - Crea chiavi con i permessi minimi richiesti
- Verifica sempre le firme dei webhook - Previeni eventi webhook falsificati
- Gestisci l’idempotenza - Usa gli ID degli eventi Stripe per prevenire elaborazioni duplicate
- Sincronizza i metadati cliente - Archivia dati rilevanti per il marketing nei campi metadata di Stripe
- Monitora la consegna dei webhook - Controlla la Stripe Dashboard per consegne fallite
- Usa prima la modalità test - Convalida la tua integrazione con la modalità test di Stripe e i test clock
Sicurezza
- Autenticazione API Key - Accesso basato su secret key con supporto per chiavi con restrizioni
- Verifica firma webhook - Validazione firma HMAC SHA-256
- Cifratura TLS - Tutte le comunicazioni API cifrate tramite HTTPS
- Conformità PCI - Stripe gestisce la conformità PCI DSS per i dati di pagamento
- IP whitelisting - Restrizioni IP opzionali per l’accesso API