Skip to main content
TypeScript SDK menyediakan akses bertipe bagi kode TypeScript dan JavaScript sisi server ke REST API Dodo Payments. SDK ini mencakup definisi tipe untuk setiap request dan response, typed error, percobaan ulang otomatis, timeout, dan auto-pagination.

Installation

Instal paket dodopayments dengan package manager Anda:

Mulai Cepat

Buat client, lalu buat checkout session:
Jika Anda menghilangkan bearerToken, client membaca environment variable DODO_PAYMENTS_API_KEY. Jika Anda menghilangkan environment, client terhubung ke live mode. Test mode API key hanya berfungsi dengan environment: 'test_mode'.
Simpan API key dalam environment variable atau secrets manager. Jangan pernah melakukan commit ke version control atau mengeksposnya dalam kode sisi client.

Fitur Inti

TypeScript First

Definisi tipe untuk setiap parameter request dan field response, yang ditampilkan di editor Anda.

Auto-Pagination

Method list mengambil halaman berikutnya untuk Anda saat melakukan iterasi dengan for await...of.

Error Handling

Class error bertipe untuk setiap HTTP error status, dengan status, header, dan response body.

Smart Retries

Secara default, dua kali percobaan ulang dengan exponential backoff untuk connection error dan status code yang dapat dicoba ulang.

Konfigurasi

Environment Variable

Simpan API key dalam environment variable:
.env
Client membaca variable ini jika Anda tidak meneruskan opsi yang sesuai: Jika base URL ditetapkan dan Anda juga meneruskan environment, constructor menampilkan error “Ambiguous URL”. Untuk menggunakan environment dalam kondisi tersebut, teruskan baseURL: null. Untuk memverifikasi webhook, teruskan raw request body dan header ke client.webhooks.unwrap(rawBody, { headers }). Method ini memeriksa signature dengan webhook key Anda dan mengembalikan event yang telah di-parse. client.webhooks.unsafeUnwrap(rawBody) mem-parse body tanpa memverifikasinya, jadi gunakan hanya untuk testing. Lihat Webhooks.

Konfigurasi Timeout

Request mengalami timeout setelah 1 menit secara default. Tetapkan timeout, dalam milidetik, pada client atau satu request:
Saat request mengalami timeout, SDK menampilkan APIConnectionTimeoutError. Request yang mengalami timeout akan dicoba ulang, sehingga pemanggilan dapat memerlukan waktu lebih lama dari timeout sebelum gagal.

Konfigurasi Retry

Tetapkan maxRetries pada client atau satu request:
SDK mencoba ulang connection error dan response dengan status 408, 409, 429, atau 500 ke atas. Secara default, SDK mencoba ulang dua kali dengan exponential backoff.
Jika request tetap gagal, SDK menampilkan subclass dari DodoPayments.APIError. Setiap error memiliki properti status, headers, dan error (response body). Periksa class tertentu dengan instanceof, misalnya err instanceof DodoPayments.RateLimitError:

Operasi Umum

Contoh dalam bagian ini menggunakan client dari Mulai Cepat.

Membuat Checkout Session

Buat checkout session, lalu redirect customer ke checkout_url yang dikembalikan:
Setiap checkout_url hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.

Mengelola Customer

Buat customer dengan alamat email dan nama, lalu ambil berdasarkan ID:

Menangani Subscription

Buat subscription, kenakan biaya untuk on-demand subscription, dan baca riwayat penggunaan subscription.
POST /subscriptions (method subscriptions.create milik SDK) deprecated. Method ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya membuat subscription melalui Checkout Session.
billing hanya memerlukan country, yaitu kode negara ISO dua huruf. customer menerima { customer_id } untuk mengaitkan customer yang sudah ada atau { email, name? } untuk membuatnya. charge digunakan untuk on-demand subscriptions, dan product_price menggunakan unit mata uang terkecil. retrieveUsageHistory mengembalikan list berpaginasi yang dapat Anda iterasikan seperti ditunjukkan dalam Auto-Pagination.

Usage-Based Billing

Memasukkan Usage Event

