Lompat ke konten

Mulai Cepat

Di dashboard, buka sebuah project → tab Notifications → masukkan callback URL https:// → simpan. Salin signing secret yang ditampilkan — hanya ditampilkan sekali.

2. Verifikasi signature di handler Anda

Bagian berjudul "2. Verifikasi signature di handler Anda"

Setiap request membawa header X-Baiyar-Signature: t=<timestamp>,v1=<hex hmac>. Hitung ulang HMAC atas "<timestamp>.<raw body>" dengan secret Anda lalu bandingkan:

import crypto from "node:crypto";
function verifyWebhook(rawBody, signatureHeader, secret) {
const [tPart, v1Part] = signatureHeader.split(",");
const timestamp = Number(tPart.split("=")[1]);
const signature = v1Part.split("=")[1];
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
return (
expected.length === signature.length &&
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))
);
}

Lihat Verifikasi Signature Webhook untuk pengecekan toleransi timestamp, contoh Python, dan jebakan raw-body yang bisa merusak ini kalau Anda lewatkan.

Gunakan simulator payment sandbox alih-alih menunggu payment sungguhan — baik Alat simulasi sandbox yang tampil di halaman checkout sandbox mana pun, atau langsung:

Terminal window
curl -X POST https://api.baiyar.id/sandbox/payments/{providerPaymentID}/simulate \
-H "Content-Type: application/json" \
-d '{"outcome": "paid"}'

Kalau webhook Anda sudah dikonfigurasi, ini mengirim request payment.paid sungguhan ke endpoint Anda — cara tercepat untuk memastikan handler Anda merespons 2xx dan pengecekan signature Anda lolos sebelum pelanggan sungguhan bergantung padanya.