Vai al contenuto principale
Dodo Payments offre una funzionalità di sincronizzazione del database integrata che sincronizza automaticamente i tuoi dati di pagamento con il tuo database. Puoi sincronizzare pagamenti, clienti, abbonamenti e licenze per mantenere una copia locale dei tuoi dati per analisi, reportistica o integrazione con altri sistemi.
Implementazione: Disponibile tramite pacchetto npm | Codice sorgente: GitHub

Cosa Puoi Sincronizzare?

La nostra funzionalità di sincronizzazione del database supporta la sincronizzazione delle seguenti entità di Dodo Payments nel tuo database:

Pagamenti

Sincronizza tutte le transazioni di pagamento, inclusi pagamenti una tantum, rimborsi e aggiornamenti dello stato dei pagamenti.

Clienti

Mantieni i dati dei tuoi clienti sincronizzati, inclusi profili dei clienti, informazioni di contatto e metadati.

Abbonamenti

Sincronizza i dati degli abbonamenti, inclusi abbonamenti attivi, cicli di fatturazione e cambiamenti di stato degli abbonamenti.

Licenze

Sincronizza le informazioni sulle licenze, inclusi codici di licenza, attivazioni e aggiornamenti dello stato delle licenze.
Puoi sincronizzare qualsiasi combinazione di queste entità specificandole nel parametro scopes. Tutte le operazioni di sincronizzazione sono incrementali e trasferiscono solo record nuovi o aggiornati per prestazioni ottimali.

Supporto per Database

Attualmente supportiamo MongoDB, PostgreSQL, MySQL e ClickHouse. Stiamo lavorando attivamente per espandere il supporto per:
  • Database: Snowflake e altri.
  • Pipeline: pipeline ETL, sincronizzazione in tempo reale.
Stiamo continuamente espandendo il supporto per i database. Se desideri contribuire con una nuova integrazione di database, ti preghiamo di inviare una Pull Request al nostro repository GitHub.

Iniziare

Puoi utilizzare la nostra funzionalità di sincronizzazione del database tramite il CLI o programmaticamente nel tuo codice. Entrambi i metodi offrono la stessa funzionalità: scegli quello che meglio si adatta al tuo flusso di lavoro.

Utilizzando il CLI

Lo strumento CLI fornisce un modo rapido per configurare e avviare la sincronizzazione del database. Installalo globalmente per usarlo da qualsiasi parte nel tuo terminale:
npm install -g dodo-sync

Esecuzione del CLI

Il CLI supporta due modalità: Modalità Interattiva per una configurazione guidata e Modalità Manuale per una configurazione diretta. Modalità Interattiva: Esegui semplicemente il comando senza argomenti per avviare la procedura guidata di configurazione interattiva.
dodo-sync
Modalità Manuale: Passa argomenti direttamente per saltare la procedura guidata.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
Esempi:
# 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

Argomenti CLI

--interval
number
Intervallo di sincronizzazione in secondi. Determina con quale frequenza viene eseguita l’operazione di sincronizzazione. Se non fornito, la sincronizzazione verrà eseguita una sola volta e uscirà.
--database
string
obbligatorio
Tipo di database da utilizzare. Valori supportati: "mongodb", "postgres", "mysql", o "clickhouse".
--database-uri
string
obbligatorio
URI di connessione per il tuo database:
  • MongoDB: mongodb://localhost:27017 o 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
obbligatorio
Elenco separato da virgole delle entità di dati da sincronizzare. Scopi disponibili: licences, payments, customers, subscriptions. Esempio: "payments,customers".
--api-key
string
obbligatorio
La tua chiave API di Dodo Payments. Dovrebbe iniziare con dp_live_ per la modalità live o dp_test_ per la modalità di test.
--env
string
obbligatorio
Obiettivo dell’ambiente. Deve essere o "live_mode" o "test_mode". Questo determina da quale ambiente Dodo Payments sincronizzare.
--rate-limit
number
Limite di velocità in richieste al secondo. Controlla la velocità con cui il motore di sincronizzazione effettua richieste API per evitare di sovraccaricare l’API di Dodo Payments.

Utilizzando nel Tuo Codice

Per un controllo programmatico, integra la funzionalità di sincronizzazione direttamente nella tua applicazione. Installala come dipendenza nel tuo progetto:
npm install dodo-sync

Sincronizzazione Automatica (Basata su Intervallo)

Utilizza la sincronizzazione automatica quando desideri che la sincronizzazione venga eseguita continuamente a intervalli regolari:
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();
L’opzione interval è necessaria quando si utilizza .start() per la sincronizzazione automatica. La sincronizzazione verrà eseguita continuamente all’intervallo specificato fino a quando il processo non viene interrotto.

Sincronizzazione Manuale

Utilizza la sincronizzazione manuale quando desideri attivare le operazioni di sincronizzazione su richiesta (ad esempio, da un cron job o un endpoint 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();
Quando utilizzi la sincronizzazione manuale, l’opzione interval non è necessaria. Puoi chiamare .run() ogni volta che hai bisogno di eseguire un’operazione di sincronizzazione.

Esempio di PostgreSQL

Ecco come utilizzare dodo-sync con 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();

Esempio di MySQL

Ecco come utilizzare dodo-sync con 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();

Esempio di ClickHouse

Ecco come utilizzare dodo-sync con 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();

Opzioni del Costruttore

database
string
obbligatorio
Nome del database da utilizzare. Valori supportati: "mongodb", "postgres", "mysql", o "clickhouse".
databaseURI
string
obbligatorio
Stringa di connessione per il tuo database:
  • MongoDB: mongodb://localhost:27017 o mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
scopes
string[]
obbligatorio
Array di entità da sincronizzare. Opzioni disponibili: "licences", "payments", "customers", "subscriptions". Puoi includere qualsiasi combinazione di questi.
dodoPaymentsOptions
object
obbligatorio
Configurazione API di Dodo Payments per autenticazione e selezione dell’ambiente. Vedi i tipi SDK TypeScript per le opzioni complete.Proprietà richieste:
  • bearerToken: La tua chiave API di Dodo Payments
  • environment: O "test_mode" o "live_mode"
interval
number
Tempo in secondi tra le sincronizzazioni automatiche. Richiesto quando si utilizza .start() per la sincronizzazione automatica. Facoltativo quando si utilizza .run() per la sincronizzazione manuale.
rateLimit
number
Numero di richieste al secondo. Controlla la velocità con cui il motore di sincronizzazione effettua richieste API per evitare di sovraccaricare l’API di Dodo Payments.

Informazioni Importanti

MongoDB: Un database chiamato dodopayments_sync verrà creato automaticamente sul tuo server di database. Tutti i dati di sincronizzazione verranno memorizzati lì. Questo nome di database è attualmente fisso e non può essere cambiato.PostgreSQL: Le tabelle (Subscriptions, Payments, Licenses, Customers) verranno create nel database specificato nel tuo URI di connessione. I dati sono memorizzati come JSONB.MySQL: Le tabelle (Subscriptions, Payments, Licenses, Customers) verranno create nel database specificato nel tuo URI di connessione. I dati sono memorizzati come JSON.ClickHouse: Le tabelle (Subscriptions, Payments, Licenses, Customers) verranno create utilizzando il motore ReplacingMergeTree. Quando interroghi, utilizza la parola chiave FINAL per garantire risultati deduplicati.
Il motore di sincronizzazione tiene traccia delle modifiche e sincronizza solo i record nuovi o aggiornati, rendendo le sincronizzazioni successive efficienti anche con grandi set di dati.

Risorse Aggiuntive