موصل Stripe

موصل Stripe

اربط حساب Stripe الخاص بك مع Brevo عبر Tajo لمزامنة كاملة لبيانات الدفع، وإدارة دورة حياة الاشتراكات، وأتمتة التسويق المدفوعة بالإيرادات.

نظرة عامة

الخاصيةالقيمة
المنصةStripe
الفئةالتجارة الإلكترونية
تعقيد الإعدادسهل
تكامل رسمينعم
البيانات المُزامَنةعملاء، مدفوعات، اشتراكات، فواتير، أحداث
عنوان URL الأساسي لـ APIhttps://api.stripe.com/v1

الميزات

  • مزامنة العملاء - مزامنة عملاء Stripe مع جهات اتصال Brevo بما في ذلك البيانات الوصفية
  • تتبع المدفوعات - تتبع المدفوعات الناجحة، والاسترداد، والرسوم الفاشلة
  • إدارة الاشتراكات - مزامنة أحداث دورة حياة الاشتراكات لحملات الاحتفاظ
  • بيانات الفواتير - مزامنة تفاصيل الفواتير لأتمتة ما بعد الشراء والتجديد
  • إسناد الإيرادات - ربط القيمة الدائمة والإيراد الشهري المتكرر (MRR) بسمات Brevo
  • أحداث Webhook - إشعارات أحداث آنية لجميع أنشطة الدفع
  • دعم متعدد العملات - معالجة المدفوعات بعملات متعددة
  • تتبع جلسات الدفع - تتبع Stripe Checkout لاسترداد المدفوعات المهجورة

المتطلبات الأساسية

قبل البدء، تأكد من توفر ما يلي:

  1. حساب Stripe مع وصول إلى API
  2. مفاتيح Stripe API (المفتاح القابل للنشر والمفتاح السري)
  3. حساب Brevo مع وصول إلى API
  4. حساب Tajo

المصادقة

مصادقة مفتاح API

يستخدم Stripe مصادقة bearer token مع مفتاح API السري الخاص بك.

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

أمان مفتاح API

لا تكشف أبدًا عن مفتاحك السري في الكود من جانب العميل. استخدم المفتاح القابل للنشر لعمليات الواجهة الأمامية والمفتاح السري فقط على الخادم الخاص بك.

مفاتيح API المقيدة

أنشئ مفاتيح مقيدة بصلاحيات محددة لأمان معزز:

  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}"
# Data sync options
sync:
customers: true
payments: true
subscriptions: true
invoices: true
products: true
# Brevo list assignment
lists:
all_customers: 20
subscribers: 21
churned: 22

تعيين الحقول

ربط بيانات عملاء Stripe بسمات جهات اتصال Brevo:

التعيينات الافتراضية

Parameter Type Description
email required
string

عنوان البريد الإلكتروني للعميل (معرّف فريد)

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:
# 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_SOURCE

نقاط نهاية واجهة البرمجة

نقاط النهاية الأساسية

الطريقةنقطة النهايةالوصف
GET/v1/customersسرد جميع العملاء
POST/v1/customersإنشاء عميل
GET/v1/customers/{id}استرجاع عميل
POST/v1/customers/{id}تحديث عميل
GET/v1/chargesسرد جميع الرسوم
GET/v1/payment_intentsسرد نوايا الدفع

نقاط نهاية الاشتراكات

الطريقةنقطة النهايةالوصف
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فشل دفع الاشتراكتسلسل بريد المطالبة

أحداث العميل

الحدثالمحفزحالة الاستخدام
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
});
// Connect 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 Webhooks

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 حدود المعدل التالية:

النوعالحدالتفاصيل
الوضع المباشر100 طلب قراءة/ثانيةلكل مفتاح سري
الوضع المباشر100 طلب كتابة/ثانيةلكل مفتاح سري
وضع الاختبار25 طلب/ثانيةلكل مفتاح سري
تسليم Webhook100,000 حدث/يوملكل نقطة نهاية

معالجة حد المعدل

يُعيد Stripe استجابة 429 Too Many Requests عند تجاوز الحدود. طبّق التراجع الأُسّي. استخدم نقاط نهاية القائمة مع التقسيم التلقائي لاسترجاع البيانات بالجملة.

استكشاف الأخطاء وإصلاحها

المشاكل الشائعة

المشكلةالسببالحل
401 Unauthorizedمفتاح API غير صالحتحقق من المفتاح السري في Stripe Dashboard
فشل توقيع Webhookسر webhook غير صحيحأعد نسخ سر توقيع webhook من Dashboard
العميل غير مُزامَنلا يوجد بريد إلكتروني على عميل Stripeتأكد من تعيين البريد الإلكتروني على سجلات عملاء Stripe
بيانات الاشتراك مفقودةصلاحيات غير كافيةحدّث صلاحيات المفتاح المقيد
أحداث مكررةإعادة تسليم webhookطبّق idempotency مع معرّفات الأحداث

وضع التصحيح

تفعيل التسجيل المفصل:

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 المقيدة - أنشئ مفاتيح بأدنى الصلاحيات المطلوبة
  2. تحقق دائمًا من توقيعات webhook - منع أحداث webhook المزورة
  3. تعامل مع idempotency - استخدم معرّفات أحداث Stripe لمنع المعالجة المكررة
  4. زامن البيانات الوصفية للعميل - خزّن البيانات ذات الصلة بالتسويق في حقول البيانات الوصفية لـ Stripe
  5. راقب تسليم webhook - تحقق من Stripe Dashboard للتسليمات الفاشلة
  6. استخدم وضع الاختبار أولاً - تحقق من تكاملك باستخدام وضع اختبار Stripe وساعات الاختبار

الأمان

  • مصادقة مفتاح API - وصول قائم على المفتاح السري مع دعم المفاتيح المقيدة
  • التحقق من توقيع Webhook - التحقق من توقيع 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