Pular para o conteúdo principal
Dodo Payments fornece um recurso de sincronização de banco de dados embutido que sincroniza automaticamente seus dados de pagamento com seu próprio banco de dados. Você pode sincronizar pagamentos, clientes, assinaturas e licenças para manter uma cópia local de seus dados para análises, relatórios ou integração com outros sistemas.
Implementação: Disponível via pacote npm | Código Fonte: GitHub

O que você pode sincronizar?

Nosso recurso de sincronização de banco de dados suporta a sincronização das seguintes entidades do Dodo Payments para seu banco de dados:

Pagamentos

Sincronize todas as transações de pagamento, incluindo pagamentos únicos, reembolsos e atualizações de status de pagamento.

Clientes

Mantenha seus dados de clientes sincronizados, incluindo perfis de clientes, informações de contato e metadados.

Assinaturas

Sincronize dados de assinaturas, incluindo assinaturas ativas, ciclos de cobrança e alterações de status de assinatura.

Licenças

Sincronize informações de licença, incluindo chaves de licença, ativações e atualizações de status de licença.
Você pode sincronizar qualquer combinação dessas entidades especificando-as no parâmetro scopes. Todas as operações de sincronização são incrementais e transferem apenas registros novos ou atualizados para desempenho ideal.

Suporte a Banco de Dados

Atualmente, suportamos MongoDB, PostgreSQL, MySQL e ClickHouse. Estamos trabalhando ativamente para expandir o suporte para:
  • Bancos de Dados: Snowflake e outros.
  • Pipelines: Pipelines ETL, sincronização em tempo real.
Estamos continuamente expandindo o suporte a bancos de dados. Se você gostaria de contribuir com uma nova integração de banco de dados, por favor, envie um Pull Request para nosso repositório GitHub.

Começando

Você pode usar nosso recurso de sincronização de banco de dados via CLI ou programaticamente em seu código. Ambos os métodos fornecem a mesma funcionalidade—escolha o que melhor se adapta ao seu fluxo de trabalho.

Usando a CLI

A ferramenta CLI fornece uma maneira rápida de configurar e executar a sincronização de banco de dados. Instale-a globalmente para usá-la de qualquer lugar em seu terminal:
npm install -g dodo-sync

Executando a CLI

A CLI suporta dois modos: Modo Interativo para configuração guiada, e Modo Manual para configuração direta. Modo Interativo: Basta executar o comando sem argumentos para iniciar o assistente de configuração interativa.
dodo-sync
Modo Manual: Passe argumentos diretamente para pular o assistente.
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
Exemplos:
# 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 da CLI

--interval
number
Intervalo de sincronização em segundos. Determina com que frequência a operação de sincronização é executada. Se não fornecido, a sincronização será executada uma vez e sairá.
--database
string
required
Tipo de banco de dados a ser usado. Valores suportados: "mongodb", "postgres", "mysql", ou "clickhouse".
--database-uri
string
required
URI de conexão para seu banco de dados:
  • 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
Lista de entidades de dados a serem sincronizadas, separadas por vírgula. Escopos disponíveis: licences, payments, customers, subscriptions. Exemplo: "payments,customers".
--api-key
string
required
Sua chave de API do Dodo Payments. Deve começar com dp_live_ para o modo ao vivo ou dp_test_ para o modo de teste.
--env
string
required
Alvo do ambiente. Deve ser "live_mode" ou "test_mode". Isso determina de qual ambiente do Dodo Payments sincronizar.
--rate-limit
number
Limite de taxa em requisições por segundo. Controla a velocidade com que o mecanismo de sincronização faz requisições à API do Dodo Payments para evitar sobrecarregá-la.

Usando em Seu Código

Para controle programático, integre o recurso de sincronização diretamente em sua aplicação. Instale-o como uma dependência em seu projeto:
npm install dodo-sync

Sincronização Automática (Baseada em Intervalo)

Use a sincronização automática quando quiser que a sincronização ocorra continuamente em 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();
A opção interval é obrigatória ao usar .start() para sincronização automática. A sincronização será executada continuamente no intervalo especificado até que o processo seja interrompido.

Sincronização Manual

Use a sincronização manual quando quiser acionar operações de sincronização sob demanda (por exemplo, a partir de um cron job ou 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();
Ao usar a sincronização manual, a opção interval não é obrigatória. Você pode chamar .run() sempre que precisar realizar uma operação de sincronização.

Exemplo de PostgreSQL

Veja como usar dodo-sync com 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();

Exemplo de MySQL

Veja como usar dodo-sync com 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();

Exemplo de ClickHouse

Veja como usar dodo-sync com 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();

Opções do Construtor

database
string
required
Nome do banco de dados a ser usado. Valores suportados: "mongodb", "postgres", "mysql", ou "clickhouse".
databaseURI
string
required
String de conexão para seu banco de dados:
  • 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
Array de entidades a serem sincronizadas. Opções disponíveis: "licences", "payments", "customers", "subscriptions". Você pode incluir qualquer combinação dessas.
dodoPaymentsOptions
object
required
Configuração da API do Dodo Payments para autenticação e seleção de ambiente. Veja os tipos do SDK TypeScript para opções completas.Propriedades obrigatórias:
  • bearerToken: Sua chave de API do Dodo Payments
  • environment: Ou "test_mode" ou "live_mode"
interval
number
Tempo em segundos entre sincronizações automáticas. Obrigatório ao usar .start() para sincronização automática. Opcional ao usar .run() para sincronização manual.
rateLimit
number
Número de requisições por segundo. Controla a velocidade com que o mecanismo de sincronização faz requisições à API do Dodo Payments para evitar sobrecarregá-la.

Informações Importantes

MongoDB: Um banco de dados chamado dodopayments_sync será criado automaticamente em seu servidor de banco de dados. Todos os dados de sincronização serão armazenados lá. Este nome de banco de dados é atualmente fixo e não pode ser alterado.PostgreSQL: Tabelas (Subscriptions, Payments, Licenses, Customers) serão criadas no banco de dados especificado em sua URI de conexão. Os dados são armazenados como JSONB.MySQL: Tabelas (Subscriptions, Payments, Licenses, Customers) serão criadas no banco de dados especificado em sua URI de conexão. Os dados são armazenados como JSON.ClickHouse: Tabelas (Subscriptions, Payments, Licenses, Customers) serão criadas usando o mecanismo ReplacingMergeTree. Ao consultar, use a palavra-chave FINAL para garantir resultados deduplicados.
O mecanismo de sincronização rastreia alterações e sincroniza apenas registros novos ou atualizados, tornando as sincronizações subsequentes eficientes mesmo com grandes conjuntos de dados.

Recursos Adicionais