Skip to main content

Daftar Events Webhook

IsiKuota mengirim 4 tipe event melalui webhook setiap kali status transaksi berubah.

Ringkasan Events

EventKapan Dikirim
order.createdTransaksi baru berhasil dibuat
order.successTransaksi selesai berhasil
order.failedTransaksi gagal
order.sn_receivedSerial number diterima dari provider

order.created

Dikirim saat transaksi baru berhasil dibuat di sistem IsiKuota.

{
"event": "order.created",
"timestamp": "2025-01-15T14:29:55+07:00",
"data": {
"order_id": 12345,
"ref_id": "ORDER-2025-001",
"status": "Pending",
"product_code": "TSEL10",
"product_name": "Telkomsel 10.000",
"customer_number": "081234567890",
"price": 11500,
"sn": "",
"message": "Transaksi sedang diproses",
"created_at": "2025-01-15T14:29:55+07:00",
"updated_at": "2025-01-15T14:29:55+07:00"
}
}

order.success

Dikirim saat transaksi berhasil diproses oleh provider.

{
"event": "order.success",
"timestamp": "2025-01-15T14:30:00+07:00",
"data": {
"order_id": 12345,
"ref_id": "ORDER-2025-001",
"status": "Success",
"product_code": "TSEL10",
"product_name": "Telkomsel 10.000",
"customer_number": "081234567890",
"price": 11500,
"sn": "1234567890123456",
"message": "Transaksi berhasil",
"created_at": "2025-01-15T14:29:55+07:00",
"updated_at": "2025-01-15T14:30:00+07:00"
}
}
tip

Pada event ini, field sn sudah terisi dengan serial number produk. Simpan dan tampilkan ke user.


order.failed

Dikirim saat transaksi gagal. Saldo dikembalikan otomatis.

{
"event": "order.failed",
"timestamp": "2025-01-15T14:31:00+07:00",
"data": {
"order_id": 12346,
"ref_id": "ORDER-2025-002",
"status": "Failed",
"product_code": "TSEL10",
"product_name": "Telkomsel 10.000",
"customer_number": "081234567890",
"price": 11500,
"sn": "",
"message": "Transaksi gagal - nomor tidak aktif",
"created_at": "2025-01-15T14:30:50+07:00",
"updated_at": "2025-01-15T14:31:00+07:00"
}
}
info

Field message berisi alasan kegagalan dari provider. Tampilkan ke user atau log untuk investigasi.


order.sn_received

Dikirim saat serial number diterima dari provider (biasanya bersamaan dengan order.success, tapi bisa terpisah pada produk tertentu).

{
"event": "order.sn_received",
"timestamp": "2025-01-15T14:30:05+07:00",
"data": {
"order_id": 12345,
"ref_id": "ORDER-2025-001",
"status": "Success",
"product_code": "TSEL10",
"product_name": "Telkomsel 10.000",
"customer_number": "081234567890",
"price": 11500,
"sn": "1234567890123456",
"message": "Serial number diterima",
"created_at": "2025-01-15T14:29:55+07:00",
"updated_at": "2025-01-15T14:30:05+07:00"
}
}

Field Data Payload

FieldTipeKeterangan
eventstringTipe event
timestampstringWaktu event (ISO 8601, +07:00)
data.order_idintegerID transaksi internal IsiKuota
data.ref_idstringID referensi dari sistem Anda
data.statusstringPending / Success / Failed
data.product_codestringKode produk
data.product_namestringNama produk
data.customer_numberstringNomor tujuan transaksi
data.priceintegerHarga transaksi (Rp)
data.snstringSerial number (kosong jika belum ada)
data.messagestringPesan status dari provider
data.created_atstringWaktu transaksi dibuat
data.updated_atstringWaktu update terakhir

Contoh Handler Berdasarkan Event

<?php
$payload = json_decode(file_get_contents('php://input'), true);

switch ($payload['event']) {
case 'order.success':
$refId = $payload['data']['ref_id'];
$sn = $payload['data']['sn'];
// Update status order di DB, kirim SN ke user
updateOrder($refId, 'success', $sn);
notifyUser($refId, $sn);
break;

case 'order.failed':
$refId = $payload['data']['ref_id'];
$message = $payload['data']['message'];
// Update status, notifikasi user gagal
updateOrder($refId, 'failed');
notifyUserFailed($refId, $message);
break;

case 'order.sn_received':
$refId = $payload['data']['ref_id'];
$sn = $payload['data']['sn'];
// Simpan SN jika belum tersimpan
saveSN($refId, $sn);
break;
}

http_response_code(200);
echo json_encode(['status' => 'ok']);