Skip to main content
Java SDK memberikan akses bertipe kepada aplikasi Java ke REST API Dodo Payments. SDK ini menggunakan tipe Java secara menyeluruh: Optional untuk field yang mungkin tidak ada, Stream untuk melakukan iterasi pada hasil, dan CompletableFuture untuk panggilan asinkron.

Instalasi

Maven

Tambahkan dependensi ke pom.xml:
pom.xml

Gradle

Tambahkan dependency ke build.gradle.kts Anda:
build.gradle.kts
Rilis SDK menambahkan dukungan untuk perubahan API. Untuk menemukan versi terbaru, lihat Maven Central.
SDK memerlukan Java 8 atau yang lebih baru, sehingga juga dapat berjalan di Java 11, 17, dan 21.

Memulai Cepat

Buat client, lalu buat checkout session:
fromEnv() terhubung ke live mode kecuali DODO_PAYMENTS_BASE_URL atau dodopayments.baseUrl menyatakan sebaliknya. Untuk menggunakan test mode, lihat Test Mode. API key test mode hanya berfungsi dalam test mode.
Simpan API key dalam environment variable, system property, atau secrets manager. Jangan pernah menuliskannya secara hardcode di source code.

Fitur Inti

Type Safety

Class request dan response bertipe untuk pemeriksaan saat compile time.

Shared Client

Buat satu client dan gunakan kembali di seluruh request: client tersebut menyimpan connection pool dan thread pool. Object request dan response bersifat immutable.

Builder Pattern

Setiap class request memiliki builder, dan toBuilder() membuat salinan yang telah dimodifikasi.

Async Support

client.async() mengembalikan client yang method-nya menghasilkan CompletableFuture.

Konfigurasi

Environment Variable

fromEnv() membaca environment variable ini atau system property yang sesuai. System property memiliki prioritas lebih tinggi:
.env
API key berasal dari DODO_PAYMENTS_API_KEY atau dodopayments.apiKey. Webhook signing secret berasal dari DODO_PAYMENTS_WEBHOOK_KEY atau dodopayments.webhookKey, sedangkan base URL berasal dari DODO_PAYMENTS_BASE_URL atau dodopayments.baseUrl. Buat satu client dan gunakan kembali, karena setiap client memiliki connection pool dan thread pool sendiri. Untuk memverifikasi webhook, teruskan raw request body dan header ke client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), dengan headers sebagai com.dodopayments.api.core.http.Headers. Method ini memeriksa signature dengan webhook key Anda dan mengembalikan event yang telah di-parse, atau melempar DodoPaymentsWebhookException. Tanpa header, unwrap tidak memverifikasi signature. client.webhooks().unsafeUnwrap(rawBody) mem-parse body tanpa memverifikasinya, jadi gunakan hanya untuk testing. Lihat Webhooks.

Konfigurasi Manual

Atur setiap opsi pada builder:
Secara default, client mencoba ulang dua kali dan mengalami timeout setelah 1 menit. Client mencoba ulang connection error dan response dengan status 408, 409, 429, atau 500 ke atas. Untuk mengganti timeout pada satu call, teruskan RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() sebagai argumen kedua method. responseValidation(true) memeriksa sejak awal apakah seluruh response sesuai dengan tipe yang diharapkan. Tanpanya, SDK hanya melempar DodoPaymentsInvalidDataException saat Anda membaca property dengan tipe yang tidak sesuai.

Test Mode

Untuk menggunakan test mode (https://test.dodopayments.com), panggil testMode() pada builder:

Operasi Umum

Contoh dalam bagian ini menggunakan client dari Quick Start.

Membuat Checkout Session

Buat checkout session, lalu arahkan customer ke checkout URL yang dikembalikan:
checkoutUrl() mengembalikan Optional<String>. 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, nama, dan metadata, lalu ambil kembali menggunakan ID:

Menangani Subscription

Buat subscription dengan payment link, lalu kenakan biaya jika subscription tersebut bersifat on-demand.
POST /subscriptions (method subscriptions().create() pada SDK) deprecated. Method ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya membuat subscription melalui Checkout Session.
productPrice menggunakan unit mata uang terkecil, seperti cents untuk USD atau paise untuk INR. Untuk mengenakan biaya $25.00, teruskan 2500.
subscriptions().charge(...) digunakan untuk on-demand subscriptions. Dodo Payments menagih subscription lainnya secara otomatis sesuai jadwal penagihan produk.

Penagihan Berbasis Penggunaan

Mengonfigurasi Meter

Buat meter yang menghitung event, lalu tampilkan daftar meter Anda. autoPager() melakukan iterasi pada setiap meter dan mengambil halaman tambahan sesuai kebutuhan:

Memasukkan Usage Event

Kirim usage event untuk customer. Nilai metadata event adalah object JsonValue:
eventId adalah idempotency key, jadi berikan nilai unik untuk setiap event. timestamp yang lebih dari 1 jam di masa lalu atau lebih dari 5 menit di masa mendatang akan ditolak.

Memasukkan Event Secara Batch

Kirim hingga 1.000 event dalam satu request. Contoh ini menggunakan import dari contoh sebelumnya:

Penanganan Error

SDK melempar unchecked exception. Untuk status error, SDK melempar subclass dari DodoPaymentsServiceException, yang memiliki statusCode(), headers(), dan body(). Tangkap class khusus yang ingin Anda tangani sebelum base class:
Status tanpa class khusus, seperti 409, melempar UnexpectedStatusCodeException. Network failure melempar DodoPaymentsIoException, sedangkan response yang tidak dapat diinterpretasikan oleh SDK melempar DodoPaymentsInvalidDataException. Semua exception ini merupakan turunan dari DodoPaymentsException.
SDK mencoba ulang connection error dan response dengan status 408, 409, 429, atau 500 ke atas, secara default sebanyak dua kali, dengan exponential backoff.

Operasi Asinkron

Panggil async() pada client untuk mendapatkan client asinkron. Method-nya mengembalikan CompletableFuture:
Untuk membuat client asinkron sejak awal, gunakan DodoPaymentsOkHttpClientAsync.fromEnv().

Integrasi Spring Boot

Class Konfigurasi

Daftarkan satu client sebagai bean, lalu pilih environment dari sebuah property:

Service Layer

Inject client ke dalam service:

Resource

GitHub Repository

Source code, rilis, dan daftar method lengkap.

API Reference

Setiap endpoint, parameter, dan response.

Discord Community

Ajukan pertanyaan dan berdiskusi dengan developer lain.

Report Issues

Laporkan bug atau ajukan fitur.

Dukungan

Untuk mendapatkan bantuan terkait Java SDK:

Berkontribusi

Untuk berkontribusi, baca contributing guidelines.
Terakhir diubah pada 26 September 2026