Ikhtisar
Checkout inline memungkinkan Anda untuk membuat pengalaman checkout yang sepenuhnya terintegrasi yang menyatu dengan situs web atau aplikasi Anda. Berbeda dengan overlay checkout, yang muncul sebagai modal di atas halaman Anda, checkout inline menyisipkan formulir pembayaran langsung ke dalam tata letak halaman Anda. Dengan menggunakan checkout inline, Anda dapat:- Membuat pengalaman checkout yang sepenuhnya terintegrasi dengan aplikasi atau situs web Anda
- Membiarkan Dodo Payments dengan aman menangkap informasi pelanggan dan pembayaran dalam bingkai checkout yang dioptimalkan
- Menampilkan item, total, dan informasi lain dari Dodo Payments di halaman Anda
- Menggunakan metode dan peristiwa SDK untuk membangun pengalaman checkout yang lebih canggih

Cara Kerjanya
Checkout inline bekerja dengan menyisipkan bingkai Dodo Payments yang aman ke dalam situs web atau aplikasi Anda. Bingkai checkout menangani pengumpulan informasi pelanggan dan menangkap detail pembayaran. Halaman Anda menampilkan daftar item, total, dan opsi untuk mengubah apa yang ada di checkout. SDK memungkinkan halaman Anda dan bingkai checkout berinteraksi satu sama lain. Dodo Payments secara otomatis membuat langganan ketika checkout selesai, siap untuk Anda provision.Frame checkout inline menangani semua informasi pembayaran sensitif dengan aman, memastikan kepatuhan PCI tanpa perlu sertifikasi tambahan dari pihak Anda.
Apa yang Membuat Checkout Inline yang Baik?
Penting bagi pelanggan untuk mengetahui siapa yang mereka beli, apa yang mereka beli, dan berapa banyak yang mereka bayar. Untuk membangun checkout inline yang sesuai dan dioptimalkan untuk konversi, implementasi Anda harus mencakup:
- Informasi berulang: Jika berulang, seberapa sering itu terjadi dan total yang harus dibayar saat pembaruan. Jika percobaan, berapa lama percobaan berlangsung.
- Deskripsi item: Deskripsi tentang apa yang dibeli.
- Total transaksi: Total transaksi, termasuk subtotal, total pajak, dan total keseluruhan. Pastikan untuk menyertakan mata uang juga.
- Footer Dodo Payments: Bingkai checkout inline lengkap, termasuk footer checkout yang memiliki informasi tentang Dodo Payments, syarat penjualan kami, dan kebijakan privasi kami.
- Kebijakan pengembalian: Tautan ke kebijakan pengembalian Anda, jika berbeda dari kebijakan pengembalian standar Dodo Payments.
Perjalanan Pelanggan
Alur checkout ditentukan oleh konfigurasi sesi checkout Anda. Tergantung pada bagaimana Anda mengonfigurasi sesi checkout, pelanggan akan mengalami checkout yang mungkin menyajikan semua informasi di satu halaman atau di beberapa langkah.Customer opens checkout
Anda dapat membuka checkout inline dengan mengirimkan item atau transaksi yang sudah ada. Gunakan SDK untuk menampilkan dan memperbarui informasi di halaman, dan metode SDK untuk memperbarui item berdasarkan interaksi pelanggan.

Customer enters their details
Checkout inline pertama-tama meminta pelanggan untuk memasukkan alamat email mereka, memilih negara mereka, dan (di mana diperlukan) memasukkan kode pos atau kode pos mereka. Langkah ini mengumpulkan semua informasi yang diperlukan untuk menentukan pajak dan opsi pembayaran yang tersedia.Anda dapat mengisi detail pelanggan sebelumnya dan menyajikan alamat yang disimpan untuk memperlancar pengalaman.
Customer selects payment method
Setelah memasukkan detail mereka, pelanggan disajikan dengan metode pembayaran yang tersedia dan formulir pembayaran. Opsi mungkin termasuk kartu kredit atau debit, PayPal, Apple Pay, Google Pay, dan metode pembayaran lokal lainnya berdasarkan lokasi mereka.Tampilkan metode pembayaran yang disimpan jika tersedia untuk mempercepat checkout.

Checkout completed
Dodo Payments mengarahkan setiap pembayaran ke pengakuisisi terbaik untuk penjualan tersebut untuk mendapatkan peluang terbaik untuk sukses. Pelanggan memasuki alur kerja sukses yang dapat Anda bangun.

