Konektor Stripe
Konektor Stripe
Połącz swoje konto Stripe z Brevo przez Tajo dla pełnej synchronizacji danych płatności, zarządzania cyklem życia subskrypcji i automatyzacji marketingu opartej na przychodach.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | Stripe |
| Kategoria | E-commerce |
| Poziom konfiguracji | Łatwy |
| Integracja oficjalna | Tak |
| Synchronizowane dane | Klienci, Płatności, Subskrypcje, Faktury, Zdarzenia |
| Bazowy URL API | https://api.stripe.com/v1 |
Funkcje
- Synchronizacja klientów - Synchronizuj klientów Stripe z kontaktami Brevo wraz z metadanymi
- Śledzenie płatności - Śledź udane płatności, zwroty i nieudane obciążenia
- Zarządzanie subskrypcjami - Synchronizuj zdarzenia cyklu życia subskrypcji dla kampanii retencyjnych
- Dane faktur - Synchronizuj szczegóły faktur dla automatyzacji po zakupie i przy odnowieniu
- Atrybucja przychodów - Mapuj wartość życiową i MRR na atrybuty Brevo
- Zdarzenia webhooków - Powiadomienia o zdarzeniach w czasie rzeczywistym dla wszystkich aktywności płatniczych
- Obsługa wielu walut - Obsługuj płatności w wielu walutach
- Śledzenie sesji Checkout - Śledź Stripe Checkout dla odzyskiwania porzuconych płatności
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Konto Stripe z dostępem do API
- Klucze API Stripe (klucz publiczny i sekretny)
- Konto Brevo z dostępem do API
- Konto Tajo
Uwierzytelnianie
Uwierzytelnianie kluczem API
Stripe używa uwierzytelniania tokenem bearer z Twoim sekretnym kluczem API.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Bezpieczeństwo klucza API
Nigdy nie ujawniaj swojego klucza sekretnego w kodzie po stronie klienta. Używaj klucza publicznego dla operacji frontendowych, a klucza sekretnego tylko na serwerze.
Ograniczone klucze API
Twórz ograniczone klucze z określonymi uprawnieniami dla zwiększonego bezpieczeństwa:
- Przejdź do Stripe Dashboard > Developers > API Keys
- Kliknij “Create restricted key”
- Przyznaj tylko uprawnienia wymagane przez Tajo
Wymagane uprawnienia
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readKonfiguracja
Podstawowa konfiguracja
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: 22Mapowanie pól
Mapuj dane klientów Stripe na atrybuty kontaktów Brevo:
Domyślne mapowania
| Parameter | Type | Description |
|---|---|---|
email required | string | Adres e-mail klienta (unikalny identyfikator) |
name optional | string | Pełne imię i nazwisko klienta, podzielone na FIRSTNAME/LASTNAME |
phone optional | string | Mapuje na atrybut SMS dla WhatsApp/SMS |
currency optional | string | Domyślna waluta klienta |
created optional | timestamp | Data utworzenia klienta w Stripe |
metadata optional | object | Niestandardowe metadane klucz-wartość ze Stripe |
subscriptions optional | array | Szczegóły aktywnych subskrypcji |
balance optional | integer | Saldo konta klienta w centach |
Niestandardowe mapowanie atrybutów
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_SOURCEEndpointy API
Główne endpointy
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v1/customers | Lista wszystkich klientów |
POST | /v1/customers | Utwórz klienta |
GET | /v1/customers/{id} | Pobierz klienta |
POST | /v1/customers/{id} | Zaktualizuj klienta |
GET | /v1/charges | Lista wszystkich obciążeń |
GET | /v1/payment_intents | Lista intencji płatności |
Endpointy subskrypcji
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v1/subscriptions | Lista subskrypcji |
GET | /v1/subscriptions/{id} | Pobierz subskrypcję |
GET | /v1/invoices | Lista faktur |
GET | /v1/invoices/upcoming | Pobierz nadchodzącą fakturę |
GET | /v1/products | Lista produktów |
GET | /v1/prices | Lista cen |
Endpointy zdarzeń
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /v1/events | Lista zdarzeń |
GET | /v1/events/{id} | Pobierz zdarzenie |
Zdarzenia
Zdarzenia płatności
| Zdarzenie | Wyzwalacz | Przypadek użycia |
|---|---|---|
payment_intent.succeeded | Płatność zakończona | Potwierdzenie zamówienia |
payment_intent.payment_failed | Płatność nieudana | E-mail odzyskiwania |
charge.refunded | Przetworzono zwrot | Powiadomienie o zwrocie |
charge.dispute.created | Inicjacja obciążenia zwrotnego | Obsługa sporu |
Zdarzenia subskrypcji
| Zdarzenie | Wyzwalacz | Przypadek użycia |
|---|---|---|
customer.subscription.created | Nowa subskrypcja | Przepływ onboardingowy |
customer.subscription.updated | Zmiana planu | Przepływ uaktualnienia/obniżenia |
customer.subscription.deleted | Anulowanie subskrypcji | Zapobieganie odejściom |
customer.subscription.trial_will_end | Okres próbny kończy się za 3 dni | Kampania konwersji próbnej |
invoice.payment_failed | Nieudana płatność subskrypcji | Sekwencja e-maili dunningowych |
Zdarzenia klientów
| Zdarzenie | Wyzwalacz | Przypadek użycia |
|---|---|---|
customer.created | Dodano nowego klienta | Powitalny e-mail |
customer.updated | Zmiana danych klienta | Synchronizacja atrybutów |
customer.deleted | Usunięcie klienta | Czyszczenie |
Przykłady kodu
Inicjalizacja konektora
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});Uruchom synchronizację klientów
// 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// }Obsługa webhooków 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 });});Limity API
Stripe egzekwuje następujące limity szybkości:
| Typ | Limit | Szczegóły |
|---|---|---|
| Tryb live | 100 żądań odczytu/sekundę | Na klucz sekretny |
| Tryb live | 100 żądań zapisu/sekundę | Na klucz sekretny |
| Tryb testowy | 25 żądań/sekundę | Na klucz sekretny |
| Dostarczanie webhooków | 100 000 zdarzeń/dzień | Na endpoint |
Obsługa limitów szybkości
Stripe zwraca odpowiedź 429 Too Many Requests, gdy limity są przekroczone. Wdrożyj wykładnicze wycofanie. Używaj endpointów listowania z auto-paginacją dla zbiorczego pobierania danych.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy klucz API | Sprawdź klucz sekretny w Stripe Dashboard |
| Błąd podpisu webhooka | Nieprawidłowy sekret webhooka | Skopiuj ponownie sekret podpisywania webhooka z dashboardu |
| Klient nie zsynchronizowany | Brak e-maila klienta Stripe | Upewnij się, że e-mail jest ustawiony na rekordach klientów Stripe |
| Brakujące dane subskrypcji | Niewystarczające uprawnienia | Zaktualizuj uprawnienia ograniczonego klucza |
| Duplikaty zdarzeń | Ponowne dostarczanie webhooka | Wdrożyj idempotentność z ID zdarzeń |
Tryb debug
Włącz szczegółowe logowanie:
connectors: stripe: debug: true log_level: verbose log_webhooks: trueTest połączenia
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedNajlepsze praktyki
- Używaj ograniczonych kluczy API - Twórz klucze z minimalnymi wymaganymi uprawnieniami
- Zawsze weryfikuj podpisy webhooków - Zapobiegaj sfałszowanym zdarzeniom webhooków
- Obsługuj idempotentność - Używaj ID zdarzeń Stripe, aby zapobiec duplikowaniu przetwarzania
- Synchronizuj metadane klientów - Przechowuj dane istotne dla marketingu w polach metadanych Stripe
- Monitoruj dostarczanie webhooków - Sprawdzaj Stripe Dashboard pod kątem nieudanych dostarczeń
- Najpierw używaj trybu testowego - Waliduj integrację z trybem testowym Stripe i zegarami testowymi
Bezpieczeństwo
- Uwierzytelnianie kluczem API - Dostęp oparty na kluczu sekretnym z obsługą ograniczonego klucza
- Weryfikacja podpisu webhooka - Walidacja podpisu HMAC SHA-256
- Szyfrowanie TLS - Cała komunikacja API szyfrowana przez HTTPS
- Zgodność PCI - Stripe obsługuje zgodność PCI DSS dla danych płatności
- Allowlisting IP - Opcjonalne ograniczenia IP dla dostępu API