Skip to main content
Inline checkout menyematkan formulir pembayaran yang aman langsung ke tata letak halaman Anda. Berbeda dengan overlay checkout, yang terbuka sebagai modal, inline checkout menjadi bagian dari halaman Anda. Anda mengontrol tata letak dan dapat menampilkan ringkasan pesanan sendiri di samping formulir checkout.
Formulir inline checkout yang disematkan di halaman produk dengan ringkasan pesanan

Cara Kerjanya

Inline checkout merender frame Dodo Payments yang aman ke dalam container di halaman Anda. Frame ini menangani pengumpulan informasi pelanggan dan detail pembayaran. Halaman Anda menampilkan item, total, dan informasi lainnya. SDK memungkinkan halaman Anda dan frame checkout berkomunikasi satu sama lain. Saat checkout selesai, Dodo Payments membuat pembayaran, atau subscription untuk produk subscription, dan mengirim webhook agar Anda dapat memberikan akses.
Frame inline checkout menangani semua informasi pembayaran sensitif dengan aman, sehingga memastikan kepatuhan PCI tanpa memerlukan sertifikasi tambahan dari Anda.

Karakteristik Inline Checkout yang Baik

Pelanggan perlu mengetahui dengan siapa mereka bertransaksi, apa yang mereka beli, dan berapa yang harus dibayar. Implementasi Anda harus mencakup:
Contoh inline checkout dengan elemen wajib yang diberi label

Example inline checkout layout showing required elements

  1. Informasi berulang: Jika pembayaran berulang, tampilkan seberapa sering pembayaran terjadi dan total yang harus dibayar saat perpanjangan. Jika berupa trial, tampilkan durasi trial.
  2. Deskripsi item: Deskripsi tentang apa yang dibeli.
  3. Total transaksi: Subtotal, total pajak, dan total keseluruhan, termasuk mata uang.
  4. Footer Dodo Payments: Frame inline checkout lengkap, termasuk footer dengan informasi Dodo Payments, ketentuan penjualan, dan kebijakan privasi.
  5. Kebijakan pengembalian dana: Tautan ke kebijakan pengembalian dana Anda, jika berbeda dari kebijakan pengembalian dana standar Dodo Payments.
Selalu tampilkan frame inline checkout lengkap, termasuk footer. Menghapus atau menyembunyikan informasi hukum melanggar persyaratan kepatuhan.

Perjalanan Pelanggan

Alur checkout bergantung pada konfigurasi checkout session Anda. Bergantung pada cara Anda mengonfigurasi session, pelanggan mungkin melihat semua informasi di satu halaman atau melalui beberapa langkah.
1

Customer opens checkout

Anda membuka inline checkout dengan meneruskan URL checkout. Gunakan event SDK, seperti checkout.breakdown, untuk menampilkan dan memperbarui informasi pada halaman.Halaman checkout awal dengan daftar item dan formulir pembayaran
2

Customer enters their details

Inline checkout terlebih dahulu meminta pelanggan memasukkan alamat email, memilih negara, dan (jika diperlukan) memasukkan ZIP atau kode pos. Langkah ini mengumpulkan semua informasi yang diperlukan untuk menentukan pajak dan opsi pembayaran yang tersedia.Anda dapat mengisi detail pelanggan terlebih dahulu dan menampilkan alamat tersimpan untuk menyederhanakan pengalaman.
3

Customer selects payment method

Setelah memasukkan detail, pelanggan akan melihat metode pembayaran yang tersedia dan formulir pembayaran. Opsi dapat mencakup kartu kredit atau debit, PayPal, Apple Pay, Google Pay, dan metode pembayaran lokal lainnya berdasarkan lokasi mereka.Tampilkan metode pembayaran tersimpan jika tersedia untuk mempercepat checkout.Metode pembayaran yang tersedia dan formulir detail kartu
4

Checkout completed

