الانتقال إلى المحتوى الرئيسي
توفر مدفوعات Dodo ميزة مزامنة قاعدة البيانات المدمجة التي تقوم بمزامنة بيانات الدفع الخاصة بك تلقائيًا مع قاعدة البيانات الخاصة بك. يمكنك مزامنة المدفوعات والعملاء والاشتراكات والتراخيص للحفاظ على نسخة محلية من بياناتك للتحليلات أو التقارير أو التكامل مع أنظمة أخرى.
التنفيذ: متاح عبر npm package | رمز المصدر: GitHub

ماذا يمكنك مزامنته؟

تدعم ميزة مزامنة قاعدة البيانات لدينا مزامنة الكيانات التالية من مدفوعات Dodo إلى قاعدة البيانات الخاصة بك:

Payments

قم بمزامنة جميع معاملات الدفع، بما في ذلك الدفعات لمرة واحدة، والمبالغ المستردة، وتحديثات حالة الدفع.

Customers

حافظ على تزامن بيانات العملاء، بما في ذلك ملفات تعريف العملاء، ومعلومات الاتصال، والبيانات الوصفية.

Subscriptions

قم بمزامنة بيانات الاشتراكات، بما في ذلك الاشتراكات النشطة، ودورات الفوترة، وتغييرات حالة الاشتراك.

Licenses

قم بمزامنة معلومات الترخيص، بما في ذلك مفاتيح الترخيص، والتفعيلات، وتحديثات حالة الترخيص.
يمكنك مزامنة أي توليفة من هذه الكيانات عن طريق تحديدها في المعامل scopes. جميع عمليات المزامنة تدريجية وتنقل فقط السجلات الجديدة أو المحدثة لتحقيق أفضل أداء.

دعم قاعدة البيانات

ندعم حاليًا MongoDB وPostgreSQL وMySQL وClickHouse. نعمل بنشاط على توسيع الدعم لـ:
  • قواعد البيانات: Snowflake وغيرها.
  • خطوط الأنابيب: خطوط أنابيب ETL، المزامنة في الوقت الحقيقي.
نحن نقوم بتوسيع دعم قواعد البيانات باستمرار. إذا رغبت في المساهمة بتكامل قاعدة بيانات جديدة، يرجى تقديم طلب سحب إلى مستودعنا على GitHub.

البدء

يمكنك استخدام ميزة مزامنة قاعدة البيانات لدينا عبر CLI أو برمجيًا في الكود الخاص بك. توفر كلا الطريقتين نفس الوظائف—اختر الطريقة التي تناسب سير العمل الخاص بك.

استخدام CLI

يوفر أداة CLI طريقة سريعة لإعداد وتشغيل مزامنة قاعدة البيانات. قم بتثبيته عالميًا لاستخدامه من أي مكان في الطرفية الخاصة بك:
npm install -g dodo-sync

تشغيل CLI

يدعم CLI وضعين: الوضع التفاعلي للإعداد الموجه، والوضع اليدوي للتكوين المباشر. الوضع التفاعلي: قم بتشغيل الأمر بدون معلمات لبدء معالج الإعداد التفاعلي.
dodo-sync
الوضع اليدوي: مرر المعلمات مباشرة لتخطي المعالج.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
أمثلة:
# MongoDB
dodo-sync -i 600 -d mongodb -u mongodb://mymongodb.url --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# PostgreSQL
dodo-sync -i 600 -d postgres -u postgresql://user:password@localhost:5432/mydb --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# MySQL
dodo-sync -i 600 -d mysql -u mysql://user:password@localhost:3306/mydb --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# ClickHouse
dodo-sync -i 600 -d clickhouse -u http://localhost:8123 --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

معلمات CLI

--interval
number
فاصل المزامنة بالثواني. يحدد عدد مرات تشغيل عملية المزامنة. إذا لم يتم توفيره، فسيتم تشغيل المزامنة مرة واحدة ثم التوقف.
--database
string
مطلوب
نوع قاعدة البيانات المراد استخدامها. القيم المدعومة: "mongodb"، "postgres"، "mysql"، أو "clickhouse".
--database-uri
string
مطلوب
سلسلة اتصال لقاعدة البيانات الخاصة بك:
  • MongoDB: mongodb://localhost:27017 أو mongodb+srv://user:pass@cluster.mongodb.net/
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
--scopes
string
مطلوب
قائمة مفصولة بفواصل للكيانات المراد مزامنتها. النطاقات المتاحة: licences، payments، customers، subscriptions. على سبيل المثال: "payments,customers".
--api-key
string
مطلوب
مفتاح واجهة برمجة تطبيقات Dodo Payments الخاص بك. يجب أن يبدأ بـ dp_live_ في وضع الإنتاج أو dp_test_ في وضع الاختبار.
--env
string
مطلوب
البيئة المستهدفة. يجب أن تكون إما "live_mode" أو "test_mode". هذا يحدد البيئة التي سيتم المزامنة منها في Dodo Payments.
--rate-limit
number
معدل الطلبات في الثانية. يتحكم في سرعة إرسال محرك المزامنة لطلبات واجهة برمجة التطبيقات لتجنب إثقال واجهة Dodo Payments.

