Ini adalah paket Flutter resmi Dodo Payments (
dodopayments_checkout
di pub.dev). Paket terpisah yang dibuat oleh komunitas juga tersedia, lihat
Proyek Komunitas.Checkout Sessions API
Buat checkout_url yang akan dibuka SDK ini dari backend Anda.
Mobile Integration Guide
Lihat bagaimana ini terintegrasi ke dalam alur pembayaran seluler lengkap.
dodopayments_checkout membuka checkout hosted Dodo di
SFSafariViewController di iOS dan Chrome Custom Tab di Android — core
native yang sama seperti yang digunakan oleh SDK mandiri iOS dan
Android. Semua logika checkout berada di
core native tersebut; layer Dart meneruskan pemanggilan melalui channel bertipe
Pigeon. Layer ini tidak menyimpan API key dan
tidak pernah memanggil Dodo Payments API.
Memerlukan Flutter 3.44+ / Dart 3.12+, iOS 16+, dan Android minSdk 23.
Instalasi
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
Tambahkan tipe URL untuk skema Anda di Kemudian teruskan URL yang masuk (misalnya melalui
ios/Runner/Info.plist:ios/Runner/Info.plist
app_links) ke SDK, karena
SFSafariViewController tidak dapat menangkap URL pengembaliannya sendiri:Aman untuk meneruskan setiap URL di sini.
handleOpenURL hanya bertindak pada URL
yang cocok dengan returnUrl terdaftar Anda dan menyelesaikan false untuk URL
lainnya.Penggunaan
Arti Hasil
CheckoutStatus
wajib
Salah satu dari
succeeded, failed, cancelled, pending, expired.String?
Ditetapkan ketika URL pengembalian menyertakan salah satunya. Tampilkan di UI, jangan gunakan untuk memberikan akses. Lihat Verifikasi Pembayaran di bawah.
String?
Ditetapkan untuk checkout langganan.
List<String>?
Ditetapkan ketika checkout menyertakan produk dengan license key.
String?
Ditetapkan ketika checkout menangkap email.
Map<String, String>
Setiap parameter query dari URL pengembalian, apa adanya.
Verifikasi Pembayaran
Webhooks
Dodo Payments memanggil backend Anda ketika pembayaran berhasil atau langganan aktif.
Get Payment Detail
Cari
paymentId menggunakan secret key Anda untuk memeriksa statusnya secara langsung.result.status.
Kustomisasi Tampilan
Sesuaikan toolbar, tombol, dan skema warna browser checkout melaluicustomization di CheckoutParams. Opsi dikelompokkan berdasarkan platform karena
Custom Tab Android dan SFSafariViewController di iOS mengekspos kontrol
native yang berbeda. Semua field bersifat opsional; jika customization dihilangkan, setiap
platform akan menggunakan tampilan defaultnya.
Android — Custom Tab
Android — Custom Tab
Color?
Warna latar belakang toolbar.
Warna navigation bar.
Warna pemisah di atas navigation bar.
CloseButtonStyle
standard menampilkan ikon “X” sistem; back menampilkan panah kembali.CloseButtonPosition
Sisi toolbar tempat tombol tutup ditampilkan.
Menampilkan ikon berbagi di toolbar.
bool
Menampilkan judul halaman di bawah URL pada toolbar.
bool
Memungkinkan toolbar tersembunyi secara otomatis saat halaman di-scroll.
bool
Menampilkan “Bookmark this page” di menu overflow.
bool
Menampilkan “Download page” di menu overflow.
BrowserColorScheme
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.
iOS — SFSafariViewController
iOS — SFSafariViewController
DismissButtonStyle
Label atau ikon untuk tombol tutup.
PresentationStyle
pageSheet ditampilkan sebagai kartu dengan swipe-to-dismiss; fullScreen menutupi seluruh layar.bool
Memungkinkan toolbar diciutkan saat di-scroll. Hanya terlihat ketika
presentationStyle adalah fullScreen — pageSheet menjaga bar tetap terpasang terlepas dari pengaturan ini.BrowserColorScheme
Memaksa tampilan terang atau gelap terlepas dari pengaturan sistem perangkat.
Error
start melempar CheckoutException hanya jika terjadi penggunaan yang tidak semestinya atau kegagalan platform.
Pembayaran yang dibatalkan atau ditolak selalu menjadi result, bukan exception.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): bukan URL sesicheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): bukan URL absolut yang valid.alreadyInProgress(ALREADY_IN_PROGRESS): checkout sedang berjalan.platformError(PLATFORM_ERROR): kegagalan platform yang tidak terduga.
Sesi yang Ditinggalkan
Jika aplikasi dihentikan di tengah checkout, pulihkan sesi saat aplikasi diluncurkan berikutnya dan
rekonsiliasikan dengan backend Anda.
Terkait
Mobile Integration Guide
Kontrak yang sama untuk Android, iOS, dan React Native.
Community Projects
Paket Flutter terpisah yang dibuat oleh komunitas juga tersedia.