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

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

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

المدفوعات

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

العملاء

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

الاشتراكات

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

التراخيص

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

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

للحصول على تحكم برمجي، قم بدمج ميزة المزامنة مباشرة في تطبيقك. قم بتثبيتها كاعتماد في مشروعك:
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
required
اسم قاعدة البيانات للاستخدام. القيم المدعومة: "mongodb"، "postgres"، "mysql"، أو "clickhouse".
databaseURI
string
required
سلسلة الاتصال بقاعدة البيانات الخاصة بك:
  • 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[]
required
مصفوفة من الكيانات للمزامنة. الخيارات المتاحة: "licences"، "payments"، "customers"، "subscriptions". يمكنك تضمين أي مجموعة من هذه.
dodoPaymentsOptions
object
required
تكوين API لمدفوعات Dodo للمصادقة واختيار البيئة. راجع أنواع SDK TypeScript للحصول على الخيارات الكاملة.الخصائص المطلوبة:
  • bearerToken: مفتاح API الخاص بك في مدفوعات Dodo
  • environment: إما "test_mode" أو "live_mode"
interval
number
الوقت بالثواني بين المزامنات التلقائية. مطلوب عند استخدام .start() للمزامنة التلقائية. اختياري عند استخدام .run() للمزامنة اليدوية.
rateLimit
number
عدد الطلبات في الثانية. يتحكم في مدى سرعة محرك المزامنة في إجراء طلبات API لتجنب إغراق API مدفوعات Dodo.

معلومات هامة

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

موارد إضافية