الاستخدام في الكود الخاص بك

للحصول على تحكم برمجي، قم بدمج ميزة المزامنة مباشرة في تطبيقك. قم بتثبيتها كاعتماد في مشروعك:
npm install dodo-sync

المزامنة التلقائية (استنادًا إلى الفترات)

استخدم المزامنة التلقائية عندما تريد أن تعمل المزامنة باستمرار على فترات منتظمة:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60, // Sync every 60 seconds
  database: 'mongodb',
  databaseURI: process.env.MONGODB_URI, // e.g., 'mongodb://localhost:27017'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode' // or 'live_mode'
  }
});

// Initialize connection
await syncDodoPayments.init();

// Start the sync loop
syncDodoPayments.start();
الخيار interval مطلوب عند استخدام .start() للمزامنة التلقائية. ستعمل المزامنة باستمرار عند الفاصل المحدد حتى يتم إيقاف العملية.

المزامنة اليدوية

استخدم المزامنة اليدوية عندما تريد تشغيل عمليات المزامنة عند الطلب (على سبيل المثال، من مهمة cron أو نقطة نهاية API):
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  database: 'mongodb',
  databaseURI: process.env.MONGODB_URI,
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

// Initialize connection
await syncDodoPayments.init();

// Trigger a single sync operation
await syncDodoPayments.run();
عند استخدام المزامنة اليدوية، لا يكون الخيار interval مطلوبًا. يمكنك استدعاء .run() كلما احتجت إلى تنفيذ عملية مزامنة.

مثال PostgreSQL

إليك كيفية استخدام dodo-sync مع PostgreSQL:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'postgres',
  databaseURI: process.env.POSTGRES_URI, // e.g., 'postgresql://user:password@localhost:5432/mydb'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

مثال MySQL

إليك كيفية استخدام dodo-sync مع MySQL:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'mysql',
  databaseURI: process.env.MYSQL_URI, // e.g., 'mysql://user:password@localhost:3306/mydb'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

مثال ClickHouse

إليك كيفية استخدام dodo-sync مع ClickHouse:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'clickhouse',
  databaseURI: process.env.CLICKHOUSE_URI, // e.g., 'http://localhost:8123'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

خيارات المُنشئ

database
string
مطلوب
اسم قاعدة البيانات المطلوب استخدامها. القيم المدعومة: "mongodb"، "postgres"، "mysql"، أو "clickhouse".
databaseURI
string
مطلوب
سلسلة الاتصال لقاعدة البيانات الخاصة بك:
  • MongoDB: mongodb://localhost:27017 أو mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
scopes
string[]
مطلوب
مصفوفة الكيانات المراد مزامنتها. الخيارات المتاحة: "licences"، "payments"، "customers"، "subscriptions". يمكنك تضمين أي توليفة منها.
dodoPaymentsOptions
object
مطلوب
تكوين واجهة برمجة تطبيقات Dodo Payments للمصادقة وتحديد البيئة. راجع أنواع SDK لـ TypeScript للحصول على الخيارات الكاملة.الخصائص المطلوبة:
  • bearerToken: مفتاح واجهة برمجة تطبيقات Dodo Payments الخاص بك
  • environment: إما "test_mode" أو "live_mode"
interval
number
الوقت بالثواني بين المزامنات التلقائية. مطلوب عند استخدام .start() للمزامنة التلقائية. اختياري عند استخدام .run() للمزامنة اليدوية.
rateLimit
number
عدد الطلبات في الثانية. يتحكم في سرعة إرسال محرك المزامنة لطلبات واجهة برمجة التطبيقات لتجنب إثقال Dodo Payments.

معلومات هامة

MongoDB: سيتم إنشاء قاعدة بيانات باسم dodopayments_sync تلقائيًا على خادم قاعدة البيانات الخاص بك. سيتم تخزين جميع بيانات المزامنة هناك. هذا الاسم ثابت حاليًا ولا يمكن تغييره.PostgreSQL: سيتم إنشاء الجداول (Subscriptions، Payments، Licenses، Customers) في قاعدة البيانات المحددة في سلسلة الاتصال الخاصة بك. يتم تخزين البيانات كـ JSONB.MySQL: سيتم إنشاء الجداول (Subscriptions، Payments، Licenses، Customers) في قاعدة البيانات المحددة في سلسلة الاتصال الخاصة بك. يتم تخزين البيانات كـ JSON.ClickHouse: سيتم إنشاء الجداول (Subscriptions، Payments، Licenses، Customers) باستخدام محرك ReplacingMergeTree. عند الاستعلام، استخدم الكلمة المفتاحية FINAL لضمان نتائج خالية من التكرار.
يتتبع محرك المزامنة التغييرات ويزامن فقط السجلات الجديدة أو المحدثة، مما يجعل المزامنات اللاحقة فعالة حتى مع مجموعات البيانات الكبيرة.

موارد إضافية