Skip to main content
Sinkronkan data Dodo Payments ke database Anda sendiri untuk analitik, pelaporan, dan integrasi. Mesin sinkronisasi secara otomatis mereplikasi payments, customers, subscriptions, dan licenses ke MongoDB, PostgreSQL, MySQL, atau ClickHouse.
Package: dodo-sync di npm | Source: GitHub

Apa yang Dapat Anda Sinkronkan?

Pilih kombinasi apa pun dari entitas berikut:

Payments

Semua transaksi pembayaran, termasuk pembayaran satu kali, refund, dan pembaruan status.

Customers

Profil customer, informasi kontak, dan metadata.

Subscriptions

Data subscription, siklus penagihan, dan perubahan status.

Licenses

License key, aktivasi, dan pembaruan status.
Tentukan entitas yang akan disinkronkan menggunakan parameter scopes. Setiap proses mengambil setiap record dalam cakupan yang dipilih dan menuliskannya berdasarkan ID, sehingga baris yang sudah ada diperbarui langsung, bukan diduplikasi. Setiap halaman record ditulis ke database Anda dalam satu batch.

Dukungan Database

Dodo Sync mendukung MongoDB, PostgreSQL, MySQL 8.0.20 atau yang lebih baru, dan ClickHouse. Dukungan untuk Snowflake dan database lainnya, pipeline ETL, serta sinkronisasi real-time sedang dalam pengembangan. Untuk berkontribusi pada integrasi database baru, kirim pull request ke repository GitHub.

Memulai

Gunakan Dodo Sync melalui CLI untuk penyiapan cepat atau secara programatik dalam kode Anda untuk integrasi ke aplikasi. Kedua metode menyediakan fungsionalitas yang sama.

Menggunakan CLI

Instal CLI secara global agar dapat menjalankannya dari mana saja:

Menjalankan CLI

CLI mendukung dua mode: interaktif untuk penyiapan terpandu, dan manual untuk konfigurasi langsung. Mode interaktif: Jalankan tanpa argumen untuk memulai wizard penyiapan.
Mode manual: Teruskan argumen secara langsung untuk melewati wizard.
Contoh:

Argumen CLI

number
wajib
Interval sinkronisasi dalam detik. CLI berjalan terus-menerus pada interval ini. Untuk sinkronisasi satu kali, gunakan .run() dalam kode Anda.
string
wajib
Jenis database: "mongodb", "postgres", "mysql", atau "clickhouse".
string
wajib
URI koneksi untuk database Anda:
  • MongoDB: mongodb://localhost:27017 atau mongodb+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
wajib
Daftar entitas yang dipisahkan koma untuk disinkronkan: licences, payments, customers, subscriptions. Contoh: "payments,customers".
string
wajib
API key Dodo Payments Anda dari Developer → API Keys. Gunakan key dari mode yang sama dengan --env.
string
wajib
Environment: "live_mode" atau "test_mode".
number
Batas laju dalam request per detik. Mengontrol seberapa cepat mesin sinkronisasi membuat request API. Nilai default adalah 10; nilai 100 atau lebih akan menonaktifkan throttling.

Menggunakan dalam Kode Anda

Integrasikan fitur sinkronisasi langsung ke aplikasi Anda. Instal sebagai dependency:

Sinkronisasi Otomatis (Berbasis Interval)

Jalankan sinkronisasi secara terus-menerus pada interval reguler:
Opsi interval diperlukan saat menggunakan .start(). Sinkronisasi berjalan terus-menerus pada interval yang ditentukan hingga proses berhenti.

Sinkronisasi Manual

Picu operasi sinkronisasi sesuai permintaan, misalnya dari cron job, endpoint API, atau fungsi serverless:
Opsi interval tidak diperlukan untuk sinkronisasi manual. Panggil .run() kapan pun Anda perlu melakukan sinkronisasi. .run() hanya selesai setelah semua penulisan ke database selesai. .close() adalah alias untuk .disconnect().

Berjalan di Serverless

Di Vercel, AWS Lambda, atau platform serupa:
  • Panggil .disconnect() dalam blok finally, seperti pada contoh di atas, agar koneksi tidak tetap terbuka di antara pemanggilan.
  • Gunakan runtime Node.js. Edge runtime tidak dapat membuka koneksi database.
  • Tingkatkan batas waktu fungsi. Sinkronisasi besar dapat memerlukan waktu lebih lama daripada batas default. Di Vercel, tetapkan export const maxDuration = 60;.
  • Sinkronkan lebih sedikit cakupan per pemanggilan, seperti scopes: ['payments'], agar setiap proses tetap singkat.

Contoh PostgreSQL

Contoh MySQL

Contoh ClickHouse

Opsi Konstruktor

string
wajib
Jenis database: "mongodb", "postgres", "mysql", atau "clickhouse".
string
wajib
String koneksi untuk database Anda:
  • MongoDB: mongodb://localhost:27017 atau mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string[]
wajib
Array entitas yang akan disinkronkan: "licences", "payments", "customers", "subscriptions". Sertakan kombinasi apa pun.
object
wajib
Konfigurasi API Dodo Payments. Lihat jenis SDK TypeScript untuk opsi lengkap.Properti yang diperlukan:
  • bearerToken: Kunci API Dodo Payments Anda
  • environment: "test_mode" atau "live_mode"
number
Waktu dalam detik di antara sinkronisasi otomatis. Wajib untuk .start(), opsional untuk .run().
number
Batas laju dalam permintaan per detik. Default-nya 10; nilai 100 atau lebih menonaktifkan throttling.

Informasi Penting

MongoDB: Collection (subscriptions, payments, licences, customers) dibuat di database yang disebutkan dalam URI koneksi Anda, seperti mongodb://localhost:27017/my_database. Jika URI tidak menyebutkan database, Dodo Sync menggunakan dodopayments_sync.PostgreSQL: Tabel (Subscriptions, Payments, Licenses, Customers) dibuat di database yang ditentukan dalam URI koneksi Anda. Data disimpan sebagai JSONB.MySQL: Memerlukan MySQL 8.0.20 atau yang lebih baru. Tabel (Subscriptions, Payments, Licenses, Customers) dibuat di database yang ditentukan dalam URI koneksi Anda. Data disimpan sebagai JSON.ClickHouse: Tabel (Subscriptions, Payments, Licenses, Customers) dibuat menggunakan engine ReplacingMergeTree. Saat melakukan kueri, gunakan kata kunci FINAL untuk memastikan hasil yang dideduplikasi.

Meng-upgrade dari 0.x

Versi 1.0 mengubah cara data MongoDB disimpan dan meningkatkan persyaratan MySQL. Sebelum melakukan upgrade:
  • MongoDB: Hapus collection licences yang sudah ada. Dokumen lisensi kini disimpan berdasarkan id lisensi, bukan subscription_id, dan sinkronisasi berikutnya akan mengisi ulang collection tersebut.
  • MongoDB: Periksa URI koneksi Anda. Data kini ditulis ke database yang disebutkan dalam URI, bukan selalu dodopayments_sync. Untuk tetap menggunakan data yang sudah ada, masukkan dodopayments_sync ke dalam URI atau jangan sertakan database.
  • MySQL: Upgrade ke MySQL 8.0.20 atau yang lebih baru.

Sumber Daya Tambahan

GitHub Repository

Lihat kode sumber, laporkan masalah, atau kontribusikan perbaikan

npm Package

Lihat detail package dan petunjuk instalasi
Terakhir diubah pada 26 September 2026