Passer au contenu principal
Dodo Payments propose une fonctionnalité de synchronisation de base de données intégrée qui synchronise automatiquement vos données de paiement avec votre propre base de données. Vous pouvez synchroniser les paiements, les clients, les abonnements et les licences pour maintenir une copie locale de vos données pour l’analyse, les rapports ou l’intégration avec d’autres systèmes.
Mise en œuvre : Disponible via le package npm | Code source : GitHub

Que pouvez-vous synchroniser ?

Notre fonctionnalité de synchronisation de base de données prend en charge la synchronisation des entités Dodo Payments suivantes vers votre base de données :

Paiements

Synchronisez toutes les transactions de paiement, y compris les paiements uniques, les remboursements et les mises à jour de statut de paiement.

Clients

Gardez vos données clients synchronisées, y compris les profils clients, les informations de contact et les métadonnées.

Abonnements

Synchronisez les données d’abonnement, y compris les abonnements actifs, les cycles de facturation et les changements de statut d’abonnement.

Licences

Synchronisez les informations de licence, y compris les clés de licence, les activations et les mises à jour de statut de licence.
Vous pouvez synchroniser n’importe quelle combinaison de ces entités en les spécifiant dans le paramètre scopes. Toutes les opérations de synchronisation sont incrémentielles et ne transfèrent que les enregistrements nouveaux ou mis à jour pour des performances optimales.

Support de base de données

Nous prenons actuellement en charge MongoDB, PostgreSQL, MySQL et ClickHouse. Nous travaillons activement à l’expansion du support pour :
  • Bases de données : Snowflake et autres.
  • Pipelines : Pipelines ETL, synchronisation en temps réel.
Nous élargissons continuellement le support des bases de données. Si vous souhaitez contribuer à une nouvelle intégration de base de données, veuillez soumettre une Pull Request à notre dépôt GitHub.

Commencer

Vous pouvez utiliser notre fonctionnalité de synchronisation de base de données via le CLI ou de manière programmatique dans votre code. Les deux méthodes offrent la même fonctionnalité : choisissez celle qui convient le mieux à votre flux de travail.

Utilisation du CLI

L’outil CLI fournit un moyen rapide de configurer et d’exécuter la synchronisation de la base de données. Installez-le globalement pour l’utiliser depuis n’importe où dans votre terminal :
npm install -g dodo-sync

Exécution du CLI

Le CLI prend en charge deux modes : Mode interactif pour une configuration guidée, et Mode manuel pour une configuration directe. Mode interactif : Il suffit d’exécuter la commande sans arguments pour démarrer l’assistant de configuration interactif.
dodo-sync
Mode manuel : Passez des arguments directement pour sauter l’assistant.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
Exemples :
# 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

Arguments du CLI

--interval
number
Intervalle de synchronisation en secondes. Détermine la fréquence à laquelle l’opération de synchronisation s’exécute. Si non fourni, la synchronisation s’exécutera une fois et se terminera.
--database
string
required
Type de base de données à utiliser. Valeurs prises en charge : "mongodb", "postgres", "mysql", ou "clickhouse".
--database-uri
string
required
URI de connexion pour votre base de données :
  • MongoDB : mongodb://localhost:27017 ou 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
Liste d’entités de données à synchroniser, séparées par des virgules. Scopes disponibles : licences, payments, customers, subscriptions. Exemple : "payments,customers".
--api-key
string
required
Votre clé API Dodo Payments. Doit commencer par dp_live_ pour le mode live ou dp_test_ pour le mode test.
--env
string
required
Cible d’environnement. Doit être soit "live_mode" ou "test_mode". Cela détermine de quel environnement Dodo Payments synchroniser.
--rate-limit
number
Limite de taux en requêtes par seconde. Contrôle la rapidité avec laquelle le moteur de synchronisation effectue des requêtes API pour éviter de surcharger l’API Dodo Payments.

Utilisation dans votre code

Pour un contrôle programmatique, intégrez la fonctionnalité de synchronisation directement dans votre application. Installez-la comme dépendance dans votre projet :
npm install dodo-sync

Synchronisation automatique (basée sur l’intervalle)

Utilisez la synchronisation automatique lorsque vous souhaitez que la synchronisation s’exécute en continu à intervalles réguliers :
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’option interval est requise lors de l’utilisation de .start() pour la synchronisation automatique. La synchronisation s’exécutera en continu à l’intervalle spécifié jusqu’à ce que le processus soit arrêté.

Synchronisation manuelle

Utilisez la synchronisation manuelle lorsque vous souhaitez déclencher des opérations de synchronisation à la demande (par exemple, depuis un cron job ou un point de terminaison 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();
Lors de l’utilisation de la synchronisation manuelle, l’option interval n’est pas requise. Vous pouvez appeler .run() chaque fois que vous devez effectuer une opération de synchronisation.

Exemple PostgreSQL

Voici comment utiliser dodo-sync avec 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();

Exemple MySQL

Voici comment utiliser dodo-sync avec 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();

Exemple ClickHouse

Voici comment utiliser dodo-sync avec 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();

Options du constructeur

database
string
required
Nom de la base de données à utiliser. Valeurs prises en charge : "mongodb", "postgres", "mysql", ou "clickhouse".
databaseURI
string
required
Chaîne de connexion pour votre base de données :
  • MongoDB : mongodb://localhost:27017 ou mongodb+srv://...
  • PostgreSQL : postgresql://user:password@localhost:5432/mydb
  • MySQL : mysql://user:password@localhost:3306/mydb
  • ClickHouse : http://localhost:8123
scopes
string[]
required
Tableau d’entités à synchroniser. Options disponibles : "licences", "payments", "customers", "subscriptions". Vous pouvez inclure n’importe quelle combinaison de ceux-ci.
dodoPaymentsOptions
object
required
Configuration de l’API Dodo Payments pour l’authentification et la sélection de l’environnement. Voir les types SDK TypeScript pour les options complètes.Propriétés requises :
  • bearerToken : Votre clé API Dodo Payments
  • environment : Soit "test_mode" ou "live_mode"
interval
number
Temps en secondes entre les synchronisations automatiques. Requis lors de l’utilisation de .start() pour la synchronisation automatique. Optionnel lors de l’utilisation de .run() pour la synchronisation manuelle.
rateLimit
number
Nombre de requêtes par seconde. Contrôle la rapidité avec laquelle le moteur de synchronisation effectue des requêtes API pour éviter de surcharger l’API Dodo Payments.

Informations importantes

MongoDB : Une base de données nommée dodopayments_sync sera automatiquement créée sur votre serveur de base de données. Toutes les données de synchronisation y seront stockées. Ce nom de base de données est actuellement fixe et ne peut pas être changé.PostgreSQL : Des tables (Subscriptions, Payments, Licenses, Customers) seront créées dans la base de données spécifiée dans votre URI de connexion. Les données sont stockées au format JSONB.MySQL : Des tables (Subscriptions, Payments, Licenses, Customers) seront créées dans la base de données spécifiée dans votre URI de connexion. Les données sont stockées au format JSON.ClickHouse : Des tables (Subscriptions, Payments, Licenses, Customers) seront créées en utilisant le moteur ReplacingMergeTree. Lors de l’interrogation, utilisez le mot-clé FINAL pour garantir des résultats dédupliqués.
Le moteur de synchronisation suit les changements et ne synchronise que les enregistrements nouveaux ou mis à jour, rendant les synchronisations ultérieures efficaces même avec de grands ensembles de données.

Ressources supplémentaires