Terima notifikasi waktu nyata saat peristiwa terjadi di Dodo Payments. Otomatiskan alur kerja dan jaga sistem Anda tetap sinkron dengan pengiriman peristiwa instan.
Webhooks memberikan notifikasi waktu nyata saat peristiwa tertentu terjadi di akun Dodo Payments Anda. Gunakan webhooks untuk mengotomatiskan alur kerja, memperbarui basis data Anda, mengirim notifikasi, dan menjaga sistem Anda tetap sinkron.
Implementasi webhook kami mengikuti spesifikasi Standard Webhooks, memastikan kompatibilitas dengan praktik terbaik industri dan pustaka webhook yang ada.
Navigasikan ke Dasbor DodoPayments dan pergi ke Settings > Webhooks.
2
Buat Endpoint Webhook
Klik pada Add Webhook untuk membuat endpoint webhook baru.
3
Tambahkan URL Endpoint
Masukkan URL tempat Anda ingin menerima peristiwa webhook.
4
Pilih Peristiwa untuk Diterima
Pilih peristiwa spesifik yang harus didengarkan oleh endpoint webhook Anda dengan memilihnya dari daftar peristiwa.
Hanya peristiwa yang dipilih yang akan memicu webhook ke endpoint Anda, membantu Anda menghindari lalu lintas dan pemrosesan yang tidak perlu.
5
Dapatkan Kunci Rahasia
Dapatkan Secret Key webhook Anda dari halaman pengaturan. Anda akan menggunakan ini untuk memverifikasi keaslian webhook yang diterima.
Jaga kunci rahasia webhook Anda dengan aman dan jangan pernah mengeksposnya dalam kode sisi klien atau repositori publik.
6
Putar Rahasia (Opsional)
Jika perlu, Anda dapat memutar rahasia webhook Anda untuk meningkatkan keamanan. Klik tombol Putar Rahasia di pengaturan webhook Anda.
Memutar rahasia akan mengakhiri dan menggantinya dengan yang baru. Rahasia lama hanya akan berlaku selama 24 jam ke depan. Setelah itu, mencoba memverifikasi dengan rahasia lama akan gagal.
Gunakan rotasi rahasia secara berkala atau segera jika Anda mencurigai rahasia Anda saat ini telah dikompromikan.
Antarmuka menampilkan semua peristiwa webhook yang tersedia yang diorganisir dalam struktur hierarkis. Peristiwa dikelompokkan berdasarkan kategori (misalnya, dispute, payment, subscription).
2
Cari dan Saring
Gunakan bilah pencarian untuk dengan cepat menemukan peristiwa tertentu dengan mengetikkan nama peristiwa atau kata kunci.
3
Pilih Peristiwa
Centang kotak di sebelah peristiwa yang ingin Anda terima. Anda dapat:
Memilih sub-peristiwa individu (misalnya, dispute.accepted, dispute.challenged)
Memilih peristiwa induk untuk menerima semua sub-peristiwa terkait
Menggabungkan dan mencocokkan peristiwa spesifik berdasarkan kebutuhan Anda
4
Tinjau Detail Peristiwa
Arahkan kursor ke ikon informasi (ⓘ) di sebelah setiap peristiwa untuk melihat deskripsi tentang kapan peristiwa tersebut dipicu.
5
Simpan Konfigurasi
Klik Simpan untuk menerapkan perubahan Anda, atau Batal untuk membatalkan modifikasi.
Jika Anda membatalkan semua peristiwa, endpoint webhook Anda tidak akan menerima notifikasi apa pun. Pastikan untuk memilih setidaknya peristiwa yang dibutuhkan aplikasi Anda untuk berfungsi dengan baik.
Jika pengiriman webhook gagal, Dodo Payments secara otomatis mencoba ulang dengan backoff eksponensial untuk mencegah sistem Anda kewalahan.
Upaya
Penundaan
Deskripsi
1
Segera
Pengulangan pertama terjadi segera
2
5 detik
Upaya kedua setelah penundaan singkat
3
5 menit
Upaya ketiga dengan backoff yang meningkat
4
30 menit
Upaya keempat melanjutkan backoff
5
2 jam
Upaya kelima dengan penundaan yang diperpanjang
6
5 jam
Upaya keenam dengan penundaan yang lebih lama
7
10 jam
Upaya ketujuh dengan penundaan maksimum
8
10 jam
Upaya terakhir - webhook ditandai sebagai gagal jika tidak berhasil
Maksimum 8 upaya pengulangan per peristiwa webhook. Misalnya, jika sebuah webhook gagal tiga kali sebelum berhasil, total waktu pengiriman adalah sekitar 35 menit dan 5 detik dari upaya pertama.
Gunakan dasbor Dodo Payments untuk mencoba ulang pesan individu secara manual atau memulihkan semua pesan yang gagal secara massal kapan saja.
Setiap peristiwa webhook menyertakan header webhook-id yang unik. Gunakan pengidentifikasi ini untuk menerapkan idempotensi dan mencegah pemrosesan duplikat.
Salin
// Example: Storing webhook IDs to prevent duplicate processingconst processedWebhooks = new Set();app.post('/webhook', (req, res) => { const webhookId = req.headers['webhook-id']; if (processedWebhooks.has(webhookId)) { return res.status(200).json({ received: true }); } processedWebhooks.add(webhookId); // Process the webhook...});
Selalu terapkan pemeriksaan idempotensi. Karena pengulangan, Anda mungkin menerima peristiwa yang sama beberapa kali.
Peristiwa webhook mungkin tiba tidak teratur karena pengulangan atau kondisi jaringan. Rancang sistem Anda untuk menangani peristiwa dalam urutan apa pun.
Anda akan menerima payload terbaru pada saat pengiriman, terlepas dari kapan peristiwa webhook awalnya dipancarkan.
Setiap permintaan webhook menyertakan header webhook-signature, tanda tangan HMAC SHA256 dari payload webhook dan timestamp, ditandatangani dengan kunci rahasia Anda.
Anda dapat menguji integrasi webhook Anda langsung dari dasbor Dodo Payments untuk memastikan endpoint Anda berfungsi dengan benar sebelum diluncurkan.
Berikut adalah implementasi lengkap Express.js yang menunjukkan verifikasi dan penanganan webhook:
Salin
import { Webhook } from "standardwebhooks";import express from "express";const app = express();app.use(express.json());const webhook = new Webhook(process.env.DODO_WEBHOOK_SECRET);app.post('/webhook/dodo-payments', async (req, res) => { try { // Extract webhook headers const webhookHeaders = { "webhook-id": req.headers["webhook-id"] as string, "webhook-signature": req.headers["webhook-signature"] as string, "webhook-timestamp": req.headers["webhook-timestamp"] as string, }; // Verify the webhook signature const payload = JSON.stringify(req.body); await webhook.verify(payload, webhookHeaders); // Acknowledge receipt immediately res.status(200).json({ received: true }); // Process webhook asynchronously processWebhookAsync(req.body).catch(console.error); } catch (error) { console.error('Webhook verification failed:', error); res.status(400).json({ error: 'Invalid signature' }); }});async function processWebhookAsync(data: any) { // Handle the webhook event based on type switch (data.type) { case 'payment.succeeded': await handlePaymentSucceeded(data); break; case 'subscription.created': await handleSubscriptionCreated(data); break; // Add more event handlers... }}
Uji penangan webhook Anda secara menyeluruh menggunakan antarmuka pengujian dasbor sebelum memproses peristiwa produksi. Ini membantu mengidentifikasi dan memperbaiki masalah lebih awal.
Kontrol laju di mana peristiwa webhook dikirim ke endpoint Anda untuk mencegah sistem Anda kewalahan.
1
Akses Pengaturan Pembatasan Laju
Di tab Lanjutan, temukan bagian “Pembatasan Laju (throttling)”.
2
Konfigurasi Pembatasan Laju
Klik tombol Edit untuk memodifikasi pengaturan pembatasan laju.
Secara default, webhook memiliki “Tidak ada pembatasan laju” yang diterapkan, yang berarti peristiwa dikirim segera setelah terjadi.
3
Tetapkan Batas
Konfigurasikan batas laju yang Anda inginkan untuk mengontrol frekuensi pengiriman webhook dan mencegah kelebihan beban sistem.
Gunakan pembatasan laju ketika penangan webhook Anda membutuhkan waktu untuk memproses peristiwa atau ketika Anda ingin menggabungkan beberapa peristiwa bersama-sama.
Tambahkan header HTTP kustom ke semua permintaan webhook yang dikirim ke endpoint Anda. Ini berguna untuk otentikasi, pengalihan, atau menambahkan metadata ke permintaan webhook Anda.
1
Tambahkan Header Kustom
Di bagian “Header Kustom”, masukkan Kunci dan Nilai untuk header kustom Anda.
2
Tambahkan Beberapa Header
Klik tombol + untuk menambahkan header kustom tambahan sesuai kebutuhan.
3
Simpan Konfigurasi
Header kustom Anda akan disertakan dalam semua permintaan webhook ke endpoint ini.
Transformasi memungkinkan Anda untuk memodifikasi payload webhook dan mengarahkannya ke URL yang berbeda. Fitur kuat ini memungkinkan Anda untuk:
Memodifikasi struktur payload sebelum pemrosesan
Mengarahkan webhook ke endpoint yang berbeda berdasarkan konten
Menambahkan atau menghapus bidang dari payload
Mengubah format data
1
Aktifkan Transformasi
Alihkan sakelar Diaktifkan untuk mengaktifkan fitur transformasi.
2
Konfigurasi Transformasi
Klik Edit transformasi untuk mendefinisikan aturan transformasi Anda.
Anda dapat menggunakan JavaScript untuk mentransformasi payload webhook dan menentukan URL target yang berbeda.
3
Uji Transformasi
Gunakan antarmuka pengujian untuk memverifikasi bahwa transformasi Anda berfungsi dengan benar sebelum diluncurkan.
Transformasi dapat secara signifikan mempengaruhi kinerja pengiriman webhook. Uji secara menyeluruh dan jaga logika transformasi tetap sederhana dan efisien.
Tab Log memberikan visibilitas komprehensif ke dalam status pengiriman webhook Anda, memungkinkan Anda untuk memantau, melakukan debug, dan mengelola peristiwa webhook secara efektif.
Tetap terinformasi tentang kesehatan webhook Anda dengan notifikasi email otomatis. Ketika pengiriman webhook mulai gagal atau endpoint Anda berhenti merespons, Anda akan menerima pemberitahuan email sehingga Anda dapat dengan cepat menangani masalah dan menjaga integrasi Anda tetap berjalan lancar.
Pergi ke Dasbor Dodo Payments Anda dan navigasikan ke Dasbor → Webhooks → Pemberitahuan.
2
Aktifkan Notifikasi Email
Alihkan Notifikasi email untuk mulai menerima pemberitahuan tentang masalah pengiriman webhook.
3
Konfigurasi Alamat Email
Masukkan alamat email tempat Anda ingin menerima pemberitahuan webhook. Kami akan mengirimkan notifikasi ke alamat ini ketika peristiwa tertentu terjadi dengan pengaturan webhook Anda, seperti masalah pengiriman yang mungkin mempengaruhi integrasi Anda.
Aktifkan pemberitahuan email untuk menangkap masalah pengiriman webhook lebih awal dan menjaga integrasi yang dapat diandalkan. Anda akan diberitahu ketika pengiriman gagal atau endpoint Anda menjadi tidak responsif.
Siap untuk menerapkan penangan webhook Anda ke produksi? Kami menyediakan panduan spesifik platform untuk membantu Anda menerapkan webhook ke penyedia cloud populer dengan praktik terbaik untuk setiap platform.