Prerequisites
To integrate the Dodo Payments API, you’ll need:- A Dodo Payments merchant account
- API Credentials (API key and webhook secret key) from dashboard
Dashboard Setup
- Navigate to the Dodo Payments Dashboard
- Buat produk (pembayaran satu kali atau subscription). Produk subscription harus diberi harga minimal $1 (atau nilai setara dalam mata uang yang Anda pilih); jumlah di bawah minimum ini tidak didukung.
-
Buat kunci API Anda:
- Buka Developer > API
- Panduan Terperinci
- Salin kunci API di env bernama DODO_PAYMENTS_API_KEY
-
Configure webhooks:
- Go to Developer > Webhooks
- Create a webhook URL for payment notifications
- Copy the webhook secret key in env
Integration
Payment Links
Pilih jalur integrasi yang sesuai dengan kasus penggunaan Anda:- Checkout Sessions (direkomendasikan): Terbaik untuk sebagian besar integrasi. Buat session di server Anda lalu arahkan pelanggan ke checkout yang aman dan di-host.
- Overlay Checkout: Gunakan jika Anda memerlukan pengalaman dalam halaman yang membuka checkout sebagai overlay modal di situs Anda.
- Inline Checkout: Sematkan checkout langsung ke tata letak halaman Anda untuk pengalaman checkout yang sepenuhnya terintegrasi dan bermerek.
- Static Payment Links: URL yang dapat langsung dibagikan tanpa kode untuk mengumpulkan pembayaran dengan cepat.
- Dynamic Payment Links: Link yang dibuat secara terprogram. Namun, Checkout Sessions direkomendasikan karena menyediakan fleksibilitas yang lebih besar.
- Mobile Checkout SDKs: Untuk aplikasi Android, iOS, React Native, dan Flutter native. Buat session di server Anda seperti di atas, lalu teruskan
checkout_urlke SDK.
Overlay dan Inline Checkout hanya tersedia di browser — keduanya menyematkan checkout ke dalam halaman
web. Jika Anda sedang membuat aplikasi mobile native, buat checkout session di
server Anda dan buka dengan
Mobile Checkout SDKs.
1. Checkout Sessions
Gunakan Checkout Sessions untuk membuat pengalaman checkout yang aman dan di-host untuk pembayaran satu kali atau subscription. Anda membuat session di server, lalu mengarahkan pelanggan kecheckout_url yang dikembalikan.
Checkout sessions berlaku selama 24 jam secara default. Jika Anda meneruskan
confirm=true, sessions berlaku selama 15 menit dan semua field wajib harus disediakan.1
Create a checkout session
Pilih SDK pilihan Anda atau panggil REST API.
- Node.js SDK
- Python SDK
- REST API
2
Redirect customer to checkout
Setelah session dibuat, arahkan ke
checkout_url untuk memulai alur yang di-host.2. Overlay Checkout
Untuk pengalaman checkout dalam halaman yang mulus, lihat integrasi Overlay Checkout kami yang memungkinkan pelanggan menyelesaikan pembayaran tanpa meninggalkan situs Anda.3. Inline Checkout
Untuk pengalaman checkout yang sepenuhnya terintegrasi dan disematkan langsung di halaman Anda, gunakan integrasi Inline Checkout kami. Dengan ini, Anda dapat membuat ringkasan pesanan kustom dan mengendalikan sepenuhnya tata letak checkout, sementara Dodo Payments menangani pengumpulan pembayaran dengan aman.4. Static Payment Links
Static payment links memungkinkan Anda menerima pembayaran dengan cepat melalui URL sederhana. Anda dapat menyesuaikan pengalaman checkout dengan meneruskan query parameters untuk mengisi detail pelanggan terlebih dahulu, mengontrol field formulir, dan menambahkan metadata kustom.1
Construct your payment link
Mulai dengan base URL dan tambahkan ID produk:
2
Add core parameters
Sertakan query parameters penting:
-
integerdefault:"1"Jumlah item yang dibeli.
-
stringwajibURL untuk mengarahkan pengguna setelah pembayaran selesai.
URL pengalihan akan menyertakan detail pembayaran sebagai query parameters, misalnya:
Jika produk mengaktifkan license keys, parameter
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.comJika produk mengaktifkan license keys, parameter
license_key juga ditambahkan (dipisahkan koma untuk beberapa key):https://example.com/?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com3
Pre-fill customer information (optional)
Tambahkan field pelanggan atau billing sebagai query parameters untuk menyederhanakan checkout.
Supported Customer Fields
Supported Customer Fields
-
stringNama lengkap pelanggan (diabaikan jika firstName atau lastName diberikan).
-
stringNama depan pelanggan.
-
stringNama belakang pelanggan.
-
stringAlamat email pelanggan.
-
stringNegara pelanggan.
-
stringAlamat jalan.
-
stringKota.
-
stringProvinsi atau negara bagian.
-
stringKode pos/ZIP.
-
booleantrue atau false
4
Control form fields (optional)
Anda dapat menonaktifkan field tertentu agar menjadi hanya-baca bagi pelanggan. Ini berguna jika Anda sudah memiliki detail pelanggan, misalnya untuk pengguna yang sudah login.
disable… yang sesuai ke true:- Disable Flags Table
Mengatur
showDiscounts=false akan menonaktifkan dan menyembunyikan bagian diskon dalam formulir checkout. Gunakan ini jika Anda ingin mencegah pelanggan memasukkan kode kupon atau promosi selama checkout.5
Add advanced controls (optional)
-
stringMenentukan mata uang pembayaran. Secara default menggunakan mata uang negara penagihan.
-
booleandefault:"true"Menampilkan atau menyembunyikan pemilih mata uang.
-
numberMenetapkan jumlah yang dibebankan dalam unit mata uang utama (misalnya,
12.5untuk $12.50). Hanya untuk produk Pay What You Want. Nilai ini diabaikan jika berada di bawah harga minimum produk. -
stringKolom metadata khusus (misalnya,
metadata_orderId=123).
6
Share the link
Kirim payment link yang telah selesai kepada pelanggan Anda. Saat mereka mengunjunginya, semua parameter query dikumpulkan dan disimpan bersama ID sesi. URL kemudian disederhanakan sehingga hanya menyertakan parameter sesi (misalnya,
?session=sess_1a2b3c4d). Informasi yang disimpan tetap ada setelah halaman dimuat ulang dan dapat diakses selama proses checkout.Pengalaman checkout pelanggan kini lebih sederhana dan dipersonalisasi berdasarkan parameter Anda.
4. Dynamic Payment Links
Dibuat melalui panggilan API atau SDK kami dengan detail pelanggan. Berikut contohnya: Ada dua API untuk membuat dynamic payment links:- One-time Payment Link API Referensi API
- Subscription Payment Link API Referensi API
Pastikan Anda meneruskan
payment_link = true untuk mendapatkan payment link - Node.js SDK
- Python SDK
- Go SDK
- Api Reference
Setelah membuat payment link, arahkan pelanggan Anda untuk menyelesaikan pembayaran mereka.
Menerapkan Webhooks
Siapkan endpoint API untuk menerima notifikasi pembayaran. Berikut contohnya menggunakan Next.js:Event yang Perlu Didengarkan
Aktifkanpayload.type dan tangani event yang relevan dengan alur one-time payment. Minimal, dengarkan:
Jika Anda menjual produk digital dengan license key, tangani juga
license_key.created. Untuk daftar lengkap event — termasuk event subscription, entitlement, credit, recovery, dan dunning — lihat Panduan Event Webhook.
Anda dapat merujuk ke project ini yang memiliki implementasi demo di GitHub menggunakan Next.js dan TypeScript.
Anda dapat melihat implementasi live di sini.
Hal Penting yang Perlu Diketahui tentang Checkout & Mata Uang
Checkout sessions kedaluwarsa dalam 24 jam (15 menit ketika
confirm: true), dan setiap checkout_url hanya dapat digunakan satu kali — buat session baru untuk setiap pelanggan dan setiap upaya pembayaran, bukan menggunakan kembali link.Pembelian ulang sekali klik. Untuk pelanggan lama dengan metode pembayaran tersimpan, teruskan
payment_method_id bersama confirm: true untuk melakukan penagihan secara instan tanpa memilih metode.Referensi API Terkait
Create Checkout Session
Referensi API untuk membuat checkout sessions yang aman dan di-hosting untuk pembayaran satu kali dan subscription
Create Payment Link
Referensi API untuk membuat dynamic payment links secara terprogram