Lewati ke konten utama

Webhooks

Webhooks​

Webhook mengirim notifikasi POST ke URL Anda setiap kali status order berubah. Daftarkan endpoint di halaman Developers › Webhooks.

Daftar Event​

EventKeterangan
order.createdOrder berhasil dibuat.
order.shippingPaket dijemput dan dalam pengiriman.
order.deliveredPaket berhasil diterima.
order.problemTerjadi masalah pengiriman (mis. gagal antar).
order.returnedPaket dikembalikan ke pengirim.
order.cancelledOrder dibatalkan.
order.failedOrder gagal diproses.

Payload​

{
"event": "order.delivered",
"delivery_id": "whd_5c2a",
"created_at": "2026-08-09T11:20:00+07:00",
"data": {
"id": "ord_3a9f",
"resi": "TRK00012345",
"no_order": "INV-20260808-0001",
"status": "delivered",
"courier_code": "ninja",
"courier_service": "Standard",
"charged_amount": 14000,
"is_cod": false,
"cod_amount": 0,
"recipient_name": "Siti Rahma",
"recipient_phone": "08120000000",
"product_name": "Kaos Katun",
"created_at": "2026-08-07T14:03:00+07:00"
}
}
HeaderTipeKeterangan
X-Kurir-SignaturestringHMAC SHA-256 dari {timestamp}.{raw body} memakai signing secret webhook.
X-Kurir-TimestampstringUnix timestamp saat webhook dikirim.
X-Kurir-EventstringNama event, mis. order.delivered.
X-Kurir-DeliverystringID unik pengiriman webhook (untuk idempotensi).

Verifikasi Signature​

Hitung ulang HMAC dari timestamp + raw body dan bandingkan dengan header (gunakan perbandingan konstan-waktu).

const crypto = require('crypto');

function verify(rawBody, headers, secret) {
const ts = headers['x-kurir-timestamp'];
const expected = crypto
.createHmac('sha256', secret)
.update(`${ts}.${rawBody}`)
.digest('hex');
const got = headers['x-kurir-signature'];
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(got));
}

Pengiriman Ulang & Auto-Disable​

  • Balas dengan 2xx secepatnya untuk menandai webhook diterima.
  • Response non-2xx atau timeout akan dicoba ulang dengan backoff bertahap.
  • Endpoint yang terus gagal dapat dinonaktifkan otomatis; aktifkan kembali di halaman Webhooks.
  • Gunakan X-Kurir-Delivery sebagai kunci idempotensi agar tidak memproses event ganda.
info

Kelola URL, secret, dan lihat riwayat pengiriman di Developers › Webhooks.

Apakah halaman ini membantu?