Blog
Keamanan Pembayaran Online: yang Wajib Diperhatikan Merchant

Keamanan pembayaran online bukan sekadar urusan tim IT besar—ini tanggung jawab setiap merchant yang menerima uang lewat internet, dari toko online besar sampai UMKM yang jualan lewat Instagram. Ketika pelanggan membayar di situs atau link Anda, mereka menaruh kepercayaan bahwa data dan uang mereka aman. Kabar baiknya, sebagian besar praktik keamanan pembayaran online yang penting justru sederhana dan bisa Anda terapkan tanpa harus jadi ahli kriptografi. Artikel ini merangkum hal-hal wajib yang perlu diperhatikan merchant: mulai dari HTTPS, verifikasi webhook, cara menyimpan rahasia (secret) dengan benar, sampai keputusan penting untuk tidak menyimpan data kartu sendiri dan bersandar pada mitra yang berlisensi.
Kenapa Keamanan Pembayaran Online Itu Kritis untuk Merchant
Transaksi pembayaran menyentuh dua hal paling sensitif sekaligus: uang dan data pribadi pelanggan. Satu celah kecil—misalnya link pembayaran yang bisa dipalsukan atau notifikasi transaksi yang bisa direkayasa—bisa berujung pada kerugian finansial, barang dikirim tanpa pembayaran nyata, atau hilangnya kepercayaan pelanggan.
Yang perlu dipahami, keamanan pembayaran itu berlapis. Ada bagian yang menjadi tanggung jawab penyedia infrastruktur pembayaran (pemroses dana), dan ada bagian yang tetap menjadi tanggung jawab Anda sebagai merchant. Memahami pembagian ini membuat Anda fokus pada hal yang benar dan tidak menghabiskan energi di tempat yang salah.
HTTPS: Fondasi yang Tidak Bisa Ditawar
Langkah pertama dan paling mendasar adalah memastikan seluruh situs Anda—terutama halaman checkout dan halaman yang menerima input pelanggan—berjalan di atas HTTPS. HTTPS mengenkripsi data yang lewat antara browser pelanggan dan server Anda, sehingga informasi tidak bisa disadap di tengah jalan.
Beberapa hal praktis:
- Pasang sertifikat TLS/SSL di semua domain dan subdomain yang menangani pembayaran. Banyak penyedia hosting kini menyediakannya gratis dan otomatis.
- Aktifkan pengalihan otomatis dari
http://kehttps://agar tidak ada halaman yang tertinggal di koneksi tidak aman. - Endpoint yang menerima notifikasi pembayaran (webhook) juga wajib memakai HTTPS.
Tanpa HTTPS, praktik keamanan lain jadi sia-sia karena datanya sudah bocor sejak di jalan.
Verifikasi Webhook: Jangan Percaya Notifikasi Mentah-mentah
Webhook adalah cara sistem pembayaran memberi tahu server Anda saat status transaksi berubah—misalnya pembayaran berhasil, kedaluwarsa, atau gagal. Ini fitur yang sangat berguna untuk otomasi, tapi juga titik yang sering diabaikan dari sisi keamanan.
Masalahnya: alamat endpoint webhook Anda bisa saja ditebak atau bocor. Kalau server Anda menandai pesanan "lunas" hanya karena ada request masuk ke endpoint tersebut, penyerang bisa mengirim request palsu dan memicu pengiriman barang gratis.
Karena itu, dua hal wajib dilakukan setiap kali menerima webhook:
- Verifikasi tanda tangan. Di BorderPay, setiap notifikasi webhook ditandatangani dengan HMAC. Server Anda harus menghitung ulang tanda tangan memakai secret yang Anda simpan, lalu membandingkannya dengan tanda tangan pada request. Kalau tidak cocok, tolak request tersebut—jangan diproses.
- Terapkan idempotensi. Webhook bisa terkirim lebih dari sekali (misalnya karena kirim ulang otomatis atau gangguan jaringan). Simpan ID event yang sudah diproses, dan abaikan event dengan ID yang sama agar satu pembayaran tidak dihitung dua kali.
BorderPay menyediakan log webhook dan mekanisme kirim ulang, sehingga Anda bisa menelusuri notifikasi yang belum terproses. Event yang dikirim mencakup payment.paid, payment.expired, dan payment.failed. Untuk detail teknis penanganan webhook dan pola idempotensi di sisi kode, lihat panduan integrasi API pembayaran dan dokumentasi resmi.
Jangan Anggap Status Selesai Sebelum Dikonfirmasi
Aturan turunannya: perlakukan pembayaran sebagai "belum selesai" sampai Anda menerima dan memverifikasi notifikasi resmi. Jangan menandai pesanan lunas hanya karena pelanggan menekan tombol "Saya sudah bayar" atau karena browser mereka diarahkan kembali ke halaman sukses. Sumber kebenaran adalah webhook yang terverifikasi (atau pengecekan status via API), bukan aksi di sisi pelanggan.
Simpan Rahasia (Secret) dengan Aman
Integrasi pembayaran biasanya melibatkan kredensial sensitif: API key, secret untuk verifikasi webhook, dan token lain. Kalau ini bocor, orang lain bisa memakai akun Anda. Prinsip penyimpanannya:
- Jangan pernah menaruh secret di kode frontend. Apa pun yang berjalan di browser bisa dibaca siapa saja. API key dan secret webhook hanya boleh ada di sisi server.
- Jangan commit secret ke Git. Simpan di environment variable atau secret manager, bukan di dalam file yang ikut ter-push ke repository.
- Batasi akses. Hanya orang dan sistem yang benar-benar butuh yang boleh mengakses kredensial produksi.
- Rotasi bila bocor. Kalau ada kecurigaan secret tersebar, segera ganti (rotate) dan perbarui di semua tempat yang memakainya.
- Pisahkan kredensial test dan produksi. Gunakan mode test/sandbox untuk pengembangan, dan simpan kredensial live secara terpisah dengan pengamanan lebih ketat.
Salah satu keunggulan memakai mode test terlebih dulu: Anda bisa membangun dan menguji seluruh alur pembayaran sejak hari pertama tanpa menyentuh uang sungguhan. Baru setelah alur matang dan KYC selesai, Anda beralih ke kredensial produksi untuk menerima uang sungguhan. Detail cara integrasinya bisa Anda pelajari di dokumentasi resmi.
Jangan Simpan Data Kartu Sendiri
Ini salah satu keputusan keamanan terpenting sekaligus paling melegakan: sebisa mungkin, jangan pernah menyimpan atau bahkan menyentuh data sensitif pelanggan seperti nomor kartu di server Anda sendiri.
Alasannya sederhana. Menyimpan data pembayaran sensitif membawa beban kepatuhan dan risiko yang berat. Semakin sedikit data sensitif yang melewati sistem Anda, semakin kecil pula permukaan serangan (attack surface) yang harus Anda jaga—dan semakin ringan tanggung jawab kepatuhan Anda.
Cara paling aman adalah membiarkan pelanggan membayar lewat metode yang tidak memaksa Anda memegang data kartu. BorderPay mendukung QRIS dan Virtual Account (VA)—dua metode di mana pelanggan menyelesaikan pembayaran lewat aplikasi bank atau e-wallet mereka sendiri. Anda tidak pernah menerima atau menyimpan detail rekening maupun kartu pelanggan; yang Anda terima hanyalah konfirmasi status pembayaran.
Ini juga alasan kenapa memakai metode seperti QRIS dan VA praktis untuk merchant kecil. Kalau Anda baru mulai, baca cara menerima QRIS di website atau apa itu Virtual Account untuk memahami cara kerjanya.
Peran Mitra Berlisensi: Biarkan Ahlinya yang Memegang Dana
Bagian keamanan yang paling berat—pemrosesan dan penyimpanan dana—sebaiknya tidak Anda tanggung sendiri. Di sinilah peran mitra berlisensi menjadi penting.
BorderPay adalah lapisan teknologi (software) yang berjalan di atas mitra Payment Gateway berlisensi Bank Indonesia. BorderPay sendiri bukan payment gateway dan bukan penyelenggara jasa pembayaran; pemrosesan dan penyimpanan dana dilakukan oleh mitra yang berlisensi. Artinya, kepatuhan dan pengamanan dana yang paling sensitif ditangani oleh pihak yang memang diatur dan diawasi otoritas, sesuai ketentuan yang berlaku.
Bagi Anda sebagai merchant, ini berarti Anda mendapatkan integrasi yang praktis di lapisan software, sementara aspek regulasi penyimpanan dana bersandar pada mitra berlisensi. Anda tetap perlu menyelesaikan KYC sebelum bisa menerima uang sungguhan—ini bagian normal dari kepatuhan, bukan hambatan. Untuk membandingkan dua metode utama yang tersedia, lihat QRIS vs Virtual Account.
Kebiasaan Keamanan Lain yang Membantu
Beberapa praktik tambahan yang layak diterapkan:
- Manfaatkan masa berlaku pembayaran. QRIS di BorderPay berlaku 60 menit dan VA berlaku 24 jam; setelah itu otomatis kedaluwarsa. Ini menutup celah pembayaran-telat yang bisa membingungkan pencatatan.
- Validasi jumlah dan referensi. Saat menerima notifikasi, pastikan nominal dan ID pesanan cocok dengan yang Anda buat—jangan hanya melihat status "paid".
- Pantau lewat dashboard. Status transaksi, jadwal settlement, dan riwayat penarikan tampil di dashboard, sehingga Anda mudah mendeteksi anomali. Dana tertahan sebentar lalu tersedia sesuai jadwal per metode (mengikuti hari kerja, melewati akhir pekan dan libur nasional), dan penarikan otomatis ke rekening bank—jika penarikan gagal, saldo dikembalikan penuh.
- Batasi hak akses tim. Beri akses dashboard sesuai kebutuhan peran masing-masing orang.
Penutup
Keamanan pembayaran online tidak harus rumit. Kalau Anda memastikan situs berjalan di HTTPS, memverifikasi setiap webhook dengan tanda tangan dan idempotensi, menyimpan secret jauh dari frontend dan repository, tidak menyimpan data kartu sendiri, serta bersandar pada mitra berlisensi untuk pemrosesan dana—Anda sudah menutup mayoritas risiko yang paling umum. Fokus pada hal-hal ini, dan Anda bisa menerima pembayaran dengan lebih tenang.
Ingin mencoba tanpa risiko? Anda bisa membangun dan menguji alur pembayaran di mode test sejak awal—tanpa biaya pendaftaran maupun langganan, karena biaya hanya muncul saat ada transaksi. Baca dokumentasi integrasi kami, cek struktur biaya di halaman pricing, atau langsung daftar akun BorderPay untuk mulai bereksperimen dengan aman.