Stripe-connector
Stripe-connector
Verbind je Stripe-account met Brevo via Tajo voor volledige synchronisatie van betaaldata, beheer van de abonnementslevenscyclus en omzetgedreven marketingautomatisering.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Stripe |
| Categorie | E-commerce |
| Setupcomplexiteit | Eenvoudig |
| Officiële integratie | Ja |
| Gesynchroniseerde data | Klanten, Betalingen, Abonnementen, Facturen, Events |
| API base URL | https://api.stripe.com/v1 |
Functies
- Klantsynchronisatie - Synchroniseer Stripe-klanten met Brevo-contacten inclusief metadata
- Betalingstracking - Volg succesvolle betalingen, terugbetalingen en mislukte charges
- Abonnementsbeheer - Synchroniseer abonnements-lifecycle-events voor retentiecampagnes
- Factuurdata - Synchroniseer factuurdetails voor post-purchase- en verlengingsautomatisering
- Omzet-attributie - Koppel lifetime value en MRR aan Brevo-attributen
- Webhook-events - Realtime-eventnotificaties voor alle betaalactiviteiten
- Multi-currency-ondersteuning - Verwerk betalingen in meerdere valuta’s
- Checkout-sessie-tracking - Volg Stripe Checkout voor herstel van verlaten betalingen
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Stripe-account met API-toegang
- Stripe API-sleutels (publishable en secret key)
- Een Brevo-account met API-toegang
- Een Tajo-account
Authenticatie
API-sleutel-authenticatie
Stripe gebruikt bearer-token-authenticatie met je secret API key.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:API-sleutelbeveiliging
Plaats je secret key nooit in client-side code. Gebruik de publishable key voor frontendoperaties en de secret key alleen op je server.
Restricted API keys
Maak restricted keys met specifieke rechten voor extra beveiliging:
- Ga naar Stripe Dashboard > Developers > API Keys
- Klik op “Create restricted key”
- Geef alleen de rechten die Tajo nodig heeft
Vereiste rechten
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readConfiguratie
Basisopzet
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: 22Veldmapping
Koppel Stripe-klantdata aan Brevo-contactattributen:
Standaard-mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mailadres klant (unieke identifier) |
name optional | string | Volledige naam klant, opgesplitst in FIRSTNAME/LASTNAME |
phone optional | string | Koppelt aan SMS-attribuut voor WhatsApp/sms |
currency optional | string | Standaardvaluta van de klant |
created optional | timestamp | Aanmaakdatum van de klant in Stripe |
metadata optional | object | Custom key-value-metadata uit Stripe |
subscriptions optional | array | Details van actieve abonnementen |
balance optional | integer | Saldo van klantaccount in centen |
Custom attribuutmapping
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 | Beschrijving |
|---|---|---|
GET | /v1/customers | Alle klanten opvragen |
POST | /v1/customers | Klant aanmaken |
GET | /v1/customers/{id} | Klant ophalen |
POST | /v1/customers/{id} | Klant bijwerken |
GET | /v1/charges | Alle charges opvragen |
GET | /v1/payment_intents | Payment intents opvragen |
Abonnements-endpoints
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /v1/subscriptions | Abonnementen opvragen |
GET | /v1/subscriptions/{id} | Abonnement ophalen |
GET | /v1/invoices | Facturen opvragen |
GET | /v1/invoices/upcoming | Aankomende factuur ophalen |
GET | /v1/products | Producten opvragen |
GET | /v1/prices | Prijzen opvragen |
Event-endpoints
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /v1/events | Events opvragen |
GET | /v1/events/{id} | Event ophalen |
Events
Betaal-events
| Event | Trigger | Use case |
|---|---|---|
payment_intent.succeeded | Betaling afgerond | Orderbevestiging |
payment_intent.payment_failed | Betaling mislukt | Recovery-e-mail |
charge.refunded | Terugbetaling verwerkt | Terugbetalingsnotificatie |
charge.dispute.created | Chargeback gestart | Geschilafhandeling |
Abonnements-events
| Event | Trigger | Use case |
|---|---|---|
customer.subscription.created | Nieuw abonnement | Onboardingsflow |
customer.subscription.updated | Plan gewijzigd | Upgrade-/downgradeflow |
customer.subscription.deleted | Abonnement opgezegd | Churn-preventie |
customer.subscription.trial_will_end | Trial eindigt over 3 dagen | Trialconversie-campagne |
invoice.payment_failed | Abonnementsbetaling mislukt | Dunning-e-mailserie |
Klant-events
| Event | Trigger | Use case |
|---|---|---|
customer.created | Nieuwe klant toegevoegd | Welkomstmail |
customer.updated | Klantdata gewijzigd | Attribuutsync |
customer.deleted | Klant verwijderd | Opschonen |
Codevoorbeelden
Connector initialiseren
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});Klantsynchronisatie uitvoeren
// 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 afhandelen
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 });});Ratelimits
Stripe hanteert de volgende ratelimits:
| Type | Limiet | Details |
|---|---|---|
| Live mode | 100 read requests/seconde | Per secret key |
| Live mode | 100 write requests/seconde | Per secret key |
| Test mode | 25 requests/seconde | Per secret key |
| Webhook-levering | 100.000 events/dag | Per endpoint |
Ratelimit-afhandeling
Stripe geeft een 429 Too Many Requests-response wanneer limieten worden overschreden. Implementeer exponentiële backoff. Gebruik list-endpoints met auto-paginatie voor bulkdata-ophaling.
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Ongeldige API-sleutel | Controleer de secret key in het Stripe Dashboard |
| Webhook-signature faalt | Verkeerde webhook-secret | Kopieer de webhook signing secret opnieuw uit het Dashboard |
| Klant niet gesynchroniseerd | Geen e-mail op Stripe-klant | Zorg dat e-mailadressen zijn ingesteld op Stripe-klantrecords |
| Abonnementsdata ontbreekt | Onvoldoende rechten | Werk de rechten van de restricted key bij |
| Dubbele events | Webhook-retry-levering | Implementeer idempotency met event-ID’s |
Debugmodus
Activeer uitgebreide logging:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueVerbinding testen
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedBest practices
- Gebruik restricted API keys - Maak keys aan met alleen de minimaal benodigde rechten
- Verifieer altijd webhook-signatures - Voorkom vervalste webhook-events
- Regel idempotency - Gebruik Stripe-event-ID’s om duplicaatverwerking te voorkomen
- Synchroniseer klant-metadata - Sla marketingrelevante data op in Stripe-metadata-velden
- Monitor webhook-levering - Bekijk het Stripe Dashboard voor mislukte leveringen
- Gebruik eerst test mode - Valideer je integratie met Stripe test mode en test clocks
Beveiliging
- API-sleutel-authenticatie - Toegang op basis van secret key met ondersteuning voor restricted keys
- Webhook-signatureverificatie - HMAC SHA-256-handtekeningvalidatie
- TLS-encryptie - Alle API-communicatie versleuteld via HTTPS
- PCI-compliance - Stripe regelt PCI DSS-compliance voor betaaldata
- IP-whitelisting - Optionele IP-beperkingen voor API-toegang