Коннектор Stripe

Коннектор Stripe

Подключите аккаунт Stripe к Brevo через Tajo для полной синхронизации платёжных данных, управления жизненным циклом подписок и маркетинговой автоматизации на основе данных о выручке.

Обзор

СвойствоЗначение
ПлатформаStripe
КатегорияE-commerce
Сложность настройкиПростая
Официальная интеграцияДа
Синхронизируемые данныеКлиенты, платежи, подписки, счета, события
Базовый URL APIhttps://api.stripe.com/v1

Возможности

  • Синхронизация клиентов, синхронизация клиентов Stripe с контактами Brevo, включая метаданные
  • Отслеживание платежей, трекинг успешных платежей, возвратов и неудачных списаний
  • Управление подписками, синхронизация событий жизненного цикла подписок для кампаний удержания
  • Данные по счетам, синхронизация деталей счетов для автоматизации после покупки и при продлении
  • Атрибуция выручки, сопоставление LTV и MRR с атрибутами Brevo
  • Webhook-события, уведомления о событиях в реальном времени для всех платёжных операций
  • Поддержка нескольких валют, обработка платежей в разных валютах
  • Отслеживание сессий Checkout, трекинг Stripe Checkout для восстановления незавершённых платежей

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Аккаунт Stripe с доступом к API
  2. API-ключи Stripe (публичный и секретный)
  3. Аккаунт Brevo с доступом к API
  4. Аккаунт Tajo

Аутентификация

Аутентификация по API Key

Stripe использует Bearer-аутентификацию с секретным API-ключом.

Terminal window
curl https://api.stripe.com/v1/customers \
-u sk_live_YOUR_SECRET_KEY:

Безопасность API Key

Никогда не раскрывайте секретный ключ в клиентском коде. Используйте публичный ключ для фронтенд-операций и секретный ключ только на стороне сервера.

Ограниченные API Keys

Создавайте ограниченные ключи с конкретными разрешениями для повышения безопасности:

  1. Перейдите в Stripe Dashboard > Developers > API Keys
  2. Нажмите “Create restricted key”
  3. Предоставьте только разрешения, необходимые Tajo

Необходимые разрешения

customers: read
charges: read
payment_intents: read
subscriptions: read
invoices: read
events: read
products: read
prices: 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
});
// Подключение Stripe
await 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 mode25 запросов/секНа секретный ключ
Доставка вебхуков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

Проверка подключения

Terminal window
tajo connectors test stripe
# ✓ API connection successful
# ✓ Customers readable
# ✓ Subscriptions readable
# ✓ Payments readable
# ✓ Webhook endpoint verified

Лучшие практики

  1. Используйте ограниченные API Keys, создавайте ключи с минимально необходимыми разрешениями
  2. Всегда проверяйте подписи вебхуков, предотвращайте поддельные события вебхуков
  3. Обрабатывайте идемпотентность, используйте ID событий Stripe для предотвращения дублирующейся обработки
  4. Синхронизируйте метаданные клиентов, храните маркетинговые данные в полях метаданных Stripe
  5. Мониторинг доставки вебхуков, проверяйте Stripe Dashboard для выявления неудачных доставок
  6. Сначала используйте test mode, валидируйте интеграцию с тестовым режимом и тестовыми часами Stripe

Безопасность

  • Аутентификация по API Key, доступ на основе секретных ключей с поддержкой ограниченных ключей
  • Верификация подписей вебхуков, HMAC SHA-256 валидация подписей
  • TLS-шифрование, все API-коммуникации зашифрованы через HTTPS
  • PCI-совместимость, Stripe обеспечивает соответствие PCI DSS для платёжных данных
  • IP-разрешение, опциональные IP-ограничения для доступа к API

Связанные ресурсы

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI-ассистент

Привет! Спрашивайте меня о документации.

Начните бесплатно с Brevo