Zum Hauptinhalt springen
Dodo Payments bietet eine integrierte Datenbank-Synchronisierungsfunktion, die Ihre Zahlungsdaten automatisch mit Ihrer eigenen Datenbank synchronisiert. Sie können Zahlungen, Kunden, Abonnements und Lizenzen synchronisieren, um eine lokale Kopie Ihrer Daten für Analysen, Berichterstattung oder die Integration mit anderen Systemen zu behalten.
Implementation: Available via npm package | Source Code: GitHub

Was können Sie synchronisieren?

Unsere Datenbank-Synchronisierungsfunktion unterstützt die Synchronisierung der folgenden Dodo Payments-Entitäten mit Ihrer Datenbank:

Payments

Synchronisiere alle Zahlungstransaktionen, einschließlich Einmalzahlungen, Rückerstattungen und Zahlungsstatusaktualisierungen.

Customers

Halte deine Kundendaten synchron, einschließlich Kundenprofile, Kontaktinformationen und Metadaten.

Subscriptions

Synchronisiere Abonnementdaten, einschließlich aktiver Abonnements, Abrechnungszyklen und Änderungen des Abonnementstatus.

Licenses

Synchronisiere Lizenzinformationen, einschließlich Lizenzschlüsseln, Aktivierungen und Aktualisierungen des Lizenzstatus.
You can sync any combination of these entities by specifying them in the scopes parameter. All sync operations are incremental and only transfer new or updated records for optimal performance.

Datenbankunterstützung

Derzeit unterstützen wir MongoDB, PostgreSQL, MySQL und ClickHouse. Wir arbeiten aktiv daran, die Unterstützung für:
  • Datenbanken: Snowflake und andere.
  • Pipelines: ETL-Pipelines, Echtzeitsynchronisierung zu erweitern.
We’re continuously expanding database support. If you’d like to contribute a new database integration, please submit a Pull Request to our GitHub repository.

Erste Schritte

Sie können unsere Datenbank-Synchronisierungsfunktion über die CLI oder programmgesteuert in Ihrem Code verwenden. Beide Methoden bieten die gleiche Funktionalität – wählen Sie diejenige, die am besten zu Ihrem Workflow passt.

Verwendung der CLI

Das CLI-Tool bietet eine schnelle Möglichkeit, die Datenbanksynchronisierung einzurichten und auszuführen. Installieren Sie es global, um es von überall in Ihrem Terminal verwenden zu können:
npm install -g dodo-sync

Ausführen der CLI

Die CLI unterstützt zwei Modi: Interaktiver Modus für geführte Einrichtung und Manueller Modus für direkte Konfiguration. Interaktiver Modus: Führen Sie einfach den Befehl ohne Argumente aus, um den interaktiven Einrichtungsassistenten zu starten.
dodo-sync
Manueller Modus: Übergeben Sie Argumente direkt, um den Assistenten zu überspringen.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
Beispiele:
# 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-Argumente

--interval
number
Sync-Intervall in Sekunden. Bestimmt, wie häufig der Sync-Vorgang ausgeführt wird. Wird kein Wert angegeben, läuft der Sync einmal und endet.
--database
string
erforderlich
Zu verwendender Datenbanktyp. Unterstützte Werte: "mongodb", "postgres", "mysql" oder "clickhouse".
--database-uri
string
erforderlich
Verbindungs-URI für deine Datenbank:
  • MongoDB: mongodb://localhost:27017 oder 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
erforderlich
Kommagetrennte Liste von Datenentitäten zum Synchronisieren. Verfügbare Bereiche: licences, payments, customers, subscriptions. Beispiel: "payments,customers".
--api-key
string
erforderlich
Dein Dodo Payments API-Schlüssel. Muss mit dp_live_ für den Live-Modus oder dp_test_ für den Testmodus beginnen.
--env
string
erforderlich
Zielumgebung. Muss entweder "live_mode" oder "test_mode" sein. Dies bestimmt, aus welcher Dodo Payments-Umgebung synchronisiert wird.
--rate-limit
number
Ratenbegrenzung in Anfragen pro Sekunde. Steuert, wie schnell die Sync-Engine API-Anfragen stellt, um eine Überlastung der Dodo Payments API zu vermeiden.

