Skip to main content
Ini adalah Android checkout SDK resmi (com.dodopayments.api:checkout-android), untuk membuka checkout yang di-host Dodo. SDK ini berbeda dari backend Kotlin SDK, yang memanggil Dodo Payments API dari server Anda.

Checkout Sessions API

Buat checkout_url yang dibuka SDK ini

Mobile Integration Guide

Praktik terbaik untuk alur checkout seluler
Android SDK membuka checkout yang di-host Dodo dalam Chrome Custom Tab menggunakan androidx.browser.customtabs. SDK ini tidak memiliki kode networking dan tidak menyimpan API key. Anda meneruskan checkoutUrl dari checkout session backend, dan SDK mengembalikan CheckoutResult bertipe saat pengguna menyelesaikan atau meninggalkan alur. Persyaratan: minSdk 23, Kotlin, Java 17.

Instalasi

1

Add the Dependency

build.gradle.kts
2

Register a Callback URL Scheme

Tetapkan callback scheme Anda sebagai Gradle manifest placeholder. Manifest milik library sudah mendeklarasikan intent filter activity redirect menggunakan token ${dodoCallbackScheme}, sehingga satu properti ini sudah mencakup seluruh penyiapan — Anda tidak perlu menambahkan XML manifest:
build.gradle.kts
Nilainya harus cocok dengan scheme dalam CheckoutParams.returnUrl (misalnya myapp://checkout/return).
Jika Anda menghilangkan placeholder sepenuhnya, build langsung gagal dengan kesalahan unresolved-placeholder, bukan gagal secara diam-diam saat checkout. Jika Anda menetapkannya tetapi tidak cocok dengan scheme milik returnUrl, DodoCheckout.start akan melempar PLATFORM_ERROR sebelum menampilkan apa pun.

Penggunaan

SDK mendukung dua gaya pemanggilan.

Arti Result

Field status adalah petunjuk UI, bukan bukti pembayaran. Selalu verifikasi pembayaran di backend Anda menggunakan webhook atau endpoint Get Payment Detail sebelum memberikan akses.
CheckoutStatus
wajib
Salah satu dari SUCCEEDED, FAILED, CANCELLED, PENDING, EXPIRED.
String?
Diatur saat return URL menyertakannya. Tampilkan di UI, jangan gunakan untuk memberikan akses. Lihat Verifikasi Pembayaran di bawah.
String?
Diatur untuk subscription checkout.
List<String>?
Diatur saat checkout menyertakan produk license key.
String?
Diatur saat checkout menangkap email.
Map<String, String>
Setiap query parameter dari return URL, secara verbatim.

Verifikasi Pembayaran

Webhooks

Dengarkan payment events secara real time

Get Payment Detail

Query status pembayaran sesuai kebutuhan
Berikan akses kepada pengguna hanya setelah salah satu cara ini mengonfirmasi pembayaran. Jangan hanya mengandalkan CheckoutResult.status.

Kustomisasi Tampilan

Sesuaikan toolbar, tombol, dan skema warna Custom Tab melalui customization di CheckoutParams. Semua kolom bersifat opsional; jika customization dihilangkan, tampilan default Custom Tab Android akan digunakan.
Int?
Warna latar belakang toolbar, sebagai int ARGB Color.
Int?
Warna bilah navigasi.
Int?
Warna pemisah di atas bilah navigasi.
CloseButtonStyle
DEFAULT menampilkan ikon sistem “X”; BACK menampilkan panah kembali.
CloseButtonPosition
Menentukan sisi toolbar tempat tombol tutup muncul: START atau END.
Boolean
Menampilkan ikon berbagi pada toolbar.
Boolean
Menampilkan judul halaman di bawah URL pada toolbar.
Boolean
Memungkinkan toolbar tersembunyi otomatis saat halaman digulir.
Boolean
Menampilkan “Bookmark this page” di menu luapan.
Boolean
Menampilkan “Download page” di menu luapan.
ColorScheme
Memaksa tampilan terang atau gelap, terlepas dari pengaturan sistem perangkat: SYSTEM, LIGHT, atau DARK.

Error

DodoCheckout.start hanya melempar CheckoutError jika terjadi kesalahan penggunaan atau kegagalan platform. Baca kodenya dari CheckoutError.code:
  • INVALID_CHECKOUT_URL: bukan URL sesi checkout.dodopayments.com.
  • INVALID_RETURN_URL: bukan URL absolut yang valid.
  • ALREADY_IN_PROGRESS: checkout sudah berjalan.
  • PLATFORM_ERROR: kegagalan platform yang tidak terduga, termasuk returnUrl yang skemanya tidak cocok dengan placeholder dodoCallbackScheme Anda.
Pembatalan oleh pengguna atau pembayaran yang ditolak selalu menjadi hasil (CANCELLED atau FAILED), bukan error yang dilempar. Dengan gaya launcher, error validasi dilempar dari launcher.launch(...).

Sesi yang Terbengkalai

Jika aplikasi dihentikan atau pengguna melakukan force-stop selama checkout, SDK menyimpan sesi tersebut secara lokal. Saat aplikasi diluncurkan kembali, periksa sesi yang terbengkalai dan rekonsiliasikan dengan backend Anda:
abandoned.createdAt adalah stempel waktu epoch dalam milidetik.

Terkait

Mobile Integration Guide

Praktik terbaik untuk alur checkout seluler

Kotlin SDK

SDK backend untuk operasi sisi server
Terakhir diubah pada 17 Agustus 2026