Saltar al contenido principal
Dodo Payments proporciona una función de sincronización de base de datos integrada que sincroniza automáticamente tus datos de pago con tu propia base de datos. Puedes sincronizar pagos, clientes, suscripciones y licencias para mantener una copia local de tus datos para análisis, informes o integración con otros sistemas.
Implementación: Disponible a través del paquete npm | Código Fuente: GitHub

¿Qué Puedes Sincronizar?

Nuestra función de sincronización de base de datos admite la sincronización de las siguientes entidades de Dodo Payments a tu base de datos:

Pagos

Sincroniza todas las transacciones de pago, incluidos los pagos únicos, reembolsos y actualizaciones de estado de pago.

Clientes

Mantén tus datos de clientes sincronizados, incluidos perfiles de clientes, información de contacto y metadatos.

Suscripciones

Sincroniza datos de suscripción, incluidas suscripciones activas, ciclos de facturación y cambios en el estado de la suscripción.

Licencias

Sincroniza información de licencias, incluidos claves de licencia, activaciones y actualizaciones de estado de licencia.
Puedes sincronizar cualquier combinación de estas entidades especificándolas en el scopes parámetro. Todas las operaciones de sincronización son incrementales y solo transfieren registros nuevos o actualizados para un rendimiento óptimo.

Soporte de Base de Datos

Actualmente soportamos MongoDB, PostgreSQL, MySQL y ClickHouse. Estamos trabajando activamente en expandir el soporte para:
  • Bases de Datos: Snowflake y otras.
  • Pipelines: Pipelines ETL, sincronización en tiempo real.
Estamos ampliando continuamente el soporte de bases de datos. Si deseas contribuir con una nueva integración de base de datos, por favor envía un Pull Request a nuestro repositorio de GitHub.

Comenzando

Puedes usar nuestra función de sincronización de base de datos a través de la CLI o programáticamente en tu código. Ambos métodos proporcionan la misma funcionalidad; elige el que mejor se adapte a tu flujo de trabajo.

Usando la CLI

La herramienta CLI proporciona una forma rápida de configurar y ejecutar la sincronización de base de datos. Instálala globalmente para usarla desde cualquier lugar en tu terminal:
npm install -g dodo-sync

Ejecutando la CLI

La CLI admite dos modos: Modo Interactivo para configuración guiada, y Modo Manual para configuración directa. Modo Interactivo: Simplemente ejecuta el comando sin argumentos para iniciar el asistente de configuración interactivo.
dodo-sync
Modo Manual: Pasa argumentos directamente para omitir el asistente.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
Ejemplos:
# 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

Argumentos de la CLI

--interval
number
Intervalo de sincronización en segundos. Determina con qué frecuencia se ejecuta la operación de sincronización. Si no se proporciona, la sincronización se ejecutará una vez y saldrá.
--database
string
required
Tipo de base de datos a utilizar. Valores soportados: "mongodb", "postgres", "mysql", o "clickhouse".
--database-uri
string
required
URI de conexión para tu base de datos:
  • 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
required
Lista de entidades de datos a sincronizar, separadas por comas. Alcances disponibles: licences, payments, customers, subscriptions. Ejemplo: "payments,customers".
--api-key
string
required
Tu clave API de Dodo Payments. Debe comenzar con dp_live_ para el modo en vivo o dp_test_ para el modo de prueba.
--env
string
required
Objetivo del entorno. Debe ser "live_mode" o "test_mode". Esto determina de qué entorno de Dodo Payments sincronizar.
--rate-limit
number
Límite de tasa en solicitudes por segundo. Controla qué tan rápido el motor de sincronización realiza solicitudes a la API para evitar abrumar la API de Dodo Payments.

Usando en Tu Código

Para control programático, integra la función de sincronización directamente en tu aplicación. Instálala como una dependencia en tu proyecto:
npm install dodo-sync

Sincronización Automática (Basada en Intervalo)

Usa la sincronización automática cuando desees que la sincronización se ejecute continuamente a intervalos regulares:
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();
La opción interval es obligatoria al usar .start() para sincronización automática. La sincronización se ejecutará continuamente al intervalo especificado hasta que se detenga el proceso.

Sincronización Manual

Usa la sincronización manual cuando desees activar operaciones de sincronización bajo demanda (por ejemplo, desde un trabajo cron o un endpoint de 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();
Al usar la sincronización manual, la opción interval no es obligatoria. Puedes llamar a .run() siempre que necesites realizar una operación de sincronización.

Ejemplo de PostgreSQL

Así es como usar 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();

Ejemplo de MySQL

Así es como usar 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();

Ejemplo de ClickHouse

Así es como usar 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();

Opciones del Constructor

database
string
required
Nombre de la base de datos a utilizar. Valores soportados: "mongodb", "postgres", "mysql", o "clickhouse".
databaseURI
string
required
Cadena de conexión para tu base de datos:
  • 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[]
required
Array de entidades a sincronizar. Opciones disponibles: "licences", "payments", "customers", "subscriptions". Puedes incluir cualquier combinación de estos.
dodoPaymentsOptions
object
required
Configuración de la API de Dodo Payments para autenticación y selección de entorno. Consulta los tipos del SDK de TypeScript para opciones completas.Propiedades requeridas:
  • bearerToken: Tu clave API de Dodo Payments
  • environment: Ya sea "test_mode" o "live_mode"
interval
number
Tiempo en segundos entre sincronizaciones automáticas. Obligatorio al usar .start() para sincronización automática. Opcional al usar .run() para sincronización manual.
rateLimit
number
Número de solicitudes por segundo. Controla qué tan rápido el motor de sincronización realiza solicitudes a la API para evitar abrumar la API de Dodo Payments.

Información Importante

MongoDB: Se creará automáticamente una base de datos llamada dodopayments_sync en tu servidor de base de datos. Todos los datos de sincronización se almacenarán allí. Este nombre de base de datos es actualmente fijo y no se puede cambiar.PostgreSQL: Se crearán tablas (Subscriptions, Payments, Licenses, Customers) en la base de datos especificada en tu URI de conexión. Los datos se almacenan como JSONB.MySQL: Se crearán tablas (Subscriptions, Payments, Licenses, Customers) en la base de datos especificada en tu URI de conexión. Los datos se almacenan como JSON.ClickHouse: Se crearán tablas (Subscriptions, Payments, Licenses, Customers) utilizando el motor ReplacingMergeTree. Al consultar, usa la palabra clave FINAL para asegurar resultados deduplicados.
El motor de sincronización rastrea cambios y solo sincroniza registros nuevos o actualizados, haciendo que las sincronizaciones posteriores sean eficientes incluso con grandes conjuntos de datos.

Recursos Adicionales