Sequence untuk melakukan iterasi pada hasil, dan suspend functions untuk pemanggilan asynchronous.
Instalasi
Gradle (Kotlin DSL)
Tambahkan dependensi kebuild.gradle.kts Anda:
build.gradle.kts
Maven
Tambahkan dependensi kepom.xml Anda:
pom.xml
SDK memerlukan Java 8 atau yang lebih baru. SDK berjalan di JVM dan Android, serta menyertakan aturan keep untuk ProGuard dan R8.
Mulai Cepat
Buat client, lalu buat checkout session:fromEnv() terhubung ke live mode kecuali DODO_PAYMENTS_BASE_URL atau dodopayments.baseUrl menentukan sebaliknya. Untuk menggunakan test mode, lihat Test Mode. API key test mode hanya berfungsi dalam test mode.
Fitur Inti
Coroutines
Method pada async client adalah
suspend functions yang Anda panggil dari coroutine.Null Safety
Field yang dapat tidak tersedia adalah nullable types, bukan
Optional.Sequences
Pada synchronous client,
autoPager() mengembalikan Sequence yang mengambil halaman berikutnya saat Anda melakukan iterasi. Pada async client, method tersebut mengembalikan Flow.Immutable Models
Model classes bersifat immutable, dan
toBuilder() mengembalikan builder untuk salinan yang telah dimodifikasi.Konfigurasi
Dari Environment Variables
fromEnv() membaca pengaturan Anda dari environment variables atau system properties. System properties memiliki prioritas:
DODO_PAYMENTS_API_KEY atau dodopayments.apiKey. Webhook signing secret berasal dari DODO_PAYMENTS_WEBHOOK_KEY atau dodopayments.webhookKey, dan 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 pools sendiri.
Untuk memverifikasi webhook, teruskan raw request body dan headers ke client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), dengan headers sebagai com.dodopayments.api.core.http.Headers. Method tersebut memeriksa signature menggunakan webhook key Anda dan mengembalikan event yang telah diuraikan, atau melempar DodoPaymentsWebhookException. Tanpa headers, unwrap tidak memverifikasi signature. client.webhooks().unsafeUnwrap(rawBody) menguraikan body tanpa memverifikasinya, jadi gunakan hanya untuk testing. Lihat Webhooks.
Konfigurasi Manual
Atur setiap opsi pada builder:Test Mode
Untuk menggunakan test mode (https://test.dodopayments.com), panggil testMode() pada builder:
Timeout dan Retry
Secara default, client melakukan retry dua kali dan mengalami timeout setelah 1 menit. Client melakukan retry untuk connection errors dan responses dengan status 408, 409, 429, atau 500 ke atas, menggunakan exponential backoff. Atur default pada client, atau teruskanRequestOptions ke satu call:
Operasi Umum
Contoh dalam bagian ini menggunakanclient dari Quick Start.
Membuat Checkout Session
Buat checkout session, lalu arahkan customer ke checkout URL yang dikembalikan:checkoutUrl() mengembalikan nullable String?. Setiap checkout URL hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.
Membuat Produk
Buat produk subscription bulanan dengan harga $29.99:price menggunakan unit mata uang terkecil. discountBps menetapkan diskon dalam basis points dan menggantikan field discount yang sudah deprecated.
Mengaktifkan License Key
Aktifkan license key untuk device atau installation. Jika key telah mencapai batas aktivasinya, API mengembalikan422 dan SDK melempar UnprocessableEntityException. Key yang inactive mengembalikan 403 (PermissionDeniedException), sedangkan key yang tidak dikenal mengembalikan 404 (NotFoundException):
Menangani Subscription
Buat subscription, lalu charge subscription tersebut jika merupakan on-demand subscription.billing hanya memerlukan country, yaitu kode negara ISO dua huruf. Gunakan AttachExistingCustomer untuk menghubungkan customer yang sudah ada, atau NewCustomer untuk membuat customer. charge digunakan untuk on-demand subscriptions, dan productPrice menggunakan unit mata uang terkecil.Billing Berbasis Usage
Mencatat Usage Events
Kirim usage event untuk customer. Meter yang melacakeventName pada event akan mengagregasikannya:
eventId adalah idempotency key, jadi berikan nilai unik untuk setiap event. Satu request dapat menerima hingga 1.000 event.
Operasi Async
Async Client
Async client memiliki method yang sama seperti synchronous client, tetapi sebagian besar method tersebut adalahsuspend functions. Panggil method tersebut dari coroutine:
client.async() pada synchronous client untuk mendapatkan versi async-nya.
Penanganan Error
Untuk status error, SDK melempar subclass dariDodoPaymentsServiceException, yang memiliki statusCode(), headers(), dan body(). Subclass tersebut adalah BadRequestException (400), UnauthorizedException (401), PermissionDeniedException (403), NotFoundException (404), UnprocessableEntityException (422), RateLimitException (429), InternalServerException (5xx), dan UnexpectedStatusCodeException untuk status lain, seperti 409:
DodoPaymentsIoException, sedangkan responses yang tidak dapat diinterpretasikan SDK melempar DodoPaymentsInvalidDataException. Semua SDK exceptions merupakan turunan dari DodoPaymentsException.
Penanganan Error Fungsional
GunakanResult untuk penanganan error fungsional:
Integrasi Android
Kotlin SDK adalah server SDK. SDK ini melakukan autentikasi dengan secret API key Anda, dan siapa pun yang memiliki APK Anda dapat mengekstrak key yang dikompilasi ke dalamnya, jadi jangan pernah menggunakannya di dalam aplikasi Android. Untuk menerima pembayaran di aplikasi Android:- Di server Anda, buat checkout session dengan SDK ini (lihat Ktor Integration) dan kembalikan
checkout_url. - Di aplikasi, ambil
checkout_urldari server Anda dan buka dengan Android SDK, yang tidak menyimpan API key.
Validasi Response
Secara default, SDK hanya melemparDodoPaymentsInvalidDataException saat Anda membaca properti dengan tipe yang tidak terduga. Untuk memeriksa seluruh response terlebih dahulu, aktifkan validasi untuk suatu request, atau panggil validate() pada response:
Fitur Lanjutan
Konfigurasi Proxy
Untuk mengirim request melalui proxy, teruskanjava.net.Proxy ke builder:
Konfigurasi Sementara
withOptions mengembalikan client dengan pengaturan yang telah diubah dan berbagi connection serta thread pool milik client asli. Client asli tidak berubah:
Integrasi Ktor
Buat client sekali, lalu panggil dari sebuah route:Resources
GitHub Repository
Kode sumber, rilis, dan daftar metode lengkap.
API Reference
Setiap endpoint, parameter, dan response.
Discord Community
Ajukan pertanyaan dan berdiskusilah dengan developer lain.
Report Issues
Laporkan bug atau ajukan fitur.
Dukungan
Untuk mendapatkan bantuan terkait Kotlin SDK:- Discord: Bergabunglah dengan server komunitas untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.