Коннектор Stripe
Коннектор Stripe
Подключите аккаунт Stripe к Brevo через Tajo для полной синхронизации платёжных данных, управления жизненным циклом подписок и маркетинговой автоматизации на основе данных о выручке.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Stripe |
| Категория | E-commerce |
| Сложность настройки | Простая |
| Официальная интеграция | Да |
| Синхронизируемые данные | Клиенты, платежи, подписки, счета, события |
| Базовый URL API | https://api.stripe.com/v1 |
Возможности
- Синхронизация клиентов, синхронизация клиентов Stripe с контактами Brevo, включая метаданные
- Отслеживание платежей, трекинг успешных платежей, возвратов и неудачных списаний
- Управление подписками, синхронизация событий жизненного цикла подписок для кампаний удержания
- Данные по счетам, синхронизация деталей счетов для автоматизации после покупки и при продлении
- Атрибуция выручки, сопоставление LTV и MRR с атрибутами Brevo
- Webhook-события, уведомления о событиях в реальном времени для всех платёжных операций
- Поддержка нескольких валют, обработка платежей в разных валютах
- Отслеживание сессий Checkout, трекинг Stripe Checkout для восстановления незавершённых платежей
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Stripe с доступом к API
- API-ключи Stripe (публичный и секретный)
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo
Аутентификация
Аутентификация по API Key
Stripe использует Bearer-аутентификацию с секретным API-ключом.
curl https://api.stripe.com/v1/customers \ -u sk_live_YOUR_SECRET_KEY:Безопасность API Key
Никогда не раскрывайте секретный ключ в клиентском коде. Используйте публичный ключ для фронтенд-операций и секретный ключ только на стороне сервера.
Ограниченные API Keys
Создавайте ограниченные ключи с конкретными разрешениями для повышения безопасности:
- Перейдите в Stripe Dashboard > Developers > API Keys
- Нажмите “Create restricted key”
- Предоставьте только разрешения, необходимые Tajo
Необходимые разрешения
customers: readcharges: readpayment_intents: readsubscriptions: readinvoices: readevents: readproducts: readprices: readКонфигурация
Базовая настройка
connectors: stripe: enabled: true secret_key: "${STRIPE_SECRET_KEY}" webhook_secret: "${STRIPE_WEBHOOK_SECRET}"
# Параметры синхронизации данных sync: customers: true payments: true subscriptions: true invoices: true products: true
# Назначение листов Brevo lists: all_customers: 20 subscribers: 21 churned: 22Сопоставление полей
Сопоставьте данные клиентов Stripe с атрибутами контактов Brevo:
Сопоставления по умолчанию
| Parameter | Type | Description |
|---|---|---|
email required | string | Email клиента (уникальный идентификатор) |
name optional | string | Полное имя клиента, разделяется на FIRSTNAME/LASTNAME |
phone optional | string | Сопоставляется с атрибутом SMS для WhatsApp/SMS |
currency optional | string | Валюта клиента по умолчанию |
created optional | timestamp | Дата создания клиента в Stripe |
metadata optional | object | Пользовательские метаданные в формате ключ-значение из Stripe |
subscriptions optional | array | Детали активных подписок |
balance optional | integer | Баланс аккаунта клиента в центах |
Сопоставление пользовательских атрибутов
field_mapping: # Стандартные поля email: email name: FULLNAME phone: SMS
# Метрики платежей total_spent: TOTAL_SPENT payment_count: PAYMENT_COUNT last_payment_date: LAST_PAYMENT_DATE average_order_value: AOV
# Поля подписки subscription_status: SUB_STATUS plan_name: PLAN_NAME mrr: MONTHLY_REVENUE subscription_start: SUB_START_DATE
# Пользовательские метаданные metadata.customer_tier: VIP_TIER metadata.referral_source: REFERRAL_SOURCEЭндпоинты API
Основные эндпоинты
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /v1/customers | Список всех клиентов |
POST | /v1/customers | Создание клиента |
GET | /v1/customers/{id} | Получить клиента |
POST | /v1/customers/{id} | Обновить клиента |
GET | /v1/charges | Список всех списаний |
GET | /v1/payment_intents | Список payment intent’ов |
Эндпоинты подписок
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /v1/subscriptions | Список подписок |
GET | /v1/subscriptions/{id} | Получить подписку |
GET | /v1/invoices | Список счетов |
GET | /v1/invoices/upcoming | Предстоящий счёт |
GET | /v1/products | Список продуктов |
GET | /v1/prices | Список цен |
Эндпоинты событий
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /v1/events | Список событий |
GET | /v1/events/{id} | Получить событие |
События
События платежей
| Событие | Триггер | Сценарий использования |
|---|---|---|
payment_intent.succeeded | Платёж выполнен | Подтверждение заказа |
payment_intent.payment_failed | Платёж не прошёл | Письмо для восстановления |
charge.refunded | Возврат обработан | Уведомление о возврате |
charge.dispute.created | Инициирован чарджбэк | Обработка спора |
События подписок
| Событие | Триггер | Сценарий использования |
|---|---|---|
customer.subscription.created | Новая подписка | Поток онбординга |
customer.subscription.updated | Смена плана | Поток повышения/понижения |
customer.subscription.deleted | Подписка отменена | Предотвращение оттока |
customer.subscription.trial_will_end | Пробный период заканчивается через 3 дня | Кампания конверсии триала |
invoice.payment_failed | Платёж по подписке не прошёл | Dunning email-последовательность |
События клиентов
| Событие | Триггер | Сценарий использования |
|---|---|---|
customer.created | Добавлен новый клиент | Приветственное письмо |
customer.updated | Данные клиента изменены | Синхронизация атрибутов |
customer.deleted | Клиент удалён | Очистка |
Примеры кода
Инициализация коннектора
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Подключение Stripeawait tajo.connectors.connect('stripe', { secretKey: process.env.STRIPE_SECRET_KEY, webhookSecret: process.env.STRIPE_WEBHOOK_SECRET});Запуск синхронизации клиентов
// Полная историческая синхронизацияawait tajo.connectors.sync('stripe', { type: 'full', resources: ['customers', 'subscriptions', 'payments'], since: '2023-01-01'});
// Проверка статуса синхронизацииconst status = await tajo.connectors.status('stripe');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// customersSynced: 12500,// subscriptionsSynced: 8200,// paymentsSynced: 45000// }Обработка вебхуков 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}`); }
// Пересылка в Tajo для синхронизации с Brevo await tajo.connectors.handleWebhook('stripe', { type: event.type, data: event.data.object });
res.status(200).json({ received: true });});Ограничения скорости
Stripe устанавливает следующие ограничения скорости:
| Тип | Лимит | Детали |
|---|---|---|
| Live mode (чтение) | 100 запросов/сек | На секретный ключ |
| Live mode (запись) | 100 запросов/сек | На секретный ключ |
| Test mode | 25 запросов/сек | На секретный ключ |
| Доставка вебхуков | 100 000 событий/день | На эндпоинт |
Обработка ограничений скорости
Stripe возвращает 429 Too Many Requests при превышении лимитов. Реализуйте экспоненциальную задержку. Используйте list-эндпоинты с авто-пагинацией для массового получения данных.
Устранение неполадок
Частые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Недействительный API-ключ | Проверьте секретный ключ в Stripe Dashboard |
| Ошибка подписи вебхука | Неверный секрет вебхука | Повторно скопируйте секрет подписи вебхука из Dashboard |
| Клиент не синхронизирован | Нет email у клиента Stripe | Убедитесь, что email задан в записях клиентов Stripe |
| Отсутствуют данные подписки | Недостаточно прав | Обновите разрешения ограниченного ключа |
| Дублирующиеся события | Повторная доставка вебхука | Реализуйте идемпотентность с ID событий |
Режим отладки
connectors: stripe: debug: true log_level: verbose log_webhooks: trueПроверка подключения
tajo connectors test stripe# ✓ API connection successful# ✓ Customers readable# ✓ Subscriptions readable# ✓ Payments readable# ✓ Webhook endpoint verifiedЛучшие практики
- Используйте ограниченные API Keys, создавайте ключи с минимально необходимыми разрешениями
- Всегда проверяйте подписи вебхуков, предотвращайте поддельные события вебхуков
- Обрабатывайте идемпотентность, используйте ID событий Stripe для предотвращения дублирующейся обработки
- Синхронизируйте метаданные клиентов, храните маркетинговые данные в полях метаданных Stripe
- Мониторинг доставки вебхуков, проверяйте Stripe Dashboard для выявления неудачных доставок
- Сначала используйте test mode, валидируйте интеграцию с тестовым режимом и тестовыми часами Stripe
Безопасность
- Аутентификация по API Key, доступ на основе секретных ключей с поддержкой ограниченных ключей
- Верификация подписей вебхуков, HMAC SHA-256 валидация подписей
- TLS-шифрование, все API-коммуникации зашифрованы через HTTPS
- PCI-совместимость, Stripe обеспечивает соответствие PCI DSS для платёжных данных
- IP-разрешение, опциональные IP-ограничения для доступа к API