Events Webhook
Berikut adalah daftar lengkap semua event (kejadian) yang bisa ter-trigger dan payload JSON yang akan Anda terima via Webhook.
Daftar Event Tersedia
| Event | Kapan Triggered |
|---|---|
payment.paid | Pembayaran sukses dan uang berhasil diterima dari pelanggan. |
payment.failed | Transaksi gagal di sisi provider. |
payment.expired | Tagihan tidak dibayar hingga melewati batas waktu (expiry). |
payment.cancelled | Transaksi dibatalkan secara manual melalui API /cancel. |
payment.challenged | Transaksi dalam status dispute/di-review oleh provider (Fraud Detection). |
payment.refund_initiated | Proses refund dimulai. |
payment.refund_completed | Refund penuh selesai dikirim kembali ke pelanggan. |
payment.partially_refunded | Sebagian nominal (tidak full) berhasil direfund. |
Catatan: Event
payment.createdTIDAK diforward via webhook.
Struktur Envelope Universal
Setiap event memiliki struktur utama (envelope) yang sama. Yang membedakannya adalah isi di dalam field data.
json
{
"event_id": "11111111-2222-3333-4444-555555555555",
"event_type": "payment.paid",
"version": 1,
"occurred_at": "2026-07-21T11:05:32Z",
"tenant_id": "b6a3b2b8-f09d-4767-8fa0-68153c30a91f",
"data": { ... } // Payload aslinya ada di sini
}Contoh Event data
Field data di bawah ini merupakan standar Unified Callback Payload milik Gerbang Pay, terlepas dari provider (Midtrans/Winpay) apa yang merespons.
1. payment.paid
Paling sering digunakan. Ini sinyal bahwa Anda sudah bisa mengirimkan barang/jasa ke pelanggan.
json
{
"event_id": "...",
"event_type": "payment.paid",
...
"data": {
"provider_order_id": "WP-998877", // ID di sistem internal provider
"status": "paid", // Status canonical dari Gerbang Pay
"amount_paid": 10000000, // Jumlah dana yang masuk
"paid_at": "2026-07-21T11:05:32Z", // Waktu pembayaran
"raw_payload": { ... } // Payload asli/mentah dari callback provider (bisa bervariasi)
}
}2. payment.expired
Dikirim ketika tagihan melewati batas waktu.
json
{
"event_id": "...",
"event_type": "payment.expired",
...
"data": {
"provider_order_id": "WP-998877",
"status": "expired",
"amount_paid": 0,
"paid_at": null,
"raw_payload": { ... }
}
}3. payment.failed
Dikirim ketika transaksi gagal diproses oleh bank/provider.
json
{
"event_id": "...",
"event_type": "payment.failed",
...
"data": {
"provider_order_id": "WP-998877",
"status": "failed",
"amount_paid": 0,
"paid_at": null,
"raw_payload": { ... }
}
}4. payment.cancelled
Dikirim ketika sistem (atau Anda sendiri) membatalkan transaksi yang masih berstatus pending.
json
{
"event_id": "...",
"event_type": "payment.cancelled",
...
"data": {
"provider_order_id": "WP-998877",
"status": "cancelled",
"amount_paid": 0,
"paid_at": null,
"raw_payload": { ... }
}
}