Dodo Payments merutekan setiap pembayaran ke acquirer terbaik untuk penjualan tersebut guna mendapatkan peluang keberhasilan terbaik. Pelanggan memasuki alur keberhasilan yang dapat Anda buat.Layar keberhasilan dengan tanda centang konfirmasi
5

Dodo Payments creates the payment or subscription

Dodo Payments membuat pembayaran, atau subscription untuk produk subscription, dan mengirim webhook agar Anda dapat memberikan akses. Metode pembayaran yang digunakan pelanggan disimpan untuk perpanjangan atau perubahan subscription.Subscription dibuat dengan notifikasi webhook

Mulai Cepat

Instal SDK, inisialisasikan untuk mode inline, dan buka checkout di elemen container:
Pastikan Anda memiliki elemen container dengan id yang sesuai di halaman Anda: <div id="dodo-inline-checkout"></div>.

Integrasi Langkah demi Langkah

1

Install the SDK

Instal melalui npm, yarn, atau pnpm:
2

Initialize the SDK for Inline Display

Inisialisasikan SDK dan tentukan displayType: 'inline'. Dengarkan event checkout.breakdown untuk memperbarui UI Anda dengan kalkulasi pajak dan total secara real-time:
3

Create a Container Element

Tambahkan elemen ke HTML tempat frame checkout akan disisipkan:
4

Open the Checkout

Panggil DodoPayments.Checkout.open() dengan checkoutUrl dan elementId dari container Anda:
5

Test Your Integration

  1. Jalankan development server Anda:
  1. Uji alur checkout:
    • Masukkan email dan detail alamat Anda di frame inline
    • Pastikan ringkasan pesanan kustom Anda diperbarui secara real-time
    • Uji alur pembayaran menggunakan kredensial pengujian
    • Pastikan pengalihan berfungsi dengan benar
Anda akan melihat event checkout.breakdown tercatat di konsol browser jika Anda menambahkan log konsol di callback onEvent.
6

Go Live

Saat siap untuk production:
  1. Ubah mode menjadi 'live':
  1. Perbarui URL checkout Anda agar menggunakan checkout session live dari backend Anda
  2. Uji alur lengkap di production

Contoh React Lengkap

Contoh ini menunjukkan cara mengimplementasikan ringkasan pesanan kustom di samping inline checkout dan menjaganya tetap sinkron menggunakan event checkout.breakdown:

Referensi API

Inisialisasi

Panggil Initialize sekali untuk menyiapkan SDK:

Buka Checkout

Buka frame checkout di dalam container:

Tutup Checkout

Hapus frame checkout secara terprogram dan bersihkan event listener:

Periksa Status

Periksa apakah frame checkout saat ini telah disisipkan:

Event

SDK menyediakan event real-time melalui callback onEvent. Untuk inline checkout, checkout.breakdown sangat berguna untuk menyinkronkan UI Anda:

Data Rincian Checkout

Event checkout.breakdown menyediakan informasi harga dan pajak:
Event ini dijalankan saat frame checkout dimuat, dan kembali dijalankan setiap kali harga dihitung ulang, misalnya saat pelanggan memilih negara atau memasukkan kode pos yang mengubah pajak. Detail Field: Tips Integrasi:
  1. Pemformatan Mata Uang: Harga berupa bilangan bulat dalam unit mata uang terkecil, misalnya sen untuk USD. Untuk mata uang dengan dua angka desimal, bagi dengan 100 sebelum memformat menggunakan Intl.NumberFormat. Mata uang tanpa angka desimal, seperti JPY, tidak memiliki unit yang lebih kecil, jadi jangan membaginya.
  2. Menangani State Awal: Saat checkout pertama kali dimuat, tax dan discount mungkin berupa 0 atau null hingga pengguna memberikan informasi penagihan atau menerapkan kode. Tangani state ini dengan baik (misalnya, tampilkan tanda pisah — atau sembunyikan baris tersebut).
  3. “Final Total” vs “Total”: Meskipun total memberikan kalkulasi harga standar, finalTotal adalah sumber kebenaran untuk transaksi. Jika finalTotal tersedia, nilainya mencerminkan jumlah persis yang akan dibebankan ke kartu pelanggan.
  4. Feedback Real-time: Gunakan field tax untuk menunjukkan kepada pengguna bahwa pajak sedang dihitung secara real-time. Ini membuat halaman checkout terasa “live” dan mengurangi hambatan saat memasukkan alamat.

