𝗠𝗲𝗻𝗴𝗮𝘁𝗮𝘀𝗶 𝗞𝗲𝘀𝗮𝗹𝗮𝗵𝗮𝗻 𝗥𝗲𝗸𝗼𝗻𝘀𝗶𝗹𝗶𝗮𝘀𝗶 𝗣𝗲𝗺𝗯𝗮𝘆𝗮𝗿𝗮𝗻

Seorang klien kehilangan 2.000 dolar. Kepala keuangan mereka menghabiskan empat malam untuk mencari selisih tersebut.

Masalahnya adalah retry job. Sistem memproses 120 pembayaran dua kali. Sistem tidak menagih pelanggan lagi, tetapi hanya menambahkan catatan ganda ke buku besar (ledger).

Kami mengatasi hal ini dengan lapisan idempotensi (idempotency layer). Ini memastikan pembayaran hanya diproses satu kali.

Berikut cara kami melakukannya:

  • Kami menggunakan Redis lock untuk menghentikan permintaan ganda.
  • Kami menambahkan indeks unik (unique index) di database sebagai cadangan.
  • Kami menggunakan kunci (key) dengan nama gateway dan ID transaksi.

Kami juga memperbaiki kurs mata uang. Sistem menggunakan kurs real-time. Kurs berubah dengan cepat, dan hal ini menciptakan selisih.

Sekarang kami mengunci kurs saat pesanan dimulai. Pelanggan melihat satu harga. Tim keuangan melihat harga yang sama.

Kami juga membangun laporan harian. Laporan ini membandingkan file CSV bank dengan catatan kami. Pekerjaan bulanan berkurang dari 15 jam menjadi 2 jam.

Berhentilah mengandalkan Excel dan kerja lembur hingga larut malam. Kesalahan pembayaran adalah masalah desain.

Mulailah dengan indeks database. Tambahkan Redis lock seiring pertumbuhan sistem Anda. Jangan pernah berasumsi bahwa notifikasi pembayaran hanya akan datang satu kali.

Sumber: https://dev.to/yanmoheluo/daigou-code-how-we-solved-payment-reconciliation-nightmares-in-cross-border-order-management-3df7