Skip to main content
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

Tambahkan tipe URL untuk skema Anda di ios/Runner/Info.plist:
ios/Runner/Info.plist
Kemudian teruskan URL yang masuk (misalnya melalui 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

result.status adalah petunjuk UI, bukan bukti pembayaran. Konfirmasikan setiap pembayaran dari backend Anda melalui webhook payment.succeeded / subscription.active.
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.
Berikan akses setelah salah satu hal ini mengonfirmasi pembayaran, jangan pernah hanya berdasarkan result.status.

Kustomisasi Tampilan

Sesuaikan toolbar, tombol, dan skema warna browser checkout melalui customization 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.
Color?
Warna latar belakang toolbar.
Color?
Warna navigation bar.
Color?
Warna pemisah di atas navigation bar.
CloseButtonStyle
standard menampilkan ikon “X” sistem; back menampilkan panah kembali.
CloseButtonPosition
Sisi toolbar tempat tombol tutup ditampilkan.
bool
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.
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 fullScreenpageSheet 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 sesi checkout.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.
Terakhir diubah pada 17 Agustus 2026