Lompat ke konten

Cara Kerja Webhook

Tanpa webhook, satu-satunya cara mengetahui payment sudah selesai adalah polling GET /v1/payments/{paymentID} berulang-ulang. Webhook membalik ini: Baiyar membuat HTTP POST request ke URL yang Anda konfigurasi, membawa hasilnya, tepat saat payment mencapai status akhir. Server Anda cukup punya endpoint yang menerima request itu — tidak perlu loop, tidak ada request yang terbuang saat payment masih pending.

  1. Sebuah transaksi mencapai status akhirsucceeded, failed, atau expired. (pending dan processing tidak pernah memicu webhook; lihat Status Pembayaran untuk arti tiap status.)
  2. Baiyar mengantre satu event untuk transaksi tersebut — payment.paid untuk succeeded, payment.failed untuk failed atau expired.
  3. Sebuah background worker mengambil event yang diantrekan kira-kira setiap 5 detik, menandatangani payload-nya, dan mengirimkannya ke URL yang Anda konfigurasi sebagai HTTP POST dengan body Content-Type: application/json.
  4. Endpoint Anda merespons. Status 2xx menandai event terkirim. Selain itu — termasuk timeout — dianggap gagal dan dicoba ulang; lihat Menangani Pengiriman Webhook.

Artinya pengiriman bersifat asinkron dan eventually-consistent, bukan instan — biasanya tiba dalam beberapa detik setelah payment selesai, bukan di milidetik yang sama persis.

Mekanisme antrean-tanda tangan-retry yang sama juga berlaku untuk perubahan project dan API key — lihat event Project dan API Key untuk bentuk payload-nya.

Payload event adalah ringkasan (id, referensi, jumlah, status, waktu) — bukan objek payment lengkap. Kalau butuh sesuatu yang tidak ada di payload (rincian fee, info pelanggan, instruksi pembayaran), panggil GET /v1/payments/{data.id} dengan API key Anda menggunakan ID dari event tersebut. Lihat payment.paid atau payment.failed untuk bentuk payload persisnya.