Skip to main content

Quick Start

Jalankan integrasi pembayaran seluler Anda dalam 4 langkah sederhana

Platform Examples

Contoh kode lengkap untuk Android, iOS, React Native, dan Flutter
Dodo Payments menyediakan checkout SDK resmi untuk Android, iOS, React Native, dan Flutter. Masing-masing membungkus pola yang didokumentasikan di bawah ini (buka URL checkout, tangkap pengembalian, parsing hasil) di balik satu panggilan start(...) bertipe, dengan pemulihan sesi yang ditinggalkan sebagai fitur bawaan. Gunakan WebView manual hanya jika tidak ada yang sesuai dengan stack Anda.

Prasyarat

Sebelum mengintegrasikan Dodo Payments ke aplikasi mobile Anda, pastikan Anda memiliki:
  • Akun Dodo Payments: Akun merchant aktif dengan akses API
  • Kredensial API: API key dan webhook secret key dari dashboard Anda
  • Proyek Aplikasi Mobile: Aplikasi Android, iOS, React Native, atau Flutter
  • Server Backend: Untuk menangani pembuatan sesi checkout dengan aman

Alur Kerja Integrasi

Integrasi mobile mengikuti proses 4 langkah yang aman, dengan backend Anda menangani panggilan API dan aplikasi mobile Anda mengelola pengalaman pengguna.
1

Backend: Create Checkout Session

Checkout Session API Docs

Pelajari cara membuat sesi checkout di backend Anda menggunakan Node.js, Python, dan lainnya. Lihat contoh lengkap dan referensi parameter dalam dokumentasi Checkout Sessions API khusus.
Keamanan: Sesi checkout harus dibuat di server backend Anda, bukan di aplikasi mobile. Hal ini melindungi API key Anda dan memastikan validasi yang tepat.
2

Mobile: Get Checkout URL

Aplikasi mobile Anda memanggil backend untuk mendapatkan URL checkout. Autentikasi permintaan ini dengan token sesi milik pengguna yang sudah masuk.
Keamanan: Aplikasi mobile hanya berkomunikasi dengan backend Anda, bukan langsung dengan Dodo Payments API.
3

Mobile: Open Checkout in Browser

Buka URL checkout di browser dalam aplikasi yang aman untuk memproses pembayaran. Atau lewati seluruh penyiapan manual dengan checkout SDK resmi untuk platform Anda.

Pick your mobile SDK

Langkah instalasi dan petunjuk penyiapan untuk Android, iOS, React Native, dan Flutter.
4

Backend: Handle Payment Completion

Proses penyelesaian pembayaran melalui webhook dan URL pengalihan untuk mengonfirmasi status pembayaran.

Pilih SDK Anda

Setiap SDK mobile menyediakan kontrak yang sama: satu panggilan start(...) membuka checkout Dodo yang di-hosting di browser native platform dan mengembalikan CheckoutResult bertipe yang status-nya adalah succeeded, failed, cancelled, pending, atau expired. Tidak ada yang menyimpan API key atau memanggil Dodo Payments API, dan keempatnya mendukung pemulihan sesi yang ditinggalkan.

Android

com.dodopayments.api:checkout-android membuka Chrome Custom Tab. Memerlukan minSdk 23.

iOS

dodopayments-mobile-sdk-ios membuka SFSafariViewController. Memerlukan iOS 16+.

React Native

@dodopayments/react-native-checkout, Turbo Module di atas kedua native core. Memerlukan React Native 0.76+.

Flutter

dodopayments_checkout, channel Pigeon di atas kedua native core. Memerlukan Flutter 3.44+.
status yang Anda dapatkan adalah petunjuk UI, bukan bukti pembayaran. Konfirmasikan setiap pembayaran dari backend Anda melalui webhook payment.succeeded / subscription.active, atau dengan mengambil pembayaran menggunakan secret key Anda.

Mendaftarkan Skema URL Callback

Keempat SDK mengembalikan kontrol ke aplikasi Anda melalui skema URL khusus yang Anda pilih, misalnya myapp://checkout/return. Daftarkan sekali untuk setiap platform:
android/app/build.gradle
Manifest SDK itu sendiri sudah mendeklarasikan aktivitas pengalihan, jadi tidak ada XML manifest yang perlu ditambahkan.
Lebih suka membuatnya sendiri? Buka checkout_url di WebView dan intercept navigasi ke return_url Anda, lalu baca parameter query status dan payment_id. SDK di atas melakukan ini untuk Anda di browser nyata platform, sehingga Apple Pay dan Google Pay tetap berfungsi.