Memulai dengan Cepat
Mulai dengan Dodo Payments Inline Checkout hanya dalam beberapa baris kode:Panduan Integrasi Langkah-demi-Langkah
Initialize the SDK for Inline Display
Inisialisasi SDK dan tentukan
displayType: 'inline'. Anda juga harus mendengarkan event checkout.breakdown untuk memperbarui UI Anda dengan perhitungan pajak dan total secara real-time.Open the Checkout
Panggil
DodoPayments.Checkout.open() dengan checkoutUrl dan elementId dari kontainer Anda:Test Your Integration
- Mulai server pengembangan Anda:
- Uji alur checkout:
- Masukkan email dan detail alamat Anda di bingkai inline.
- Verifikasi bahwa ringkasan pesanan kustom Anda diperbarui secara real-time.
- Uji alur pembayaran menggunakan kredensial uji.
- Konfirmasi pengalihan berfungsi dengan benar.
Anda akan melihat event
checkout.breakdown dicatat di konsol browser Anda jika Anda menambahkan console log pada callback onEvent.Contoh React Lengkap
Contoh ini menunjukkan cara mengimplementasikan ringkasan pesanan kustom bersamaan dengan checkout inline, menjaga keduanya tetap sinkron menggunakan eventcheckout.breakdown.
Referensi API
Konfigurasi
Opsi Inisialisasi
| Opsi | Tipe | Wajib | Deskripsi |
|---|---|---|---|
mode | "test" | "live" | Ya | Mode lingkungan. |
displayType | "inline" | "overlay" | Ya | Harus diatur ke "inline" untuk menyematkan checkout. |
onEvent | function | Ya | Fungsi callback untuk menangani event checkout. |
Opsi Checkout
| Opsi | Tipe | Diperlukan | Deskripsi |
|---|---|---|---|
checkoutUrl | string | Yes | URL sesi checkout. |
elementId | string | Yes | id dari elemen DOM tempat checkout harus ditampilkan. |
options.showTimer | boolean | No | Tampilkan atau sembunyikan timer checkout. Secara default true. Saat dinonaktifkan, Anda akan menerima event checkout.link_expired ketika sesi berakhir. |
options.showSecurityBadge | boolean | No | Tampilkan atau sembunyikan badge keamanan. Secara default true. |
options.manualRedirect | boolean | No | Saat diaktifkan, checkout tidak akan otomatis mengalihkan setelah selesai. Sebagai gantinya, Anda akan menerima event checkout.status dan checkout.redirect_requested untuk menangani pengalihan sendiri. |
options.payButtonText | string | No | Teks kustom yang ditampilkan pada tombol bayar. |
options.fontSize | FontSize | No | Ukuran font global untuk checkout. |
options.fontWeight | FontWeight | No | Ketebalan font global untuk checkout. |
Metode
Buka Checkout
Membuka bingkai checkout di kontainer yang ditentukan.manualRedirect, tangani penyelesaian checkout dalam callback onEvent Anda:
Tutup Checkout
Secara programatik menghapus bingkai checkout dan membersihkan pendengar event.Periksa Status
Mengembalikan apakah bingkai checkout saat ini disuntikkan.Event
SDK menyediakan event real-time melalui callbackonEvent. Untuk checkout inline, checkout.breakdown sangat berguna untuk menyinkronkan UI Anda.
| Tipe Event | Deskripsi |
|---|---|
checkout.opened | Frame checkout telah dimuat. |
checkout.form_ready | Formulir checkout siap menerima input pengguna. Berguna untuk menyembunyikan status pemuatan dan menampilkan UI checkout. |
checkout.breakdown | Dipicu saat harga, pajak, atau diskon diperbarui. |
checkout.customer_details_submitted | Detail pelanggan telah diserahkan. |
checkout.pay_button_clicked | Dipicu saat pelanggan mengklik tombol bayar. Berguna untuk analitik dan melacak konversi. |
checkout.redirect | Checkout akan melakukan pengalihan (misalnya ke halaman bank). |
checkout.error | Terjadi kesalahan selama checkout. |
checkout.link_expired | Dipicu saat sesi checkout kedaluwarsa. Hanya diterima ketika showTimer diatur ke false. |
checkout.status | Dipicu saat manualRedirect diaktifkan. Berisi status checkout (succeeded, failed, atau processing). |
checkout.redirect_requested | Dipicu saat manualRedirect diaktifkan. Berisi URL untuk mengalihkan pelanggan. |
Data Rincian Checkout
Eventcheckout.breakdown memberikan data berikut:
Data Event Status Checkout
SaatmanualRedirect diaktifkan, Anda menerima event checkout.status dengan data berikut:
Data Event Pengalihan Checkout Diminta
SaatmanualRedirect diaktifkan, Anda menerima event checkout.redirect_requested dengan data berikut:
Memahami Event Rincian
Eventcheckout.breakdown adalah cara utama untuk menjaga UI aplikasi Anda tetap sinkron dengan status checkout Dodo Payments.
Saat ini terjadi:
- Saat inisialisasi: Segera setelah bingkai checkout dimuat dan siap.
- Saat perubahan alamat: Setiap kali pelanggan memilih negara atau memasukkan kode pos yang mengakibatkan perhitungan ulang pajak.
| Kolom | Deskripsi |
|---|---|
subTotal | Jumlah semua item baris dalam sesi sebelum diskon atau pajak diterapkan. |
discount | Total nilai semua diskon yang diterapkan. |
tax | Jumlah pajak yang dihitung. Dalam mode inline, ini diperbarui secara dinamis saat pengguna berinteraksi dengan kolom alamat. |
total | Hasil matematis dari subTotal - discount + tax dalam mata uang dasar sesi. |
currency | Kode mata uang ISO (misalnya "USD") untuk subtotal standar, diskon, dan nilai pajak. |
finalTotal | Jumlah aktual yang dibebankan kepada pelanggan. Ini mungkin mencakup penyesuaian nilai tukar asing tambahan atau biaya metode pembayaran lokal yang tidak termasuk dalam rincian harga dasar. |
finalTotalCurrency | Mata uang yang benar-benar digunakan pelanggan untuk membayar. Ini dapat berbeda dari currency jika paritas daya beli atau konversi mata uang lokal aktif. |
- Format Mata Uang: Harga selalu dikembalikan sebagai bilangan bulat dalam unit mata uang terkecil (misalnya sen untuk USD, yen untuk JPY). Untuk menampilkannya, bagi dengan 100 (atau pangkat 10 yang sesuai) atau gunakan library pemformatan seperti
Intl.NumberFormat. - Menangani Status Awal: Ketika checkout pertama kali dimuat,
taxdandiscountmungkin0ataunullsampai pengguna memberikan informasi penagihan atau menerapkan kode. UI Anda harus menangani status ini dengan mulus (misalnya menampilkan tanda hubung—atau menyembunyikan baris tersebut). - “Total Akhir” vs “Total”: Sementara
totalmemberi Anda perhitungan harga standar,finalTotaladalah sumber kebenaran untuk transaksi. JikafinalTotalhadir, itu mencerminkan persis apa yang akan dibebankan ke kartu pelanggan, termasuk penyesuaian dinamis. - Umpan Balik Real-time: Gunakan kolom
taxuntuk menunjukkan kepada pengguna bahwa pajak sedang dihitung secara real-time. Ini memberikan nuansa “langsung” pada halaman checkout Anda dan mengurangi gesekan selama langkah pengisian alamat.
Opsi Implementasi
Instalasi Manajer Paket
Instal melalui npm, yarn, atau pnpm seperti yang ditunjukkan dalam Panduan Integrasi Langkah-demi-Langkah.Implementasi CDN
Untuk integrasi cepat tanpa langkah build, Anda dapat menggunakan CDN kami:Perbarui Metode Pembayaran
Inline checkout mendukung pembaruan metode pembayaran untuk langganan. Ketika pelanggan perlu memperbarui metode pembayarannya — baik untuk langganan aktif maupun untuk mengaktifkan kembali langganan yang ditangguhkan — Anda dapat menampilkan alur pembaruan langsung di dalam tata letak halaman Anda.Cara Kerjanya
- Panggil Update Payment Method API untuk mendapatkan
payment_link:
- Kirimkan
payment_linkyang dikembalikan sebagaicheckoutUrluntuk membuka inline checkout:
Untuk Langganan yang Ditangguhkan
Saat memperbarui metode pembayaran untuk langganan dalam statuson_hold, Dodo Payments secara otomatis membuat biaya untuk hutang yang tersisa. Pantau webhook payment.succeeded dan subscription.active untuk memastikan reaktivasi.
Penanganan Kesalahan
SDK memberikan informasi kesalahan yang rinci melalui sistem event. Selalu terapkan penanganan kesalahan yang tepat di dalam callbackonEvent Anda:
Praktik Terbaik
- Desain Responsif: Pastikan elemen kontainer Anda memiliki lebar dan tinggi yang cukup. Iframe biasanya akan memperluas untuk mengisi kontainernya.
- Sinkronisasi: Gunakan event
checkout.breakdownuntuk menjaga ringkasan pesanan kustom atau tabel harga Anda tetap sinkron dengan apa yang dilihat pengguna di frame checkout. - Status Skeleton: Tampilkan indikator pemuatan dalam kontainer Anda sampai event
checkout.openeddipicu. - Pembersihan: Panggil
DodoPayments.Checkout.close()saat komponen Anda dilepas untuk membersihkan iframe dan pendengar event.
Untuk implementasi mode gelap, disarankan menggunakan
#0d0d0d sebagai warna latar belakang agar integrasi visual dengan frame inline checkout optimal.Validasi Status Pembayaran
Mengapa Validasi Sisi Server Itu Penting
Meskipun event inline checkout seperticheckout.status memberikan umpan balik waktu nyata, event tersebut tidak boleh menjadi satu-satunya sumber kebenaran untuk status pembayaran. Masalah jaringan, kerusakan peramban, atau pengguna menutup halaman dapat menyebabkan event terlewat. Untuk memastikan validasi pembayaran yang andal:
- Server Anda harus mendengarkan event webhook - Dodo Payments mengirim webhook untuk perubahan status pembayaran
- Terapkan mekanisme polling - Antarmuka Anda harus melakukan polling ke server untuk pembaruan status
- Gabungkan kedua pendekatan - Gunakan webhook sebagai sumber utama dan polling sebagai cadangan
Arsitektur yang Direkomendasikan
Langkah Implementasi
1. Dengarkan event checkout - Ketika pengguna mengklik bayar, mulai persiapkan untuk memverifikasi status:payment.succeeded atau payment.failed. Lihat dokumentasi Webhooks kami untuk detailnya.
Menangani Pengalihan (3DS, Google Pay, UPI)
Saat menggunakanmanualRedirect: true, beberapa metode pembayaran membutuhkan pengalihan pengguna dari halaman Anda untuk otentikasi:
- 3D Secure (3DS) - Autentikasi kartu
- Google Pay - Autentikasi dompet pada beberapa alur
- UPI - Pengalihan metode pembayaran India
checkout.redirect_requested. Alihkan pengguna ke URL yang diberikan:
- Periksa apakah pengguna kembali dari pengalihan (misalnya, melalui
sessionStorage) - Mulai polling ke server Anda untuk status pembayaran yang telah dikonfirmasi
- Tampilkan status “Memverifikasi pembayaran…” saat melakukan polling
- Tampilkan antarmuka sukses/gagal berdasarkan status yang dikonfirmasi server
Pemecahan Masalah
Checkout frame is not appearing
Checkout frame is not appearing
- Verifikasi bahwa
elementIdcocok denganiddaridivyang benar-benar ada di DOM. - Pastikan
displayType: 'inline'dikirim keInitialize. - Periksa bahwa
checkoutUrlvalid.
Taxes are not updating in my UI
Taxes are not updating in my UI
- Pastikan Anda mendengarkan event
checkout.breakdown. - Pajak hanya dihitung setelah pengguna memasukkan negara dan kode pos yang valid di frame checkout.
Mengaktifkan Dompet Digital
Untuk informasi terperinci tentang cara menyiapkan Apple Pay, Google Pay, dan dompet digital lainnya, lihat halaman Digital Wallets.Pengaturan Cepat untuk Apple Pay
Download domain association file
Request activation
Kirim email ke support@dodopayments.com dengan URL domain produksi Anda dan minta aktivasi Apple Pay.
Dukungan Peramban
Dodo Payments Checkout SDK mendukung peramban berikut:- Chrome (terbaru)
- Firefox (terbaru)
- Safari (terbaru)
- Edge (terbaru)
- IE11+
Checkout Inline vs Overlay
Pilih jenis checkout yang tepat untuk kasus penggunaan Anda:| Fitur | Inline Checkout | Overlay Checkout |
|---|---|---|
| Tingkat integrasi | Tersemat penuh di halaman | Modal di atas halaman |
| Kontrol tata letak | Kontrol penuh | Terbatas |
| Pencitraan merek | Mulus | Terpisah dari halaman |
| Upaya implementasi | Lebih tinggi | Lebih rendah |
| Terbaik untuk | Halaman checkout kustom, alur konversi tinggi | Integrasi cepat, halaman yang sudah ada |
Sumber Daya Terkait
Overlay Checkout
Gunakan overlay checkout untuk integrasi cepat berbasis modal.
Checkout Sessions API
Buat sesi checkout untuk mendukung pengalaman checkout Anda.
Webhooks
Tangani event pembayaran di sisi server dengan webhook.
Integration Guide
Panduan lengkap untuk mengintegrasikan Dodo Payments.