Verwendung in Ihrem Code

Für programmgesteuerte Kontrolle integrieren Sie die Synchronisierungsfunktion direkt in Ihre Anwendung. Installieren Sie sie als Abhängigkeit in Ihrem Projekt:
npm install dodo-sync

Automatische Synchronisierung (intervallbasiert)

Verwenden Sie die automatische Synchronisierung, wenn Sie möchten, dass die Synchronisierung kontinuierlich in regelmäßigen Abständen ausgeführt wird:
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();
Die interval-Option ist erforderlich, wenn .start() für automatische Synchronisierung verwendet wird. Der Sync läuft kontinuierlich im angegebenen Intervall, bis der Prozess gestoppt wird.

Manuelle Synchronisierung

Verwenden Sie die manuelle Synchronisierung, wenn Sie Synchronisierungsoperationen auf Abruf auslösen möchten (z. B. von einem Cron-Job oder API-Endpunkt):
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();
Bei manueller Synchronisierung ist die interval-Option nicht erforderlich. Du kannst .run() aufrufen, wann immer du eine Synchronisierung durchführen musst.

PostgreSQL-Beispiel

So verwendest du dodo-sync mit 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-Beispiel

So verwendest du dodo-sync mit 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-Beispiel

So verwendest du dodo-sync mit 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();

Konstruktoroptionen

database
string
erforderlich
Name der zu verwendenden Datenbank. Unterstützte Werte: "mongodb", "postgres", "mysql" oder "clickhouse".
databaseURI
string
erforderlich
Verbindungszeichenfolge für deine Datenbank:
  • MongoDB: mongodb://localhost:27017 oder mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
scopes
string[]
erforderlich
Array von zu synchronisierenden Entitäten. Verfügbare Optionen: "licences", "payments", "customers", "subscriptions". Du kannst jede Kombination davon einschließen.
dodoPaymentsOptions
object
erforderlich
Dodo Payments API-Konfiguration für Authentifizierung und Umgebungswahl. Siehe die TypeScript SDK-Typen für vollständige Optionen.Erforderliche Eigenschaften:
  • bearerToken: Dein Dodo Payments API-Schlüssel
  • environment: Entweder "test_mode" oder "live_mode"
interval
number
Zeit in Sekunden zwischen automatischen Synchronisierungen. Erforderlich bei Verwendung von .start() für automatische Synchronisierung. Optional bei Verwendung von .run() für manuelle Synchronisierung.
rateLimit
number
Anzahl der Anfragen pro Sekunde. Steuert, wie schnell die Sync-Engine API-Anfragen stellt, um eine Überlastung der Dodo Payments API zu vermeiden.

Wichtige Informationen

MongoDB: Auf deinem Datenbankserver wird automatisch eine Datenbank mit dem Namen dodopayments_sync erstellt. Alle synchronisierten Daten werden dort gespeichert. Dieser Datenbankname ist derzeit fest und kann nicht geändert werden.PostgreSQL: Tabellen (Subscriptions, Payments, Licenses, Customers) werden in der Datenbank erstellt, die in deiner Verbindungs-URI angegeben ist. Die Daten werden als JSONB gespeichert.MySQL: Tabellen (Subscriptions, Payments, Licenses, Customers) werden in der Datenbank erstellt, die in deiner Verbindungs-URI angegeben ist. Die Daten werden als JSON gespeichert.ClickHouse: Tabellen (Subscriptions, Payments, Licenses, Customers) werden mit der ReplacingMergeTree-Engine erstellt. Verwende beim Abfragen das Schlüsselwort FINAL, um deduplizierte Ergebnisse sicherzustellen.
Die Sync-Engine verfolgt Änderungen und synchronisiert nur neue oder aktualisierte Datensätze, wodurch nachfolgende Syncs selbst bei großen Datensätzen effizient bleiben.

Zusätzliche Ressourcen