Langsung ke konten utama
Dodo Payments menyediakan fitur sinkronisasi database bawaan yang secara otomatis menyinkronkan data pembayaran Anda dengan database sendiri. Anda dapat menyinkronkan payments, customers, subscriptions, dan licenses untuk mempertahankan salinan lokal data Anda untuk analytics, pelaporan, atau integrasi dengan sistem lain.
Implementasi: Tersedia melalui npm package | Source Code: GitHub

Apa yang Dapat Anda Sinkronkan?

Fitur sinkronisasi database kami mendukung sinkronisasi entitas Dodo Payments berikut ke database Anda:

Payments

Sinkronkan semua transaksi pembayaran, termasuk pembayaran satu kali, refund, dan pembaruan status pembayaran.

Customers

Pertahankan sinkronisasi data pelanggan, termasuk profil pelanggan, informasi kontak, dan metadata.

Subscriptions

Sinkronkan data subscription, termasuk subscription aktif, siklus penagihan, dan perubahan status subscription.

Licenses

Sinkronkan informasi lisensi, termasuk kunci lisensi, aktivasi, dan pembaruan status lisensi.
Anda dapat menyinkronkan kombinasi entitas apa pun dengan menentukannya dalam parameter scopes. Semua operasi sinkronisasi bersifat inkremental dan hanya mentransfer record baru atau yang diperbarui untuk performa optimal.

Dukungan Database

Saat ini kami mendukung MongoDB, PostgreSQL, MySQL, dan ClickHouse. Kami sedang aktif memperluas dukungan untuk:
  • Database: Snowflake dan lainnya.
  • Pipeline: pipeline ETL, sinkronisasi Realtime.
Kami terus memperluas dukungan database. Jika Anda ingin berkontribusi dengan integrasi database baru, silakan kirim Pull Request ke repositori GitHub kami.

Memulai

Anda dapat menggunakan fitur sinkronisasi database kami melalui CLI atau secara programatis dalam code Anda. Kedua metode menyediakan fungsi yang sama—pilih metode yang paling sesuai dengan workflow Anda.

Menggunakan CLI

Tool CLI menyediakan cara cepat untuk menyiapkan dan menjalankan sinkronisasi database. Instal secara global agar dapat menggunakannya dari mana saja di terminal Anda:

Menjalankan CLI

CLI mendukung dua mode: Interactive Mode untuk penyiapan terpandu, dan Manual Mode untuk konfigurasi langsung. Interactive Mode: Jalankan command tanpa argumen untuk memulai wizard penyiapan interaktif.
Manual Mode: Berikan argumen secara langsung untuk melewati wizard.
Contoh:

Argumen CLI

--interval
number
Interval sinkronisasi dalam detik. Menentukan seberapa sering operasi sinkronisasi dijalankan. Jika tidak diberikan, sinkronisasi akan dijalankan sekali lalu berhenti.
--database
string
wajib
Jenis database yang akan digunakan. Nilai yang didukung: "mongodb", "postgres", "mysql", atau "clickhouse".
--database-uri
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
--scopes
string
wajib
Daftar entitas data yang akan disinkronkan, dipisahkan dengan koma. Scope yang tersedia: licences, payments, customers, subscriptions. Contoh: "payments,customers".
--api-key
string
wajib
API key Dodo Payments Anda. Harus dimulai dengan dp_live_ untuk live mode atau dp_test_ untuk test mode.
--env
string
wajib
Target environment. Harus berupa "live_mode" atau "test_mode". Ini menentukan environment Dodo Payments mana yang akan disinkronkan.
--rate-limit
number
Rate limit dalam request per detik. Mengontrol seberapa cepat sync engine membuat request API agar tidak membebani API Dodo Payments.

Menggunakan dalam Code Anda

Untuk kontrol programatis, integrasikan fitur sinkronisasi langsung ke aplikasi Anda. Instal sebagai dependency dalam project Anda:

Sinkronisasi Otomatis (Berbasis Interval)

Gunakan sinkronisasi otomatis jika Anda ingin sinkronisasi berjalan terus-menerus pada interval reguler:
Opsi interval diperlukan saat menggunakan .start() untuk sinkronisasi otomatis. Sinkronisasi akan berjalan terus-menerus pada interval yang ditentukan hingga proses dihentikan.

Sinkronisasi Manual

Gunakan sinkronisasi manual jika Anda ingin memicu operasi sinkronisasi sesuai kebutuhan (misalnya, dari cron job atau endpoint API):
Saat menggunakan sinkronisasi manual, opsi interval tidak diperlukan. Anda dapat memanggil .run() kapan pun perlu menjalankan operasi sinkronisasi.

Contoh PostgreSQL

Berikut cara menggunakan dodo-sync dengan PostgreSQL:

Contoh MySQL

Berikut cara menggunakan dodo-sync dengan MySQL:

Contoh ClickHouse

Berikut cara menggunakan dodo-sync dengan ClickHouse:

Opsi Constructor

database
string
wajib
Nama database yang akan digunakan. Nilai yang didukung: "mongodb", "postgres", "mysql", atau "clickhouse".
databaseURI
string
wajib
Connection string 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
scopes
string[]
wajib
Array entitas yang akan disinkronkan. Opsi yang tersedia: "licences", "payments", "customers", "subscriptions". Anda dapat menyertakan kombinasi apa pun dari opsi tersebut.
dodoPaymentsOptions
object
wajib
Konfigurasi API Dodo Payments untuk autentikasi dan pemilihan environment. Lihat TypeScript SDK types untuk opsi lengkap.Properti yang diperlukan:
  • bearerToken: API key Dodo Payments Anda
  • environment: "test_mode" atau "live_mode"
interval
number
Waktu dalam detik di antara sinkronisasi otomatis. Diperlukan saat menggunakan .start() untuk sinkronisasi otomatis. Opsional saat menggunakan .run() untuk sinkronisasi manual.
rateLimit
number
Jumlah request per detik. Mengontrol seberapa cepat sync engine membuat request API agar tidak membebani API Dodo Payments.

Informasi Penting

MongoDB: Database bernama dodopayments_sync akan dibuat secara otomatis di server database Anda. Semua data sinkronisasi akan disimpan di sana. Nama database ini saat ini tetap dan tidak dapat diubah.PostgreSQL: Tabel (Subscriptions, Payments, Licenses, Customers) akan dibuat di database yang ditentukan dalam URI koneksi Anda. Data disimpan sebagai JSONB.MySQL: Tabel (Subscriptions, Payments, Licenses, Customers) akan dibuat di database yang ditentukan dalam URI koneksi Anda. Data disimpan sebagai JSON.ClickHouse: Tabel (Subscriptions, Payments, Licenses, Customers) akan dibuat menggunakan engine ReplacingMergeTree. Saat melakukan query, gunakan keyword FINAL untuk memastikan hasil yang dideduplikasi.
Sync engine melacak perubahan dan hanya menyinkronkan record baru atau yang diperbarui, sehingga sinkronisasi berikutnya tetap efisien bahkan dengan dataset besar.

Referensi Tambahan

GitHub Repository

Lihat source code, laporkan masalah, atau kontribusikan perbaikan

npm Package

Lihat detail package dan instruksi instalasi
Terakhir diubah pada 21 Juli 2026