Ini adalah checkout SDK React Native resmi dari Dodo Payments,
@dodopayments/react-native-checkout. SDK ini membuka hosted checkout Dodo di tampilan browser native dan mengembalikan hasil bertipe. Catatan: terdapat package lama yang tidak terkait bernama dodopayments-react-native-sdk (unscoped) dengan API yang sepenuhnya berbeda. Halaman ini hanya mendokumentasikan package scoped resmi yang saat ini digunakan.Checkout Sessions API
Buat checkout_url yang dibuka SDK ini, dari backend Anda.
Mobile Integration Guide
Lihat bagaimana hal ini menjadi bagian dari alur pembayaran mobile secara keseluruhan.
SFSafariViewController di iOS dan Chrome Custom Tab di Android, tidak menyimpan API key, serta tidak pernah memanggil Dodo API secara langsung. Semua logika checkout berjalan di browser; SDK hanya mengelola siklus hidup tampilan dan menangkap return URL.
Instalasi
1
Install the Package
- Android
- iOS
- Expo
Package ini ditautkan secara otomatis dan menarik Tidak diperlukan konfigurasi tambahan; dependency native diselesaikan secara otomatis.
com.dodopayments.api:checkout-android dari Maven.2
Register a Callback URL Scheme
Aplikasi Anda harus mendaftarkan URL scheme untuk menerima return URL dari checkout.
- Android (Gradle)
- iOS (Info.plist)
- Expo (both platforms)
Di Ganti
android/app/build.gradle:android/app/build.gradle
"myapp" dengan scheme aplikasi Anda.Penggunaan
Meneruskan Return URL
ListenerLinking diperlukan untuk penanganan return URL di iOS. Di Android, handleOpenURL adalah no-op yang menyelesaikan false karena core Android menangani redirect secara native. Listener ini aman untuk didaftarkan tanpa syarat di kedua platform.
Arti Hasilnya
CheckoutStatus
wajib
Salah satu dari
succeeded, failed, cancelled, pending, expired.string
Ditetapkan ketika return URL menyertakannya. Tampilkan di UI, jangan gunakan untuk memberikan akses. Lihat Verifikasi Pembayaran di bawah.
string
Ditetapkan untuk checkout subscription.
string[]
Ditetapkan ketika checkout menyertakan produk license key.
string
Ditetapkan ketika checkout mengambil email.
Record<string, string>
Setiap query parameter dari return URL, secara verbatim.
Verifikasi Pembayaran
Webhooks
Dodo Payments memanggil backend Anda ketika pembayaran berhasil atau subscription diaktifkan.
Get Payment Detail
Cari
paymentId dengan secret key Anda untuk memeriksa statusnya secara langsung.result.status.
Kustomisasi Tampilan
Sesuaikan toolbar, tombol, dan skema warna browser checkout melaluicustomization di start(...). Opsi dikelompokkan berdasarkan platform karena
Custom Tab Android dan SFSafariViewController di iOS mengekspos kontrol
native yang berbeda. Semua kolom bersifat opsional; jika customization dihilangkan, setiap
platform akan menggunakan tampilan defaultnya.
Android — Custom Tab
Android — Custom Tab
Color
Warna latar belakang toolbar.
Warna bilah navigasi.
Warna pemisah di atas bilah navigasi.
'default' | 'back'
default menampilkan ikon “X” sistem; back menampilkan panah kembali.'start' | 'end'
Menentukan di sisi mana tombol tutup muncul pada toolbar.
Menampilkan ikon berbagi pada toolbar.
boolean
Menampilkan judul halaman di bawah URL pada toolbar.
boolean
Memungkinkan toolbar tersembunyi secara otomatis saat halaman digulir.
boolean
Menampilkan “Bookmark this page” di menu luapan.
boolean
Menampilkan “Download page” di menu luapan.
'system' | 'light' | 'dark'
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.
iOS — SFSafariViewController
iOS — SFSafariViewController
'done' | 'close' | 'cancel'
Label atau ikon untuk tombol tutup.
'pageSheet' | 'fullScreen'
pageSheet ditampilkan sebagai kartu dengan gestur geser untuk menutup; fullScreen menutupi seluruh layar.boolean
Memungkinkan toolbar diciutkan saat menggulir. Hanya terlihat ketika
presentationStyle adalah fullScreen — pageSheet mempertahankan bilah tetap pada posisinya terlepas dari pengaturan ini.'system' | 'light' | 'dark'
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.
Error
start menolak dengan CheckoutError hanya jika terjadi penyalahgunaan atau kegagalan platform. Pembayaran yang dibatalkan atau ditolak selalu menjadi hasil, bukan exception.
INVALID_CHECKOUT_URL: bukan URL sesicheckout.dodopayments.com.INVALID_RETURN_URL: bukan URL absolut yang valid.ALREADY_IN_PROGRESS: checkout sudah berjalan.PLATFORM_ERROR: kegagalan platform yang tidak terduga.
Sesi yang Ditinggalkan
Jika aplikasi atau bundel JS dihentikan di tengah checkout, promise akan hilang, tetapi lapisan native tetap mempertahankan sesi tersebut. Pulihkan sesi pada mount berikutnya dan rekonsiliasikan dengan backend Anda.Terkait
Mobile Integration Guide
Kontrak yang sama untuk Android, iOS, dan Flutter.
Expo Boilerplate
Contoh Expo lengkap dengan integrasi checkout.