Skip to main content
Synchronisieren Sie Ihre Dodo Payments-Daten für Analytics, Reporting und Integrationen mit Ihrer eigenen Datenbank. Die Sync-Engine repliziert Zahlungen, Kunden, Abonnements und Lizenzen automatisch nach MongoDB, PostgreSQL, MySQL oder ClickHouse.
Paket: dodo-sync auf npm | Quelle: GitHub

Was können Sie synchronisieren?

Wählen Sie eine beliebige Kombination dieser Entitäten:

Payments

Alle Zahlungstransaktionen, einschließlich einmaliger Zahlungen, Rückerstattungen und Statusaktualisierungen.

Customers

Kundenprofile, Kontaktinformationen und Metadaten.

Subscriptions

Abonnementdaten, Abrechnungszyklen und Statusänderungen.

Licenses

Lizenzschlüssel, Aktivierungen und Statusaktualisierungen.
Geben Sie über den Parameter scopes an, welche Entitäten synchronisiert werden sollen. Bei jedem Durchlauf wird jeder Datensatz in den ausgewählten Bereichen abgerufen und anhand seiner ID geschrieben, sodass vorhandene Zeilen direkt aktualisiert statt dupliziert werden. Jede Datensatzseite wird in einem einzigen Batch in Ihre Datenbank geschrieben.

Datenbankunterstützung

Dodo Sync unterstützt MongoDB, PostgreSQL, MySQL 8.0.20 oder höher sowie ClickHouse. Die Unterstützung für Snowflake und andere Datenbanken, ETL-Pipelines und die Echtzeit-Synchronisierung befindet sich in Entwicklung. Um eine neue Datenbankintegration beizusteuern, reichen Sie einen Pull Request im GitHub-Repository ein.

Erste Schritte

Verwenden Sie Dodo Sync für eine schnelle Einrichtung über die CLI oder programmatisch in Ihrem Code, um es in Ihre Anwendung zu integrieren. Beide Methoden bieten dieselbe Funktionalität.

Verwendung der CLI

Installieren Sie die CLI global, um sie von überall ausführen zu können:

Ausführen der CLI

Die CLI unterstützt zwei Modi: interaktiv für eine angeleitete Einrichtung und manuell für eine direkte Konfiguration. Interaktiver Modus: Führen Sie den Befehl ohne Argumente aus, um den Einrichtungsassistenten zu starten.
Manueller Modus: Übergeben Sie die Argumente direkt, um den Assistenten zu überspringen.
Beispiele:

CLI-Argumente

number
erforderlich
Synchronisierungsintervall in Sekunden. Die CLI wird in diesem Intervall kontinuierlich ausgeführt. Für eine einmalige Synchronisierung verwenden Sie .run() in Ihrem Code.
string
erforderlich
Datenbanktyp: "mongodb", "postgres", "mysql" oder "clickhouse".
string
erforderlich
Verbindungs-URI für Ihre 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
string
erforderlich
Kommagetrennte Liste der zu synchronisierenden Entitäten: licences, payments, customers, subscriptions. Beispiel: "payments,customers".
string
erforderlich
Ihr Dodo Payments API-Schlüssel aus Developer → API Keys. Verwenden Sie einen Schlüssel aus demselben Modus wie --env.
string
erforderlich
Umgebung: "live_mode" oder "test_mode".
number
Ratenbegrenzung in Anfragen pro Sekunde. Steuert, wie schnell die Sync-Engine API-Anfragen stellt. Der Standardwert ist 10; Werte von 100 oder höher deaktivieren die Drosselung.

Verwendung in Ihrem Code

Integrieren Sie die Synchronisierungsfunktion direkt in Ihre Anwendung. Installieren Sie sie als Abhängigkeit:

Automatische Synchronisierung (intervallbasiert)

Führen Sie die Synchronisierung in regelmäßigen Abständen kontinuierlich aus:
Die Option interval ist erforderlich, wenn .start() verwendet wird. Die Synchronisierung läuft im angegebenen Intervall kontinuierlich, bis der Prozess beendet wird.

Manuelle Synchronisierung

