Apa itu Webhook?
Webhook adalah notifikasi HTTP POST yang dikirimkan oleh server IndiPay ke URL server Anda segera setelah transaksi QRIS terdeteksi lunas.
Format Payload JSON
{
"event": "payment.success",
"order_id": "INV-20261025-001",
"txn_id": "INV-20261025-001",
"amount": 25000,
"gross_amount": 25000,
"status": "completed",
"payment_type": "qris",
"transaction_time": "2026-10-25T15:02:18.000Z",
"project_code": "testing",
"project_name": "TESTING"
}Header Autentikasi Webhook
Setiap request webhook menyertakan header X-Secret dan X-Pakasir-Signature untuk mencegah pemalsuan request.
X-Secret: Berisi nilaiwebhook_secretproyek Anda langsung.X-Pakasir-Signature: Dihitung menggunakan HMAC SHA-256 dari raw body request dengan kunciwebhook_secret.
// Contoh Verifikasi di Node.js
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, webhookSecret) {
const calculated = crypto
.createHmac('sha256', webhookSecret)
.update(rawBody)
.digest('hex');
return calculated === signatureHeader;
}Response yang Diharapkan
Server Anda harus mengembalikan HTTP status 200 OK dengan body text/JSON bebas agar IndiPayment mencatat pengiriman sebagai SUCCESS di Webhook Log.