Implementasi CDN

Untuk integrasi cepat tanpa build step, muat SDK dari CDN:

Perbarui Metode Pembayaran

Inline checkout mendukung pembaruan metode pembayaran untuk subscription. Saat pelanggan perlu memperbarui metode pembayaran untuk subscription aktif atau mengaktifkan kembali subscription yang ditangguhkan, Anda dapat merender alur pembaruan langsung di dalam tata letak halaman Anda.

Cara Kerjanya

  1. Panggil Update Payment Method API untuk mendapatkan payment_link:
  1. Teruskan payment_link yang dikembalikan sebagai checkoutUrl untuk membuka inline checkout:
Frame inline hanya merender formulir pengumpulan metode pembayaran. Pelanggan dapat memasukkan detail kartu baru atau memilih metode pembayaran tersimpan tanpa meninggalkan halaman Anda.

Untuk Subscription yang Ditangguhkan

Saat memperbarui metode pembayaran untuk subscription dengan status on_hold, Dodo Payments secara otomatis membuat charge untuk tunggakan yang tersisa. Pantau webhook payment.succeeded dan subscription.active untuk mengonfirmasi pengaktifan kembali.
Anda juga dapat menggunakan metode pembayaran tersimpan yang sudah ada alih-alih mengumpulkan detail baru dengan meneruskan type: 'existing' bersama payment_method_id ke Update Payment Method API.

Penanganan Error

Selalu implementasikan penanganan error di callback onEvent Anda:
Selalu tangani event checkout.error untuk memberikan pengalaman pengguna yang baik saat terjadi error.

Praktik Terbaik

  1. Desain Responsif: Pastikan elemen container Anda memiliki lebar dan tinggi yang cukup. Iframe biasanya akan diperluas untuk mengisi container-nya.
  2. Sinkronisasi: Gunakan event checkout.breakdown untuk menjaga ringkasan pesanan kustom atau tabel harga tetap sinkron dengan yang dilihat pengguna di frame checkout.
  3. State Skeleton: Tampilkan indikator loading di container hingga event checkout.opened dijalankan.
  4. Pembersihan: Panggil DodoPayments.Checkout.close() saat component Anda unmount untuk membersihkan iframe dan event listener.
Untuk implementasi dark mode, gunakan #0d0d0d sebagai warna latar belakang guna mendapatkan integrasi visual optimal dengan frame inline checkout.

Validasi Status Pembayaran

Jangan hanya mengandalkan event inline checkout untuk menentukan keberhasilan atau kegagalan pembayaran. Selalu implementasikan validasi sisi server menggunakan webhook dan/atau polling.

Mengapa Validasi Sisi Server Penting

Meskipun event inline checkout memberikan feedback real-time, event tersebut tidak boleh menjadi satu-satunya sumber kebenaran untuk status pembayaran. Masalah jaringan, browser crash, atau pengguna yang menutup halaman dapat menyebabkan event terlewat. Untuk memastikan validasi pembayaran yang andal:
  1. Dengarkan event webhook - Dodo Payments mengirim webhook untuk perubahan status pembayaran
  2. Implementasikan mekanisme polling - Frontend Anda harus melakukan polling ke server untuk mendapatkan pembaruan status
  3. Gabungkan kedua pendekatan - Gunakan webhook sebagai sumber utama dan polling sebagai cadangan

Arsitektur yang Direkomendasikan

Langkah Implementasi