Lösen Sie Synchronisierungsvorgänge bei Bedarf aus, beispielsweise über einen cron job, einen API-Endpunkt oder eine serverlose Funktion:
Die Option interval ist für eine manuelle Synchronisierung nicht erforderlich. Rufen Sie .run() auf, wann immer Sie eine Synchronisierung benötigen. .run() wird erst aufgelöst, nachdem alle Schreibvorgänge in der Datenbank abgeschlossen sind. .close() ist ein Alias für .disconnect().

Ausführung auf Serverless

Auf Vercel, AWS Lambda oder ähnlichen Plattformen:
  • Rufen Sie .disconnect() in einem finally-Block auf, wie im obigen Beispiel, damit Verbindungen zwischen den Aufrufen nicht offen bleiben.
  • Verwenden Sie die Node.js-Laufzeitumgebung. Edge-Laufzeitumgebungen können keine Datenbankverbindungen öffnen.
  • Erhöhen Sie das Funktions-Timeout. Eine große Synchronisierung kann länger als das standardmäßige Limit dauern. Legen Sie auf Vercel export const maxDuration = 60; fest.
  • Synchronisieren Sie pro Aufruf weniger Bereiche, beispielsweise scopes: ['payments'], damit jeder Durchlauf kurz bleibt.

PostgreSQL-Beispiel

MySQL-Beispiel

ClickHouse-Beispiel

Konstruktoroptionen

string
erforderlich
Datenbanktyp: "mongodb", "postgres", "mysql" oder "clickhouse".
string
erforderlich
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
string[]
erforderlich
Array der zu synchronisierenden Entitäten: "licences", "payments", "customers", "subscriptions". Jede Kombination ist möglich.
object
erforderlich
Konfiguration der Dodo Payments API. Eine vollständige Übersicht der Optionen finden Sie unter TypeScript SDK types.Erforderliche Eigenschaften:
  • bearerToken: Ihr Dodo Payments API-Schlüssel
  • environment: "test_mode" oder "live_mode"
number
Zeit in Sekunden zwischen automatischen Synchronisierungen. Erforderlich für .start(), optional für .run().
number
Ratenbegrenzung in Anfragen pro Sekunde. Der Standardwert ist 10; Werte von 100 oder höher deaktivieren die Drosselung.

Wichtige Informationen

MongoDB: Collections (subscriptions, payments, licences, customers) werden in der Datenbank erstellt, die in Ihrer Verbindungs-URI angegeben ist, beispielsweise mongodb://localhost:27017/my_database. Wenn die URI keine Datenbank angibt, verwendet Dodo Sync dodopayments_sync.PostgreSQL: Tabellen (Subscriptions, Payments, Licenses, Customers) werden in der Datenbank erstellt, die in Ihrer Verbindungs-URI angegeben ist. Daten werden als JSONB gespeichert.MySQL: Erfordert MySQL 8.0.20 oder höher. 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 Schlüsselwort FINAL, um deduplizierte Ergebnisse sicherzustellen.

Upgrade von 0.x

Version 1.0 ändert die Speicherung von MongoDB-Daten und erhöht die MySQL-Anforderung. Vor dem Upgrade:
  • MongoDB: Löschen Sie Ihre vorhandene licences-Collection. Lizenzdokumente werden jetzt nach der Lizenz- id statt nach subscription_id gespeichert, und die nächste Synchronisierung füllt die Collection erneut.
  • MongoDB: Prüfen Sie Ihre Verbindungs-URI. Daten werden jetzt in die Datenbank geschrieben, die in der URI angegeben ist, und nicht immer in dodopayments_sync. Um Ihre vorhandenen Daten weiterhin zu verwenden, fügen Sie dodopayments_sync in die URI ein oder lassen Sie die Datenbank weg.
  • MySQL: Führen Sie ein Upgrade auf MySQL 8.0.20 oder höher durch.

Weitere Ressourcen

GitHub Repository

Quellcode anzeigen, Probleme melden oder Verbesserungen beitragen

npm Package

Paketdetails und Installationsanweisungen anzeigen
Zuletzt geändert am 8. Oktober 2026