Skip to main content

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.
Add endpoint dialog with Windmill selected in the Integration dropdown and the How to connect Windmill steps
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 mengganti webhook.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 event subscription_started atau subscription_cancelled saat subscription menjadi aktif atau dibatalkan:
subscription_workflow.js

Handler Workflow Dispute

Kirim setiap event dispute, dengan urgent ditetapkan ke true saat dispute dibuka:
dispute_workflow.js

Kasus Penggunaan Windmill yang Umum

  • Perbarui record pelanggan di PostgreSQL atau MySQL
  • Catat event pembayaran ke data warehouse
  • Sinkronkan data ke sistem eksternal
  • Perbarui tingkat inventaris
  • Lacak metrik analitik
  • Hitung metrik pendapatan
  • Proses refund dan penyesuaian
  • Tangani perubahan siklus hidup subscription
  • Buat laporan dan ekspor
  • Validasi data pembayaran
  • 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, dan timestamp memungkinkan 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 = true sebelum mengembalikan webhook. Log mencatat delivery yang dilewati sebagai berhasil.
  • Gunakan error handlers Windmill untuk mendapatkan notifikasi saat run gagal.

Pemecahan Masalah

  • Pastikan Endpoint URL adalah URL webhook skrip atau flow Anda dan endpoint tersebut diaktifkan.
  • Pastikan header Authorization berisi Bearer dan 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.
  • 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.
Terakhir diubah pada 26 September 2026