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.
-
Generate your API key:
- Go to Developer > API
- Detailed Guide
- Copy the API key the in env named 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 billing.
-
booleandefault:"true"Menampilkan atau menyembunyikan pemilih mata uang.
-
integerJumlah dalam sen (hanya untuk penetapan harga Pay What You Want).
-
stringField metadata kustom (misalnya,
metadata_orderId=123).
6
Share the link
Kirim payment link yang telah selesai kepada pelanggan Anda. Saat mereka membukanya, semua query parameters dikumpulkan dan disimpan bersama session ID. URL kemudian disederhanakan agar hanya menyertakan parameter session, misalnya
?session=sess_1a2b3c4d. Informasi yang disimpan tetap ada setelah halaman dimuat ulang dan dapat diakses sepanjang 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 API reference
- Subscription Payment Link API API reference
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 contoh menggunakan Next.js:Event yang Perlu Didengarkan
Aktifkanpayload.type dan tangani event yang relevan dengan alur pembayaran satu kali. Minimal, dengarkan event berikut:
Jika Anda menjual produk digital dengan license keys, tangani juga
license_key.created. Untuk daftar lengkap event — termasuk event subscription, entitlement, credit, recovery, dan dunning — lihat Webhook Event Guide.
Anda dapat melihat project ini dengan 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 jika
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 yang kembali dengan metode pembayaran tersimpan, teruskan
payment_method_id bersama confirm: true untuk menagih secara instan tanpa memilih metode.API Reference Terkait
Create Checkout Session
API reference untuk membuat checkout sessions yang aman dan di-host untuk pembayaran satu kali dan subscription
Create Payment Link
API reference untuk membuat dynamic payment links secara terprogram