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.
Implementierung: Verfügbar über npm-Paket | Quellcode: GitHub

Was können Sie synchronisieren?

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

Zahlungen

Synchronisieren Sie alle Zahlungstransaktionen, einschließlich einmaliger Zahlungen, Rückerstattungen und Aktualisierungen des Zahlungsstatus.

Kunden

Halten Sie Ihre Kundendaten synchron, einschließlich Kundenprofile, Kontaktinformationen und Metadaten.

Abonnements

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

Lizenzen

Synchronisieren Sie Lizenzinformationen, einschließlich Lizenzschlüssel, Aktivierungen und Aktualisierungen des Lizenzstatus.
Sie können jede Kombination dieser Entitäten synchronisieren, indem Sie sie im scopes Parameter angeben. Alle Synchronisierungsoperationen sind inkrementell und übertragen nur neue oder aktualisierte Datensätze für optimale Leistung.

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.
Wir erweitern kontinuierlich die Datenbankunterstützung. Wenn Sie eine neue Datenbankintegration beitragen möchten, reichen Sie bitte einen Pull Request in unserem GitHub-Repository ein.

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
Synchronisierungsintervall in Sekunden. Bestimmt, wie häufig die Synchronisierungsoperation ausgeführt wird. Wenn nicht angegeben, wird die Synchronisierung einmal ausgeführt und beendet.
--database
string
required
Zu verwendender Datenbanktyp. Unterstützte Werte: "mongodb", "postgres", "mysql" oder "clickhouse".
--database-uri
string
required
Verbindungs-URI für Ihre Datenbank:
  • MongoDB: mongodb://localhost:27017 oder 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
Komma-separierte Liste von Datenentitäten, die synchronisiert werden sollen. Verfügbare Bereiche: licences, payments, customers, subscriptions. Beispiel: "payments,customers".
--api-key
string
required
Ihr Dodo Payments API-Schlüssel. Sollte mit dp_live_ für den Live-Modus oder dp_test_ für den Testmodus beginnen.
--env
string
required
Zielumgebung. Muss entweder "live_mode" oder "test_mode" sein. Dies bestimmt, aus welcher Dodo Payments-Umgebung synchronisiert wird.
--rate-limit
number
Rate-Limit in Anfragen pro Sekunde. Steuert, wie schnell die Synchronisierungs-Engine API-Anfragen stellt, um die Dodo Payments API nicht zu überlasten.

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 Sie .start() für die automatische Synchronisierung verwenden. Die Synchronisierung wird kontinuierlich im angegebenen Intervall ausgeführt, 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 der Verwendung der manuellen Synchronisierung ist die interval Option nicht erforderlich. Sie können .run() jederzeit aufrufen, wenn Sie eine Synchronisierungsoperation durchführen müssen.

PostgreSQL-Beispiel

So verwenden Sie 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 verwenden Sie 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 verwenden Sie 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
required
Name der zu verwendenden Datenbank. Unterstützte Werte: "mongodb", "postgres", "mysql" oder "clickhouse".
databaseURI
string
required
Verbindungszeichenfolge für Ihre 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[]
required
Array von Entitäten, die synchronisiert werden sollen. Verfügbare Optionen: "licences", "payments", "customers", "subscriptions". Sie können jede Kombination davon einfügen.
dodoPaymentsOptions
object
required
Dodo Payments API-Konfiguration für Authentifizierung und Umgebungswahl. Siehe die TypeScript SDK-Typen für vollständige Optionen.Erforderliche Eigenschaften:
  • bearerToken: Ihr Dodo Payments API-Schlüssel
  • environment: Entweder "test_mode" oder "live_mode"
interval
number
Zeit in Sekunden zwischen automatischen Synchronisierungen. Erforderlich, wenn Sie .start() für die automatische Synchronisierung verwenden. Optional, wenn Sie .run() für die manuelle Synchronisierung verwenden.
rateLimit
number
Anzahl der Anfragen pro Sekunde. Steuert, wie schnell die Synchronisierungs-Engine API-Anfragen stellt, um die Dodo Payments API nicht zu überlasten.

Wichtige Informationen

MongoDB: Eine Datenbank mit dem Namen dodopayments_sync wird automatisch auf Ihrem Datenbankserver erstellt. Alle Synchronisierungsdaten werden dort gespeichert. Dieser Datenbankname ist derzeit festgelegt und kann nicht geändert werden.PostgreSQL: Tabellen (Subscriptions, Payments, Licenses, Customers) werden in der Datenbank erstellt, die in Ihrer Verbindungs-URI angegeben ist. Daten werden als JSONB gespeichert.MySQL: Tabellen (Subscriptions, Payments, Licenses, Customers) werden in der Datenbank erstellt, die in Ihrer Verbindungs-URI angegeben ist. Daten werden als JSON gespeichert.ClickHouse: Tabellen (Subscriptions, Payments, Licenses, Customers) werden mit der ReplacingMergeTree-Engine erstellt. Verwenden Sie beim Abfragen das FINAL Schlüsselwort, um sicherzustellen, dass die Ergebnisse dedupliziert sind.
Die Synchronisierungs-Engine verfolgt Änderungen und synchronisiert nur neue oder aktualisierte Datensätze, wodurch nachfolgende Synchronisierungen auch bei großen Datensätzen effizient sind.

Zusätzliche Ressourcen