Kustomisasi Tampilan

Setiap SDK menerima parameter customization opsional pada start(...) / CheckoutParams yang mengontrol tampilan dan perilaku surface browser native — toolbar, tombol, dan presentasi. Ini terpisah dari tema halaman checkout itu sendiri, yang Anda konfigurasi di sisi server melalui customization.theme_config pada checkout session. Opsi dikelompokkan berdasarkan platform karena Custom Tab Android dan iOS SFSafariViewController mengekspos kontrol native yang berbeda. Semua field bersifat opsional; jika customization dihilangkan sepenuhnya, tampilan default masing-masing platform akan digunakan.
Color
Warna latar toolbar.
Color
Warna navigation bar.
Color
Warna divider di atas navigation bar.
'default' | 'back'
default menampilkan ikon sistem “X”; back menggambar panah kembali.
'start' | 'end'
Menentukan di sisi mana tombol tutup muncul pada toolbar.
boolean
Menampilkan ikon berbagi pada toolbar.
boolean
Menampilkan judul halaman di bawah URL pada toolbar.
boolean
Memungkinkan toolbar tersembunyi secara otomatis saat halaman di-scroll.
boolean
Menampilkan “Bookmark this page” di menu overflow.
boolean
Menampilkan “Download page” di menu overflow.
'system' | 'light' | 'dark'
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.
'done' | 'close' | 'cancel'
Label atau ikon untuk tombol tutup.
'pageSheet' | 'fullScreen'
pageSheet ditampilkan sebagai card dengan swipe-to-dismiss; fullScreen menutupi seluruh layar.
boolean
Memungkinkan toolbar diciutkan saat di-scroll. Hanya terlihat ketika presentationStyle adalah fullScreenpageSheet menjaga bar tetap tersemat terlepas dari pengaturan ini.
'system' | 'light' | 'dark'
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.

Praktik Terbaik

  • Keamanan: Jangan pernah menyertakan API key di aplikasi Anda. Buat checkout session di backend Anda dan teruskan hanya checkout_url yang dihasilkan kepada client.
  • Otoritas: Perlakukan CheckoutResult.status sebagai petunjuk UI. Berikan akses hanya setelah backend Anda mengonfirmasi pembayaran.
  • Pengalaman Pengguna: Tampilkan status loading saat backend Anda membuat session, dan tangani cancelled sebagai hasil normal, bukan error.
  • Pengujian: Gunakan test mode dan test cards, lalu verifikasi round trip return-URL pada perangkat nyata maupun simulator.

Pemecahan Masalah

Masalah Umum

  • Callback tidak pernah diterima: Scheme dalam returnUrl harus sesuai dengan yang Anda daftarkan. Di Android, itu adalah manifest placeholder dodoCallbackScheme; di iOS dan React Native, itu adalah URL type Info.plist.
  • Checkout kembali ke browser, bukan ke aplikasi Anda (iOS): Anda belum meneruskan URL yang masuk. Panggil DodoCheckout.handleOpenURL(url) dari .onOpenURL, scene(_:openURLContexts:), atau listener Linking React Native.
  • PLATFORM_ERROR di Android: Biasanya disebabkan oleh ketidaksesuaian scheme. Hal ini juga dapat muncul jika MainActivity Anda menetapkan android:taskAffinity="" (default bawaan flutter create), yang menyebabkan beberapa build OEM kehilangan checkout yang sedang berlangsung.
  • ALREADY_IN_PROGRESS: Checkout masih terbuka. Tunggu atau tutup checkout sebelumnya sebelum memulai checkout lain.
  • Build gagal dengan placeholder yang tidak ter-resolve: Anda telah menambahkan Android SDK tetapi belum menetapkan manifestPlaceholders["dodoCallbackScheme"].
  • Pembayaran berhasil tetapi akses tidak diberikan: Hal ini wajar jika Anda mengandalkan hasil mobile. Berikan akses dari webhook payment.succeeded / subscription.active sebagai gantinya.

Sumber Daya Tambahan

Untuk pertanyaan atau dukungan, hubungi support@dodopayments.com.
Terakhir diubah pada 17 Agustus 2026