Konfirmasi Order Otomatis dengan Webhook Pembayaran
Cara kerja webhook pembayaran dengan bahasa sederhana, beda dengan cek transfer manual, cara verifikasi signature, retry, idempotensi, dan contoh alurnya.
Jawaban singkat
Webhook pembayaran adalah pesan otomatis dari payment gateway ke server tokomu setiap kali status pembayaran berubah. Dengan webhook, pesanan langsung berstatus lunas tanpa cek mutasi manual. Kuncinya: verifikasi keaslian pesan, siap menerima pesan berulang, dan cek ulang status ke gateway.
Daftar isi
- Bagaimana webhook menggantikan cek transfer manual?
- Empat hal teknis yang wajib benar
- Verifikasi bahwa pesan benar dari gateway
- Cek ulang status ke gateway
- Siap menerima pesan berulang (retry)
- Idempotensi: proses sekali saja
- Contoh alur otomatis sederhana
- Kapan cukup manual, kapan perlu webhook
- Pertanyaan yang sering diajukan
Webhook pembayaran adalah pesan yang dikirim payment gateway ke alamat milikmu (biasanya sebuah URL di server toko) setiap kali status pembayaran berubah: menunggu, lunas, kedaluwarsa, atau dibatalkan. Isinya data seperti nomor pesanan, nominal, dan status terbaru. Server tokomu membaca pesan itu lalu memperbarui pesanan tanpa campur tangan manusia.
Yang dipertaruhkan cukup besar. Webhook yang diterima tanpa verifikasi bisa dipalsukan, sehingga pesanan yang belum dibayar ikut terkirim. Webhook yang diproses dua kali bisa membuat pembeli menerima produk ganda atau stok berkurang dua kali. Dan webhook yang gagal diterima diam-diam membuat pembeli yang sudah bayar menunggu tanpa kabar.
Bagaimana webhook menggantikan cek transfer manual?
Pada transfer manual, alurnya bergantung pada manusia: pembeli transfer, mengirim bukti, kamu membuka mutasi, mencocokkan nominal, lalu menandai pesanan lunas. Setiap langkah bisa terlambat atau salah.
Dengan payment gateway dan webhook, pembeli membayar lewat virtual account, QRIS, atau e-wallet yang terhubung ke tagihan tertentu. Begitu gateway menerima konfirmasi dari bank atau penerbit, ia langsung mengirim webhook ke servermu. Pesanan berubah status, email atau WhatsApp konfirmasi terkirim, dan proses pengiriman dimulai, sering kali dalam hitungan detik.
| Aspek | Cek transfer manual | Webhook dari payment gateway |
|---|---|---|
| Sumber kepastian | Bukti dari pembeli + mutasi rekening | Data dari gateway yang terhubung ke bank atau penerbit |
| Kecepatan | Tergantung kapan penjual mengecek | Otomatis saat status berubah |
| Risiko bukti palsu | Ada | Tertutup bila webhook diverifikasi |
| Pencocokan nominal | Manual, rawan salah | Otomatis per nomor pesanan |
| Di luar jam kerja | Pesanan menunggu | Tetap diproses |
| Biaya | Tanpa biaya gateway | Ada biaya per transaksi |
| Kebutuhan teknis | Hampir tidak ada | Server atau alat otomasi yang bisa menerima webhook |
Biaya per transaksi tiap gateway dibandingkan di Midtrans vs Xendit vs Duitku.
Empat hal teknis yang wajib benar
Verifikasi bahwa pesan benar dari gateway
URL webhook pada dasarnya terbuka di internet. Siapa pun yang tahu alamatnya bisa mengirim pesan palsu yang berbunyi "pesanan 123 sudah lunas". Karena itu, payment gateway menyediakan cara verifikasi, misalnya token rahasia di header atau tanda tangan (signature) yang dihitung dari isi pesan dan kunci rahasia milikmu.
Server tokomu harus menghitung ulang atau mencocokkan nilai itu, dan menolak pesan yang tidak cocok. Detail cara hitungnya berbeda per gateway, jadi ikuti dokumentasi resmi penyedia yang kamu pakai.
Cek ulang status ke gateway
Lapisan pengaman tambahan yang sederhana: setelah menerima webhook, panggil API gateway untuk menanyakan status pesanan tersebut. Proses pesanan hanya bila jawaban API juga menyatakan lunas. Cara ini juga menjaga dari webhook yang datang tidak berurutan, misalnya status "menunggu" tiba setelah status "lunas".
Siap menerima pesan berulang (retry)
Gateway umumnya mengirim ulang webhook bila servermu tidak membalas dengan sukses, misalnya karena sedang lambat atau mati sebentar. Artinya, satu pembayaran bisa memicu beberapa webhook yang sama.
Balas webhook dengan cepat, lalu kerjakan proses yang berat (kirim email, buat lisensi, update stok) di belakang. Kalau servermu memproses semuanya dulu sebelum membalas, gateway bisa menganggapnya gagal dan mengirim ulang.
Idempotensi: proses sekali saja
Idempotensi berarti pesan yang sama diproses berapa kali pun, hasilnya tetap satu. Caranya, simpan nomor pesanan atau ID transaksi yang sudah diproses. Saat webhook datang, cek dulu: kalau pesanan itu sudah berstatus lunas, cukup balas sukses tanpa menjalankan proses lagi.
Contoh alur otomatis sederhana
Bila tokomu tidak dibangun dengan kode khusus, alat otomasi seperti n8n bisa menjadi penerima webhook. n8n punya node Webhook yang menghasilkan URL untuk didaftarkan di dashboard payment gateway. Alurnya kira-kira begini:
- Webhook masuk dari payment gateway.
- Verifikasi token atau signature. Bila tidak cocok, hentikan.
- Cek ulang status lewat API gateway.
- Cek database atau spreadsheet pesanan: apakah sudah pernah diproses? Apakah nominalnya cocok?
- Perbarui status pesanan menjadi lunas.
- Kirim konfirmasi ke pembeli lewat email atau WhatsApp, misalnya lewat WhatsApp Business Platform resmi atau alat self-hosted seperti WAHA. WAHA bukan API resmi Meta, jadi pahami risikonya terhadap nomor yang kamu pakai.
- Catat log setiap webhook, termasuk yang ditolak, untuk penelusuran.
Untuk produk digital, langkah 6 bisa sekaligus mengirim link unduhan atau kunci lisensi. Rancangan lengkapnya ada di kirim produk digital otomatis.
Kapan cukup manual, kapan perlu webhook
Transfer manual masih masuk akal ketika pesanan hanya beberapa per hari, pembeli kebanyakan pelanggan tetap yang kamu kenal, dan kamu tidak keberatan mengecek mutasi beberapa kali sehari. Biayanya nol dan tidak ada yang perlu dipasang.
Webhook mulai layak ketika pesanan datang di luar jam kerjamu, ketika kamu menjual produk digital yang seharusnya terkirim seketika, atau ketika pernah ada bukti transfer palsu yang lolos. Biaya per transaksi gateway sebanding dengan waktu yang tidak lagi kamu habiskan untuk mencocokkan mutasi dan dengan risiko penipuan yang tertutup.
Di antara keduanya, ada jalan tengah: memakai tautan pembayaran dari gateway tanpa integrasi penuh, lalu mengandalkan email notifikasi dari gateway. Ini lebih baik daripada bukti transfer, tetapi belum otomatis sampai ke pengiriman produk.
Pertanyaan yang sering diajukan
Apa beda webhook dan callback?
Dalam konteks payment gateway, keduanya sering dipakai untuk hal yang sama: notifikasi dari gateway ke servermu saat status berubah. Sebagian penyedia juga memakai istilah "notification URL" atau "HTTP notification".
Bagaimana menguji webhook sebelum toko berjalan?
Gunakan mode sandbox atau test mode dari payment gateway. Buat transaksi uji, lalu pastikan servermu menerima, memverifikasi, dan memproses webhook dengan benar, termasuk saat webhook dikirim ulang.
Apakah URL webhook harus HTTPS?
Sangat disarankan. HTTPS menjaga isi webhook tidak bisa dibaca atau diubah di perjalanan. Cek juga dokumentasi gatewaymu soal syarat URL notifikasi yang diterima.
Bagaimana kalau server saya mati saat pembeli membayar?
Gateway biasanya mengirim ulang webhook dalam beberapa waktu. Sebagai cadangan, buat tugas berkala yang mengecek status pesanan yang masih menunggu lewat API gateway, sehingga pesanan yang terlewat tetap terproses.


