Prasyarat
Untuk mengintegrasikan API Dodo Payments, Anda memerlukan:- Akun pedagang Dodo Payments
- Kredensial API (kunci API dan kunci rahasia webhook) dari dasbor
Integrasi API
Sesi Checkout
Gunakan Checkout Sessions untuk menjual produk langganan dengan checkout yang aman dan dihosting. Sertakan produk langganan Anda diproduct_cart dan alihkan pelanggan ke checkout_url.
- Node.js SDK
- Python SDK
- REST API
Respons API
Berikut adalah contoh respons:checkout_url.
Webhook
Saat mengintegrasikan langganan, Anda akan menerima webhook untuk melacak siklus hidup langganan. Webhook ini membantu Anda mengelola status langganan dan skenario pembayaran dengan efektif. Untuk mengatur endpoint webhook Anda, silakan ikuti Panduan Integrasi Rinci.Jenis Acara Langganan
Berikut adalah acara webhook yang melacak perubahan status langganan:subscription.active- Langganan berhasil diaktifkan.subscription.updated- Objek langganan diperbarui (dipicu pada setiap perubahan bidang).subscription.on_hold- Langganan ditangguhkan karena pembaruan gagal.subscription.failed- Pembuatan langganan gagal selama pembuatan mandat.subscription.renewed- Langganan diperbarui untuk periode penagihan berikutnya.
Skenario Pembayaran
Alur Pembayaran Berhasil Ketika pembayaran berhasil, Anda akan menerima webhook berikut:subscription.active- Menunjukkan aktivasi langgananpayment.succeeded- Mengonfirmasi pembayaran awal:- Untuk penagihan langsung (0 hari percobaan): Harapkan dalam 2-10 menit
- Untuk masa percobaan: kapan pun itu berakhir
subscription.renewed- Menunjukkan pemotongan pembayaran dan pembaruan untuk siklus berikutnya. (Pada dasarnya, kapan pun pembayaran ditagihkan untuk produk langganan, Anda akan menerima webhooksubscription.renewedbersamaan denganpayment.succeeded)
- Kegagalan Langganan
subscription.failed- Pembuatan langganan gagal karena kegagalan membuat mandat.payment.failed- Menunjukkan pembayaran gagal.
- Langganan Ditangguhkan
subscription.on_hold- Langganan ditangguhkan karena pembayaran pembaruan gagal atau biaya perubahan paket gagal.- Saat langganan ditangguhkan, langganan tidak akan diperbarui otomatis sampai metode pembayaran diperbarui.
Praktik Terbaik: Untuk menyederhanakan implementasi, kami menyarankan agar Anda terutama melacak event langganan untuk mengelola siklus hidup langganan.
Menangani Langganan Ditangguhkan
Saat langganan memasuki statuson_hold, Anda perlu memperbarui metode pembayaran untuk mengaktifkannya kembali. Bagian ini menjelaskan kapan langganan ditangguhkan dan cara menanganinya.
Ketika Langganan Ditangguhkan
Sebuah langganan ditangguhkan ketika:- Pembayaran pembaruan gagal: Biaya pembaruan otomatis gagal karena dana tidak mencukupi, kartu kadaluarsa, atau penolakan bank
- Biaya perubahan rencana gagal: Biaya segera selama peningkatan/penurunan rencana gagal
- Otorisasi metode pembayaran gagal: Metode pembayaran tidak dapat diotorisasi untuk biaya berulang
Mengaktifkan Kembali Langganan dari Ditangguhkan
Untuk mengaktifkan kembali langganan dari statuson_hold, gunakan Update Payment Method API. Ini secara otomatis:
- Membuat biaya untuk tunggakan yang tersisa
- Menghasilkan faktur untuk biaya tersebut
- Memproses pembayaran menggunakan metode pembayaran baru
- Mengaktifkan kembali langganan ke status
activesetelah pembayaran berhasil
Handle subscription.on_hold webhook
Saat Anda menerima webhook
subscription.on_hold, perbarui status aplikasi Anda dan beri tahu pelanggan:Update payment method
Saat pelanggan siap memperbarui metode pembayarannya, panggil Update Payment Method API:
Anda juga dapat menggunakan ID metode pembayaran yang sudah ada jika pelanggan telah menyimpan metode pembayaran:
Monitor webhook events
Setelah memperbarui metode pembayaran, pantau event webhook berikut:
-
payment.succeeded- Biaya untuk tunggakan berhasil -
subscription.active- Langganan telah diaktifkan kembali -
payment.succeeded- Tagihan untuk tunggakan yang tersisa berhasil -
subscription.active- Langganan telah diaktifkan kembali
Contoh Payload Acara Langganan
| Properti | Tipe | Wajib | Deskripsi |
|---|---|---|---|
business_id | string | Yes | Pengidentifikasi unik untuk bisnis |
timestamp | string | Yes | Cap waktu saat event terjadi (tidak harus sama dengan saat dikirimkan) |
type | string | Yes | Jenis event. Lihat Event Types |
data | object | Yes | Muatan data utama. Lihat Data Object |
Mengubah Rencana Langganan
Anda dapat meningkatkan atau menurunkan rencana langganan menggunakan endpoint API perubahan rencana. Ini memungkinkan Anda untuk memodifikasi produk langganan, kuantitas, dan menangani proration.Change Plan API Reference
Untuk informasi rinci tentang mengubah paket langganan, silakan merujuk ke dokumentasi Change Plan API kami.
Opsi Prorata
Saat mengubah rencana langganan, Anda memiliki dua opsi untuk menangani biaya segera:1. prorated_immediately
- Menghitung jumlah prorata berdasarkan waktu yang tersisa dalam siklus penagihan saat ini
- Menagih pelanggan hanya untuk selisih antara paket lama dan baru
- Selama masa percobaan, ini akan langsung memindahkan pengguna ke paket baru dan menagih pelanggan segera
2. full_immediately
- Menagih pelanggan jumlah langganan penuh untuk paket baru
- Mengabaikan waktu tersisa atau kredit dari paket sebelumnya
- Berguna ketika Anda ingin mereset siklus penagihan atau menagih jumlah penuh tanpa memperhatikan prorata
3. difference_immediately
- Saat upgrade, pelanggan langsung dikenakan selisih antara dua jumlah paket yang berbeda.
- Misalnya, jika paket saat ini 30 Dollars dan pelanggan upgrade ke 80 Dollars, mereka langsung dikenakan $50.
- Saat downgrade, jumlah yang tidak terpakai dari paket saat ini ditambahkan sebagai kredit internal dan otomatis diterapkan ke pembaruan langganan berikutnya.
- Misalnya, jika paket saat ini 50 Dollars dan pelanggan beralih ke paket 20 Dollars, sisa $30 dikreditkan dan digunakan untuk siklus penagihan berikutnya.
Perilaku
- Saat Anda memanggil API ini, Dodo Payments segera memulai biaya berdasarkan opsi prorata yang Anda pilih
- Jika perubahan paket adalah downgrade dan Anda menggunakan
prorated_immediately, kredit akan otomatis dihitung dan ditambahkan ke saldo kredit langganan. Kredit ini khusus untuk langganan tersebut dan hanya akan digunakan untuk mengimbangi pembayaran berulang di masa depan dari langganan yang sama - Opsi
full_immediatelymelewati perhitungan kredit dan menagih jumlah paket baru secara penuh
Pemrosesan Biaya
- Biaya segera yang dimulai saat perubahan rencana biasanya selesai diproses dalam waktu kurang dari 2 menit
- Jika biaya segera ini gagal karena alasan apa pun, langganan secara otomatis ditangguhkan sampai masalah teratasi
Langganan Sesuai Permintaan
Langganan on-demand memungkinkan Anda menagih pelanggan secara fleksibel, tidak hanya berdasarkan jadwal tetap. Fitur ini tersedia untuk semua akun.
on_demand dalam tubuh permintaan Anda. Ini memungkinkan Anda mengotorisasi metode pembayaran tanpa biaya langsung, atau menetapkan harga awal kustom.
Untuk mengenakan biaya langganan sesuai permintaan:
Untuk biaya berikutnya, gunakan endpoint POST /subscriptions/charge dan tentukan jumlah yang akan dikenakan kepada pelanggan untuk transaksi tersebut.
Untuk panduan lengkap langkah demi langkah—termasuk contoh permintaan/respons, kebijakan percobaan aman, dan penanganan webhook—lihat On-Demand Subscriptions Guide.