Pendahuluan
Jalankan skrip atau flow Windmill setiap kali event Dodo Payments terjadi. Gunakan untuk memperbarui database, menyinkronkan record ke sistem lain, mengirim notifikasi, atau menjalankan logika bisnis Anda sendiri dalam kode.Konektor Windmill mengirim setiap event ke URL webhook skrip atau flow Windmill. Anda memerlukan skrip atau flow yang telah di-deploy, token Windmill yang dapat menjalankannya, dan akses ke Developer → Webhooks di dashboard Dodo Payments.
Memulai
1
Open the Webhook Section
Di dashboard Dodo Payments, buka Developer → Webhooks dan klik Add endpoint.

2
Select Windmill
Di Integration, pilih Windmill. Dashboard memuat kode transformasi Windmill dan menampilkan langkah penyiapan di panel How to connect Windmill.
3
Copy the Windmill Webhook URL
Di Windmill, buka skrip atau flow yang akan menangani event. Pada tab Triggers, buka Webhooks lalu salin URL webhook asinkron (UUID/Async). Kemudian buat token khusus webhook untuk skrip atau flow tersebut dan salin tokennya. Token ini hanya dapat menjalankan skrip atau flow tersebut.
4
Paste Webhook URL
Tempel URL webhook Windmill ke Endpoint URL. URL harus menggunakan HTTPS, jadi instance Windmill yang di-host sendiri memerlukan alamat HTTPS publik. Konektor Windmill tidak memiliki field API key, jadi Anda menambahkan token setelah membuat endpoint.
5
Select Events
Subscribed events mencantumkan event yang didukung konektor Windmill. Pertahankan hanya event yang ditangani skrip atau flow Anda.
6
Configure Transformation
Di bawah Transformation code, edit handler agar key tingkat teratas payload sesuai dengan input skrip atau flow Anda. Mulai dari contoh.
7
Test & Create
Di bawah Test this code, pilih jenis event lalu klik Simulate untuk melihat pratinjau payload. Kemudian klik Create endpoint.
8
Add the Windmill Token
Segera setelah membuat endpoint, buka tab Advanced. Di bawah Custom headers, klik Add header. Masukkan
Authorization sebagai nama, lalu Bearer, spasi, dan token Anda sebagai nilainya. Kemudian klik Save. Sebelum header disimpan, Windmill menolak delivery, dan Dodo Payments mencobanya kembali sesuai jadwal retry.Windmill juga menerima token dalam parameter query token di akhir URL. Windmill merekomendasikan header karena siapa pun yang dapat melihat URL dengan token dapat menggunakan token tersebut.9
Done
Subscribed events kini memulai run skrip atau flow Anda. Untuk mengirim event pengujian, buka tab Testing endpoint, pilih jenis event, lalu klik Send example. Di Windmill, run tersebut muncul di halaman Runs dengan trigger
Webhook.Contoh Kode Transformasi
Setiap handler menggantiwebhook.payload dengan objek datar dan mempertahankan webhook.url, yaitu URL webhook Windmill Anda. Windmill meneruskan setiap key tingkat teratas ke input skrip atau flow dengan nama yang sama, sehingga skrip untuk contoh pertama mendeklarasikan input seperti event_type, payment_id, dan amount. Jumlah Dodo Payments menggunakan unit mata uang terkecil, sehingga contoh-contoh tersebut membaginya dengan 100 dan mengirim hasilnya sebagai string, seperti "25.00". Untuk mata uang tanpa desimal seperti JPY dan KRW, gunakan jumlah tersebut apa adanya.
Payload Workflow Dasar
Kirim detail pembayaran yang berhasil:basic_workflow.js
Handler Workflow Subscription
Kirim eventsubscription_started atau subscription_cancelled saat subscription menjadi aktif atau dibatalkan:
subscription_workflow.js
Handler Workflow Dispute
Kirim setiap event dispute, denganurgent ditetapkan ke true saat dispute dibuka:
dispute_workflow.js
Kasus Penggunaan Windmill yang Umum
Database Operations
Database Operations
- Perbarui record pelanggan di PostgreSQL atau MySQL
- Catat event pembayaran ke data warehouse
- Sinkronkan data ke sistem eksternal
- Perbarui tingkat inventaris
- Lacak metrik analitik
Business Logic
Business Logic
- Hitung metrik pendapatan
- Proses refund dan penyesuaian
- Tangani perubahan siklus hidup subscription
- Buat laporan dan ekspor
- Validasi data pembayaran
External Integrations
External Integrations
- Kirim data ke platform analitik
- Perbarui sistem CRM
- Mulai kampanye email
- Buat event kalender
- Kirim notifikasi SMS
Tips
- Beri nama key payload sesuai dengan input skrip atau flow Anda karena Windmill memetakan setiap key tingkat teratas ke input dengan nama yang sama.
- Gunakan nama field yang sama di berbagai event agar satu skrip dapat menangani beberapa jenis event.
- Sertakan jenis event dan
timestamp. Event dapat tiba tidak berurutan, dantimestampmemungkinkan skrip Anda mengurutkannya. - Gunakan URL webhook asinkron. URL sinkron menunggu hingga run selesai, dan run yang melebihi timeout delivery dianggap sebagai delivery yang gagal dan akan dicoba kembali oleh Dodo Payments.
- Pastikan skrip Anda aman dijalankan dua kali untuk event yang sama karena retry dapat mengirimkan event lebih dari sekali.
- Untuk melewati event dalam kode, tetapkan
webhook.cancel = truesebelum mengembalikan webhook. Log mencatat delivery yang dilewati sebagai berhasil. - Gunakan error handlers Windmill untuk mendapatkan notifikasi saat run gagal.
Pemecahan Masalah
Workflows Not Triggering
Workflows Not Triggering
- Pastikan Endpoint URL adalah URL webhook skrip atau flow Anda dan endpoint tersebut diaktifkan.
- Pastikan header
AuthorizationberisiBearerdan token yang valid. Token khusus webhook hanya menjalankan skrip atau flow miliknya sendiri. - Pastikan skrip atau flow telah di-deploy. Webhook menjalankan versi terbaru yang di-deploy, bukan draft.
- Buka tab Logs di Developer → Webhooks untuk melihat respons Windmill terhadap setiap delivery.
Data Processing Issues
Data Processing Issues
- Pastikan key tingkat teratas payload sesuai dengan input skrip atau flow berdasarkan namanya.
- Pastikan setiap nilai sesuai dengan tipe inputnya. Contoh-contoh tersebut mengirim jumlah sebagai string.
- Periksa run di halaman Runs Windmill, difilter berdasarkan trigger
Webhook. URL asinkron merespons segera setelah Windmill mengantrekan run, sehingga log Dodo Payments menampilkan delivery yang berhasil meskipun run gagal. - Jalankan skrip atau flow di Windmill dengan payload dari Simulate.