Kirim usage event untuk customer:
event_id adalah idempotency key, jadi berikan nilai unik untuk setiap event. Jika event_id yang sama muncul dua kali dalam satu request, seluruh request akan ditolak. Jika event_id sudah pernah dimasukkan, event baru akan diabaikan. Satu request menerima hingga 1.000 event. timestamp secara default menggunakan waktu saat ini dan ditolak jika lebih dari 1 jam di masa lalu atau lebih dari 5 menit di masa depan.

Mengambil Usage Event

Ambil satu event berdasarkan event_id, atau tampilkan daftar event yang difilter berdasarkan customer, nama event, dan rentang waktu:
usageEvents.list juga menerima meter_id dan mengembalikan list berpaginasi.

Konfigurasi Proxy

Untuk mengirim request melalui proxy, teruskan pengaturan proxy runtime Anda dalam fetchOptions.

Node.js (Menggunakan Undici)

Teruskan undici ProxyAgent sebagai dispatcher:

Bun

Tetapkan opsi proxy:

Deno

Buat HTTP client dengan Deno.createHttpClient dan teruskan sebagai client:

Logging

Tetapkan level log dengan opsi client logLevel atau environment variable DODO_PAYMENTS_LOG. Opsi client mengesampingkan environment variable.
Pada level debug, SDK mencatat setiap HTTP request dan response, termasuk header dan body. Beberapa header autentikasi disamarkan, tetapi data sensitif dalam body mungkin tetap terlihat.
Level log, dari yang paling banyak hingga paling sedikit mencatat detail, adalah:
  • 'debug': Pesan debug, info, peringatan, dan error.
  • 'info': Pesan info, peringatan, dan error.
  • 'warn': Peringatan dan error. Ini adalah default.
  • 'error': Hanya error.
  • 'off': Tanpa logging.
Secara default, SDK mencatat log ke console. Untuk menggunakan pino, winston, atau library logging lainnya, teruskan logger Anda sebagai opsi logger; logLevel tetap mengontrol pesan yang diteruskan kepadanya. Pesan log hanya untuk debugging, dan formatnya dapat berubah antar-rilis.

Migrasi dari Node.js SDK

Jika Anda menggunakan Node.js SDK lama, ikuti panduan migrasi untuk melakukan upgrade. SDK saat ini menggunakan API bawaan fetch, bukan node-fetch, memerlukan Node.js 20, TypeScript 4.9, dan Jest 28 atau versi lebih baru, serta menyertakan migration tool yang memperbarui sebagian besar kode Anda.

View Migration Guide

Pelajari cara bermigrasi dari Node.js SDK ke TypeScript SDK

Auto-Pagination

Method list mengembalikan hasil berpaginasi. Lakukan iterasi dengan for await...of untuk mendapatkan item dari setiap halaman. SDK meminta halaman berikutnya saat diperlukan:
Untuk bekerja dengan satu halaman pada satu waktu, baca page.items dan panggil hasNextPage() serta getNextPage():
Untuk menetapkan ukuran halaman, teruskan page_size ke method list, misalnya client.payments.list({ page_size: 50 }).

Persyaratan

SDK mendukung TypeScript 4.9 atau versi lebih baru serta runtime berikut:
  • Browser web (Chrome, Firefox, Safari, Edge, dan lainnya yang terbaru)
  • Node.js 20 LTS atau versi lebih baru (non-EOL)
  • Deno 1.28.0 atau versi lebih baru
  • Bun 1.0 atau versi lebih baru
  • Cloudflare Workers
  • Vercel Edge Runtime
  • Jest 28 atau versi lebih baru dengan environment "node" (environment "jsdom" tidak didukung)
  • Nitro 2.6 atau versi lebih baru
React Native tidak didukung.

Resource

GitHub Repository

Kode sumber, rilis, dan daftar method lengkap.

API Reference

Setiap endpoint, parameter, dan response.

Discord Community

Ajukan pertanyaan dan berbicara dengan developer lain.

Report Issues

Laporkan bug atau minta fitur.

Dukungan

Untuk bantuan terkait TypeScript SDK:

Berkontribusi

Untuk berkontribusi, baca panduan kontribusi.
Terakhir diubah pada 26 September 2026