Keamanan & Verifikasi Webhook
Pelajari langkah-langkah pengamanan sistem dan validasi data callback dari YoBasePay guna mencegah ancaman pemalsuan transaksi.
1. Validasi Signature SHA-256 (Kritis)
Setiap callback dari YoBasePay membawa header atau payload data `signature` yang dienkripsi menggunakan algoritma **SHA-256** gabungan dari data transaksi dan **API Key** proyek Anda. Ini memastikan callback benar-benar berasal dari server YoBasePay, bukan penipu.
Contoh Implementasi Verifikasi (PHP):
<?php
// Ambil payload dari request POST
$json = file_get_contents('php://input');
$data = json_decode($json, true);
// Parameter wajib untuk signature
$merchant_code = $data['merchant_code'];
$ref_id = $data['ref_id'];
$amount = $data['amount'];
$status = $data['status'];
$received_signature = $data['signature'];
// API Key Anda yang tersimpan aman di server (Jangan disebar!)
$api_key = "KUNCI_API_RAHASIA_ANDA";
// Hitung signature lokal
$expected_signature = hash('sha256', $merchant_code . $ref_id . $amount . $status . $api_key);
// Verifikasi
if ($received_signature === $expected_signature) {
// CALLBACK SAH & AMAN
if ($status === 'SUCCESS') {
// Proses update order di database Anda ke Lunas
}
echo json_encode(["status" => "OK"]);
} else {
// CALLBACK PALSU / TIDAK VALID
http_response_code(400);
echo json_encode(["status" => "FAILED", "message" => "Signature Mismatch"]);
}
?>
IP Whitelisting
Batasi penerimaan webhook di server Anda hanya dari alamat IP server YoBasePay. Ini mencegah pihak luar menembak endpoint callback Anda secara langsung.
103.186.201.23 (Live)
Koneksi Wajib HTTPS
Kami sangat menyarankan (dan pada lingkungan produksi mewajibkan) endpoint webhook Anda menggunakan protokol **HTTPS (SSL/TLS)**.
HTTPS mengenkripsi seluruh muatan data selama proses transmisi sehingga tidak dapat disadap (*Man-in-the-Middle attack*).
Best Practices Keamanan Tambahan
-
**Gunakan UUID/Ref ID Acak**: Hindari menggunakan ID pesanan yang berurutan (misal: 1, 2, 3) agar penipu tidak mudah menebak parameter callback Anda. -
**Cek Duplikasi Callback (Idempotency)**: Kadang server kami mengirim ulang callback jika server Anda terlambat merespons. Pastikan sistem Anda memeriksa apakah transaksi tersebut sudah ditandai Lunas agar tidak memproses produk ganda. -
**Sembunyikan Endpoint Webhook**: Jangan gunakan nama endpoint webhook yang pasaran seperti `/callback.php` atau `/webhook`. Gunakan path acak seperti `/callback_yobase_a7x89.php`.