Stripe-Connector
Stripe-Connector
Verbinde deinen Stripe-Account mit Brevo über Tajo für eine vollständige Synchronisation von Zahlungsdaten, Management des Abonnement-Lifecycles und umsatzgetriebene Marketing-Automation.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Stripe |
| Kategorie | E-Commerce |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Ja |
| Synchronisierte Daten | Kund:innen, Zahlungen, Abonnements, Rechnungen, Events |
| API-Base-URL | https://api.stripe.com/v1 |
Funktionen
- Kundendaten-Synchronisation – Synchronisiere Stripe-Kund:innen mit Brevo-Kontakten inklusive Metadaten
- Zahlungsverfolgung – Verfolge erfolgreiche Zahlungen, Rückerstattungen und fehlgeschlagene Charges
- Abonnement-Management – Synchronisiere Lifecycle-Events für Retention-Kampagnen
- Rechnungsdaten – Synchronisiere Rechnungsdetails für Post-Purchase- und Renewal-Automation
- Umsatzzuordnung – Ordne Lifetime Value und MRR Brevo-Attributen zu
- Webhook-Events – Echtzeit-Benachrichtigungen für alle Zahlungsvorgänge
- Multi-Currency-Unterstützung – Verarbeite Zahlungen in verschiedenen Währungen
- Checkout-Session-Tracking – Verfolge Stripe Checkout für die Recovery abgebrochener Zahlungen
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Einen Stripe-Account mit API-Zugang
- Stripe-API-Schlüssel (Publishable und Secret Key)
- Einen Brevo-Account mit API-Zugang
- Einen Tajo-Account
Authentifizierung
API-Key-Authentifizierung
Stripe nutzt Bearer-Token-Authentifizierung mit deinem Secret API Key.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Sicherheit von API-Schlüsseln
Gib deinen Secret Key niemals im Client-Code preis. Verwende den Publishable Key für Frontend-Operationen und den Secret Key ausschließlich auf deinem Server.
Restricted API Keys
Erstelle Restricted Keys mit spezifischen Berechtigungen für erhöhte Sicherheit:
- Gehe ins Stripe Dashboard > Developers > API Keys
- Klicke auf „Create restricted key”
- Gewähre nur die Berechtigungen, die Tajo benötigt
Erforderliche Berechtigungen
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readKonfiguration
Grundlegende Einrichtung
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: 22Feld-Mapping
Mappe Stripe-Kundendaten auf Brevo-Kontaktattribute:
Standard-Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | E-Mail-Adresse der Kund:in (eindeutiger Identifier) |
name optional | string | Vollständiger Name, aufgeteilt in FIRSTNAME/LASTNAME |
phone optional | string | Mappt auf das SMS-Attribut für WhatsApp/SMS |
currency optional | string | Standardwährung der Kund:in |
created optional | timestamp | Erstellungsdatum der Kund:in in Stripe |
metadata optional | object | Benutzerdefinierte Key-Value-Metadaten aus Stripe |
subscriptions optional | array | Details aktiver Abonnements |
balance optional | integer | Kontostand der Kund:in in Cent |
Mapping benutzerdefinierter Attribute
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_SOURCEAPI-Endpoints
Kern-Endpoints
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v1/customers | Alle Kund:innen auflisten |
POST | /v1/customers | Kund:in anlegen |
GET | /v1/customers/{id} | Kund:in abrufen |
POST | /v1/customers/{id} | Kund:in aktualisieren |
GET | /v1/charges | Alle Charges auflisten |
GET | /v1/payment_intents | Payment Intents auflisten |
Abonnement-Endpoints
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v1/subscriptions | Abonnements auflisten |
GET | /v1/subscriptions/{id} | Abonnement abrufen |
GET | /v1/invoices | Rechnungen auflisten |
GET | /v1/invoices/upcoming | Anstehende Rechnung abrufen |
GET | /v1/products | Produkte auflisten |
GET | /v1/prices | Preise auflisten |
Event-Endpoints
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /v1/events | Events auflisten |
GET | /v1/events/{id} | Event abrufen |
Events
Zahlungs-Events
| Event | Trigger | Anwendungsfall |
|---|---|---|
payment_intent.succeeded | Zahlung abgeschlossen | Bestellbestätigung |
payment_intent.payment_failed | Zahlung fehlgeschlagen | Recovery-E-Mail |
charge.refunded | Rückerstattung verarbeitet | Rückerstattungs-Benachrichtigung |
charge.dispute.created | Chargeback eröffnet | Dispute-Handling |
Abonnement-Events
| Event | Trigger | Anwendungsfall |
|---|---|---|
customer.subscription.created | Neues Abonnement | Onboarding-Flow |
customer.subscription.updated | Plan geändert | Upgrade-/Downgrade-Flow |
customer.subscription.deleted | Abonnement gekündigt | Churn-Prevention |
customer.subscription.trial_will_end | Testphase endet in 3 Tagen | Trial-Conversion-Kampagne |
invoice.payment_failed | Abonnement-Zahlung fehlgeschlagen | Dunning-E-Mail-Sequenz |
Kunden-Events
| Event | Trigger | Anwendungsfall |
|---|---|---|
customer.created | Neue Kund:in angelegt | Welcome-E-Mail |
customer.updated | Kundendaten geändert | Attribut-Synchronisation |
customer.deleted | Kund:in entfernt | Cleanup |
Code-Beispiele
Connector initialisieren
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});Kundendaten-Synchronisation ausführen
// 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// }Stripe-Webhooks verarbeiten
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 });});Rate Limits
Stripe erzwingt folgende Rate Limits:
| Typ | Limit | Details |
|---|---|---|
| Live-Modus | 100 Read-Requests/Sekunde | Pro Secret Key |
| Live-Modus | 100 Write-Requests/Sekunde | Pro Secret Key |
| Test-Modus | 25 Requests/Sekunde | Pro Secret Key |
| Webhook-Zustellung | 100.000 Events/Tag | Pro Endpoint |
Umgang mit Rate Limits
Stripe gibt bei Überschreitung der Limits einen 429 Too Many Requests-Response zurück. Implementiere Exponential Backoff. Nutze List-Endpoints mit Auto-Pagination für den Massenabruf von Daten.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiger API-Schlüssel | Secret Key im Stripe Dashboard prüfen |
| Webhook-Signatur fehlgeschlagen | Falsches Webhook-Secret | Webhook Signing Secret im Dashboard erneut kopieren |
| Kund:in nicht synchronisiert | Keine E-Mail am Stripe-Kundendatensatz | Stelle sicher, dass in Stripe-Kundendatensätzen eine E-Mail hinterlegt ist |
| Fehlende Abonnementdaten | Unzureichende Berechtigungen | Berechtigungen des Restricted Keys aktualisieren |
| Doppelte Events | Webhook-Retry-Zustellung | Idempotenz mit Event-IDs implementieren |
Debug-Modus
Ausführliches Logging aktivieren:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueVerbindung testen
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedBest Practices
- Restricted API Keys verwenden – Erstelle Keys mit den minimal erforderlichen Berechtigungen
- Webhook-Signaturen immer verifizieren – Verhindere gefälschte Webhook-Events
- Idempotenz handhaben – Nutze Stripe-Event-IDs, um doppelte Verarbeitung zu vermeiden
- Kunden-Metadaten synchronisieren – Speichere marketingrelevante Daten in Stripe-Metadatenfeldern
- Webhook-Zustellung überwachen – Prüfe das Stripe-Dashboard auf fehlgeschlagene Zustellungen
- Zuerst den Test-Modus nutzen – Validiere deine Integration mit Stripe-Test-Modus und Test Clocks
Sicherheit
- API-Key-Authentifizierung – Zugriff via Secret Key mit Unterstützung für Restricted Keys
- Webhook-Signatur-Verifizierung – Validierung mit HMAC SHA-256
- TLS-Verschlüsselung – Gesamte API-Kommunikation über HTTPS verschlüsselt
- PCI-Compliance – Stripe verantwortet die PCI-DSS-Compliance für Zahlungsdaten
- IP-Whitelisting – Optionale IP-Einschränkungen für den API-Zugriff