Paquete: dodo-sync en npm | Código fuente: GitHub
¿Qué Puedes Sincronizar?
Elige cualquier combinación de estas entidades:Payments
Todas las transacciones de pago, incluidos los pagos únicos, los reembolsos y las actualizaciones de estado.
Customers
Perfiles de clientes, información de contacto y metadatos.
Subscriptions
Datos de suscripciones, ciclos de facturación y cambios de estado.
Licenses
Claves de licencia, activaciones y actualizaciones de estado.
scopes. Cada ejecución obtiene todos los registros de los ámbitos seleccionados y los escribe usando su ID, por lo que las filas existentes se actualizan en el mismo lugar en vez de duplicarse. Cada página de registros se escribe en su base de datos en un único lote.
Soporte de Base de Datos
Dodo Sync es compatible con MongoDB, PostgreSQL, MySQL 8.0.20 o posterior y ClickHouse. La compatibilidad con Snowflake y otras bases de datos, las canalizaciones ETL y la sincronización en tiempo real están en desarrollo. Para contribuir con una nueva integración de base de datos, envía un pull request al repositorio de GitHub.Primeros pasos
Usa Dodo Sync mediante la CLI para una configuración rápida o de forma programática en tu código para integrarlo en tu aplicación. Ambos métodos ofrecen la misma funcionalidad.Uso de la CLI
Instala la CLI globalmente para ejecutarla desde cualquier ubicación:Ejecución de la CLI
La CLI admite dos modos: interactivo, para una configuración guiada, y manual, para una configuración directa. Modo interactivo: Ejecuta el comando sin argumentos para iniciar el asistente de configuración.Argumentos de la CLI
number
requerido
Intervalo de sincronización en segundos. La CLI se ejecuta continuamente con este intervalo. Para una sincronización única, usa
.run() en tu código.string
requerido
Tipo de base de datos:
"mongodb", "postgres", "mysql" o "clickhouse".string
requerido
URI de conexión para tu base de datos:
- MongoDB:
mongodb://localhost:27017omongodb+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
requerido
Lista separada por comas de las entidades que se sincronizarán:
licences, payments, customers, subscriptions. Ejemplo: "payments,customers".string
requerido
Tu clave de API de Dodo Payments de Developer → API Keys. Usa una clave del mismo modo que
--env.string
requerido
Entorno:
"live_mode" o "test_mode".number
Límite de solicitudes por segundo. Controla la velocidad a la que el motor de sincronización realiza solicitudes de API. El valor predeterminado es
10; los valores de 100 o superiores desactivan la limitación.Uso en tu código
Integra la funcionalidad de sincronización directamente en tu aplicación. Instálala como dependencia:Sincronización automática (basada en intervalos)
Ejecuta la sincronización continuamente a intervalos regulares:Sincronización manual
Active operaciones de sincronización bajo demanda, por ejemplo desde un trabajo cron, un endpoint de API o una función serverless:Ejecución en Serverless
En Vercel, AWS Lambda o plataformas similares:- Llame a
.disconnect()dentro de un bloquefinally, como en el ejemplo anterior, para que las conexiones no permanezcan abiertas entre invocaciones. - Use el runtime de Node.js. Los runtimes Edge no pueden abrir conexiones de base de datos.
- Aumente el tiempo de espera de la función. Una sincronización grande puede tardar más que el límite predeterminado. En Vercel, establezca
export const maxDuration = 60;. - Sincronice menos ámbitos por invocación, como
scopes: ['payments'], para mantener breve cada ejecución.
Ejemplo de PostgreSQL
Ejemplo de MySQL
Ejemplo de ClickHouse
Opciones del constructor
string
requerido
Tipo de base de datos:
"mongodb", "postgres", "mysql" o "clickhouse".string
requerido
Cadena de conexión de su base de datos:
- MongoDB:
mongodb://localhost:27017omongodb+srv://... - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string[]
requerido
Matriz de entidades que sincronizar:
"licences", "payments", "customers", "subscriptions". Incluya cualquier combinación.object
requerido
Configuración de Dodo Payments API. Consulte los tipos del SDK de TypeScript para ver todas las opciones.Propiedades obligatorias:
bearerToken: Su clave de API de Dodo Paymentsenvironment:"test_mode"o"live_mode"
number
Tiempo en segundos entre sincronizaciones automáticas. Obligatorio para
.start() y opcional para .run().number
Límite de velocidad en solicitudes por segundo. El valor predeterminado es
10; los valores de 100 o superiores desactivan la limitación.Información importante
Actualización desde 0.x
La versión 1.0 cambia la forma en que se almacenan los datos de MongoDB y aumenta el requisito de MySQL. Antes de actualizar:- MongoDB: Elimine la colección
licencesexistente. Ahora los documentos de licencia se almacenan medianteidde licencia en lugar desubscription_id, y la siguiente sincronización vuelve a llenar la colección. - MongoDB: Compruebe su URI de conexión. Ahora los datos se escriben en la base de datos indicada por la URI, no siempre en
dodopayments_sync. Para seguir usando los datos existentes, incluyadodopayments_syncen la URI o deje fuera la base de datos. - MySQL: Actualice a MySQL 8.0.20 o posterior.
Recursos adicionales
GitHub Repository
Vea el código fuente, informe de problemas o contribuya con mejoras
npm Package
Vea los detalles del paquete y las instrucciones de instalación