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
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
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
Pelajari cara bermigrasi dari Node.js SDK ke TypeScript SDK
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
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:- Discord: Bergabunglah dengan server komunitas untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue pada repository.