Bogor GMT+7

Konsultasi
← Semua artikel

Di balik layar

Di balik layar: Menghindari pembayaran ganda pada integrasi payment gateway

Arsitektur idempotency dan webhook handler untuk memastikan status tagihan akurat walau jaringan mengalami gangguan.

Terbit
Waktu baca
3 menit baca
Penulis
Hailmary Studio
Pelanggan melakukan pembayaran nontunai di mesin kasir tablet

Mengintegrasikan payment gateway untuk menerima transfer bank (Virtual Account) atau QRIS sekilas terlihat sederhana: pengguna membayar, penyedia layanan mengirim notifikasi (webhook), dan sistem memperbarui status transaksi menjadi “Lunas”.

Namun di lingkungan nyata perbankan dan jaringan internet Indonesia, kondisi ideal jarang terjadi. Server gateway bisa mengirim notifikasi webhook yang sama dua kali karena jaringan sempat melambat (retry webhook), atau pengguna menekan tombol bayar berulang kali saat koneksi ponsel terputus sejenak.

Jika arsitektur backend tidak dipersiapkan menangani kejadian ini, sistem bisnis Anda berisiko mencatat stok terpotong ganda atau saldo pelanggan terisi dua kali.

Rekayasa arsitektur anti-dobel (Idempotency)

Untuk menjamin keakuratan rekonsiliasi keuangan tanpa intervensi manual staf akuntansi, kami menerapkan tiga lapisan teknis pada sistem yang kami bangun:

1. Kunci Idempotensi (Idempotency Keys)

Setiap permintaan pembayaran yang dikirim dari aplikasi menyertakan tanda unik (unique deterministic key). Jika pelanggan tidak sengaja menekan tombol bayar tiga kali secara berurutan, server hanya memproses permintaan pertama dan mengabaikan dua permintaan identik berikutnya.

2. State Machine dan Lock Transaksi

Status pesanan diatur oleh mesin status yang ketat: Menunggu Pembayaran → Diproses → Selesai. Transaksi yang sudah berada di status Diproses atau Selesai otomatis mengunci baris data di database. Notifikasi webhook kedua yang tiba beberapa detik kemudian akan diverifikasi statusnya dan langsung direspons sukses tanpa menjalankan ulang aksi penambahan saldo atau pemotongan inventaris.

3. Log rekonsiliasi otomatis

Setiap payload webhook yang masuk disimpan utuh ke dalam tabel log audit sebelum diproses. Hal ini memungkinkan staf keuangan mencocokkan laporan mutasi bulanan bank dengan nomor referensi asli gateway kapan saja tanpa selisih sepeser pun.

Sistem yang siap menghadapi data berantakan

Prinsip rekayasa ini adalah alasan mengapa sistem operasional internal tidak boleh dibangun dengan asumsi bahwa jaringan internet selalu lancar. Ketahanan sistem terletak pada kemampuannya menangani skenario terburuk tanpa membingungkan pengguna akhir.

Jika perusahaan Anda menghadapi kendala rekonsiliasi transaksi manual atau ingin mengintegrasikan pembayaran otomatis yang aman, pelajari solusi sistem bisnis kami, baca tentang arsitektur di studi kasus Hailmary Terminal, atau ceritakan kebutuhan integrasi sistem Anda.