Skip to main content
Synkronisera dina Dodo Payments-data till din egen databas för analys, rapportering och integrationer. Synkroniseringsmotorn replikerar automatiskt betalningar, kunder, prenumerationer och licenser till MongoDB, PostgreSQL, MySQL eller ClickHouse.
Paket: dodo-sync på npm | Källa: GitHub

Vad kan du synkronisera?

Välj valfri kombination av dessa entiteter:

Payments

Alla betalningstransaktioner, inklusive engångsbetalningar, återbetalningar och statusuppdateringar.

Customers

Kundprofiler, kontaktinformation och metadata.

Subscriptions

Prenumerationsdata, faktureringscykler och statusändringar.

Licenses

Licensnycklar, aktiveringar och statusuppdateringar.
Ange vilka entiteter som ska synkroniseras med parametern scopes. Varje körning hämtar alla poster i de valda omfången och skriver dem med ID, så befintliga rader uppdateras på plats i stället för att dupliceras. Varje sida med poster skrivs till din databas i en enda batch.

Databasstöd

Dodo Sync har stöd för MongoDB, PostgreSQL, MySQL 8.0.20 eller senare och ClickHouse. Stöd för Snowflake och andra databaser, ETL-pipelines och realtidssynkronisering är under utveckling. Om du vill bidra med en ny databasintegration skickar du en pull request till GitHub-förrådet.

Kom igång

Använd Dodo Sync via CLI för snabb konfigurering eller programmatiskt i din kod för integrering i din applikation. Båda metoderna erbjuder samma funktionalitet.

Använda CLI

Installera CLI globalt för att kunna köra det var som helst:

Köra CLI

CLI stöder två lägen: interaktivt för guidad konfigurering och manuellt för direkt konfigurering. Interaktivt läge: Kör utan argument för att starta konfigurationsguiden.
Manuellt läge: Skicka argument direkt för att hoppa över guiden.
Exempel:

CLI-argument

number
obligatorisk
Synkroniseringsintervall i sekunder. CLI körs kontinuerligt med detta intervall. För en engångssynkronisering använder du .run() i din kod.
string
obligatorisk
Databastyp: "mongodb", "postgres", "mysql" eller "clickhouse".
string
obligatorisk
Anslutnings-URI för din databas:
  • MongoDB: mongodb://localhost:27017 eller 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
obligatorisk
Kommaseparerad lista över entiteter som ska synkroniseras: licences, payments, customers, subscriptions. Exempel: "payments,customers".
string
obligatorisk
Din Dodo Payments API-nyckel från Developer → API Keys. Använd en nyckel från samma läge som --env.
string
obligatorisk
Miljö: "live_mode" eller "test_mode".
number
Hastighetsbegränsning i förfrågningar per sekund. Styr hur snabbt synkroniseringsmotorn gör API-förfrågningar. Standardvärdet är 10; värden på 100 eller högre inaktiverar begränsningen.

Använda i din kod

Integrera synkroniseringsfunktionen direkt i din applikation. Installera den som ett beroende:

Automatisk synkronisering (intervallbaserad)

Kör synkroniseringen kontinuerligt med regelbundna intervall:
Alternativet interval krävs när .start() används. Synkroniseringen körs kontinuerligt med det angivna intervallet tills processen stoppas.

Manuell synkronisering

Utlös synkroniseringsåtgärder vid behov, till exempel från ett cron-jobb, en API-endpoint eller en serverless-funktion:
Alternativet interval krävs inte för manuell synkronisering. Anropa .run() när du behöver synkronisera. .run() slutförs först när alla databasskrivningar är klara. .close() är ett alias för .disconnect().

Körning i Serverless

På Vercel, AWS Lambda eller liknande plattformar:
  • Anropa .disconnect() i ett finally-block, som i exemplet ovan, så att anslutningar inte förblir öppna mellan anrop.
  • Använd Node.js-runtime. Edge-runtime kan inte öppna databasanslutningar.
  • Höj funktionens timeout. En stor synkronisering kan ta längre tid än standardgränsen. På Vercel anger du export const maxDuration = 60;.
  • Synkronisera färre omfång per anrop, till exempel scopes: ['payments'], så att varje körning hålls kort.

PostgreSQL-exempel

MySQL-exempel

ClickHouse-exempel

Konstruktörsalternativ

string
obligatorisk
Databastyp: "mongodb", "postgres", "mysql" eller "clickhouse".
string
obligatorisk
Anslutningssträng för din databas:
  • MongoDB: mongodb://localhost:27017 eller mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string[]
obligatorisk
Array med entiteter som ska synkroniseras: "licences", "payments", "customers", "subscriptions". Inkludera valfri kombination.
object
obligatorisk
Dodo Payments API-konfiguration. Se TypeScript SDK-typerna för alla alternativ.Obligatoriska properties:
  • bearerToken: Din Dodo Payments API-nyckel
  • environment: "test_mode" eller "live_mode"
number
Tid i sekunder mellan automatiska synkroniseringar. Krävs för .start() och är valfritt för .run().
number
Hastighetsgräns i requests per sekund. Standardvärdet är 10; värden på 100 eller högre inaktiverar throttling.

Viktig information

MongoDB: Collections (subscriptions, payments, licences, customers) skapas i den databas som anges i din anslutnings-URI, till exempel mongodb://localhost:27017/my_database. Om URI:n inte anger någon databas använder Dodo Sync dodopayments_sync.PostgreSQL: Tabeller (Subscriptions, Payments, Licenses, Customers) skapas i den databas som anges i din anslutnings-URI. Data lagras som JSONB.MySQL: Kräver MySQL 8.0.20 eller senare. Tabeller (Subscriptions, INLINE_CODE_PLACEHOLDER_692267c1468089c_END, Licenses, Customers) skapas i den databas som anges i din anslutnings-URI. Data lagras som JSON.ClickHouse: Tabeller (Subscriptions, Payments, Licenses, Customers) skapas med ReplacingMergeTree-motorn. Använd nyckelordet FINAL vid frågor för att säkerställa deduplicerade resultat.

Uppgradering från 0.x

Version 1.0 ändrar hur MongoDB-data lagras och höjer MySQL-kravet. Innan du uppgraderar:
  • MongoDB: Ta bort din befintliga licences collection. Licensdokument lagras nu efter licensens id i stället för subscription_id, och nästa synkronisering fyller collection igen.
  • MongoDB: Kontrollera din anslutnings-URI. Data skrivs nu till den databas som anges i URI:n, inte alltid dodopayments_sync. Om du vill fortsätta använda dina befintliga data anger du dodopayments_sync i URI:n eller utelämnar databasen.
  • MySQL: Uppgradera till MySQL 8.0.20 eller senare.

Ytterligare resurser

GitHub Repository

Visa källkod, rapportera problem eller bidra med förbättringar

npm Package

Visa paketdetaljer och installationsinstruktioner
Senast ändrad 8 oktober 2026