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.

IP Server YoBasePay:
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`.