1. Dengarkan event checkout - Saat pengguna mengeklik tombol pembayaran, mulai persiapan untuk memverifikasi status:
2. Lakukan polling ke server - Buat endpoint yang memeriksa database Anda untuk mengetahui status pembayaran (yang diperbarui oleh webhook):
3. Tangani webhook di sisi server - Perbarui database Anda saat Dodo mengirim webhook payment.succeeded atau payment.failed. Lihat dokumentasi Webhooks kami untuk detailnya.

Pemecahan Masalah

  • Verifikasi bahwa elementId cocok dengan id dari div yang benar-benar ada di DOM
  • Pastikan displayType: 'inline' diteruskan ke Initialize
  • Periksa apakah checkoutUrl valid
  • Pastikan Anda mendengarkan event checkout.breakdown
  • Pajak hanya dihitung setelah pengguna memasukkan negara dan kode pos yang valid di frame checkout

Dompet Digital

Untuk informasi mendetail tentang penyiapan Apple Pay, Google Pay, dan dompet digital lainnya, lihat halaman Dompet Digital.

Penyiapan Cepat Apple Pay

Verifikasi domain hanya diperlukan untuk inline (embedded) checkout. Verifikasi ini tidak diperlukan untuk hosted checkout.
Apple Pay tidak tersedia untuk overlay checkout.
Apple Pay diverifikasi per domain dari dashboard.
1

Open Wallet domains

Buka Settings → Payment Methods, lalu pada baris Apple Pay, klik Manage domains.
Tombol Manage domains pada baris Apple Pay di pengaturan Payment Methods

Open Wallet domains from the Apple Pay row

2

Download the domain association file

Dari panel Wallet domains, unduh file asosiasi.
Panel Wallet domains dengan tombol Download file

Download the Apple Pay domain association file

3

Register your domain

Klik Register domain dan masukkan domain tempat Anda menyematkan inline checkout (misalnya shop.example.com), lalu klik Continue.
Formulir pendaftaran domain dengan domain yang telah dimasukkan

Register the domain where you embed inline checkout

4

Host the file on your domain

Host file tersebut di:
File tersebut harus disajikan melalui HTTPS, dapat diakses tanpa pengalihan, dan disajikan dengan Content-Type: application/octet-stream atau text/plain.
5

Verify the domain

Klik Verify domain. Dodo Payments mengonfirmasi bahwa file tersedia dan mengirimkan domain Anda ke Apple.
Layar verifikasi domain dengan path host file asosiasi dan tombol Verify domain

Verify the hosted association file

6

Confirm it's active

Saat status menunjukkan Active, Apple Pay telah diaktifkan untuk domain tersebut. Gunakan toggle Enabled untuk mengaktifkan atau menonaktifkannya per domain.
Daftar domain Wallet yang menampilkan domain dengan status Apple Pay Active dan toggle Enabled

Verified domains show an Active status

7

Test the integration

  1. Buka checkout di perangkat Apple
  2. Pastikan tombol Apple Pay muncul
  3. Selesaikan transaksi pengujian

Dukungan Browser

Dodo Payments Checkout SDK mendukung:
  • Chrome (terbaru)
  • Firefox (terbaru)
  • Safari (terbaru)
  • Edge (terbaru)
  • IE11+

Inline vs Overlay Checkout

Pilih jenis checkout yang tepat untuk kasus penggunaan Anda:
Gunakan inline checkout jika Anda menginginkan kontrol maksimum atas pengalaman checkout dan branding yang konsisten. Gunakan overlay checkout untuk integrasi yang lebih cepat dengan perubahan minimal pada halaman yang sudah ada.

Sumber Daya Terkait

Overlay Checkout

Gunakan overlay checkout untuk integrasi berbasis modal yang cepat.

Checkout Sessions API

Buat checkout session untuk mendukung pengalaman checkout Anda.

Webhooks

Tangani event pembayaran di sisi server dengan webhook.

Integration Guide

Panduan lengkap untuk mengintegrasikan Dodo Payments.
Untuk bantuan lebih lanjut, kunjungi komunitas Discord kami atau hubungi tim dukungan developer kami.
Terakhir diubah pada 26 September 2026