Installation
Instal paketdodopayments dengan package manager Anda:
Mulai Cepat
Buat client, lalu buat checkout session: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'.
Fitur Inti
TypeScript First
Auto-Pagination
Error Handling
Smart Retries
Konfigurasi
Environment Variable
Simpan API key dalam environment variable:.env
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. Tetapkantimeout, dalam milidetik, pada client atau satu request:
APIConnectionTimeoutError. Request yang mengalami timeout akan dicoba ulang, sehingga pemanggilan dapat memerlukan waktu lebih lama dari timeout sebelum gagal.
Konfigurasi Retry
TetapkanmaxRetries pada client atau satu request:
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 menggunakanclient dari Mulai Cepat.
Membuat Checkout Session
Buat checkout session, lalu redirect customer kecheckout_url yang dikembalikan:
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.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 berdasarkanevent_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 dalamfetchOptions.
Node.js (Menggunakan Undici)
Teruskan undiciProxyAgent sebagai dispatcher:
Bun
Tetapkan opsiproxy:
Deno
Buat HTTP client denganDeno.createHttpClient dan teruskan sebagai client:
Logging
Tetapkan level log dengan opsi clientlogLevel atau environment variable DODO_PAYMENTS_LOG. Opsi client mengesampingkan environment variable.
'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.
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 bawaanfetch, 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
Auto-Pagination
Method list mengembalikan hasil berpaginasi. Lakukan iterasi denganfor await...of untuk mendapatkan item dari setiap halaman. SDK meminta halaman berikutnya saat diperlukan:
page.items dan panggil hasNextPage() serta getNextPage():
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
Resource
GitHub Repository
API Reference
Discord Community
Report Issues
Dukungan
Untuk bantuan terkait TypeScript SDK:- Discord: Bergabunglah dengan server komunitas untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue pada repository.