Membuat kode unik

Kebanyakan penjual online yang menerima pembayaran melalui transfer bank pasti mengalami kesulitan dalam melakukan verifikasi pembayaran yang dilakukan pembeli.

Memang tidak sedikit verifikasi pembayaran di e-banking atau online banking dari transaksi pembelian menjadikan penjual mengalami kesulitan karena berbagai perilaku sistem bank yang tidak standar dalam merekam transaksi nya. Contoh :

Pembeli melakukan pembayaran, tetapi nama pembeli berbeda dengan nama pemilik rekening yang digunakan !

Pembeli melakukan pembayaran antar bank. Masalah yang timbul adalah nama pengirim akan tidak terlihat didaftar transaksi ketika dilihat oleh penjual !

Pembeli melakukan pembayaran, tetapi tidak mencantumkan berita / keterangan transfer !

Pembeli melakukan pembayaran melalui BCA. Ketika penjual memeriksa transaksi, tanggal transaksi hanya muncul “PEND” !

Pembeli melakukan pembayaran melalui BNI SMS Banking ke rekening BNI penjual. Masalah yang timbul adalah nama pengirim akan tidak terlihat didaftar transaksi ketika dilihat oleh penjual !

BCA / MANDIRI / BNI tidak memperlihatkan jam + menit + detik pada data transaksi !

Mungkin masih banyak lagi masalah – masalah yang dihadapi oleh penjual online ketika melakukan verifikasi pembayaran.


Solusi nya adalah menggunakan kode unik pada total pembayaran. Solusi ini telah diterapkan oleh banyak marketplace di Indonesia (tokopedia, dll). Dimana pada contoh total pembayaran sebesar Rp. 125.000,- akan ditambahkan kode unik 345, menjadi Rp. 125.345,-.

Mengapa kode unik nya hanya 3 digit? Sebenarnya terserah mau berapa digit. Pertimbangannya adalah :

  1. 1 digit, pilihan dari 0 sampai 9.
  2. 2 digit, pilihan dari 0 sampai 99.
  3. 3 digit, pilihan dari 0 sampai 999.
  4. dan seterusnya.

Semua tergantung dari berapa jumlah penjualan / hari yang biasa diterima oleh penjual. Memakai 4 atau 5 digit saya kira terlalu berlebihan. 4 digit mungkin masih dapat diterima berdasarkan penjualan / hari.


Sekarang bagaimana cara membuat kode unik tersebut? Kebetulan saya seringnya coding di PHP, jadi akan saya jelaskan sebatas apa yang diketahui. Dimana ada berbagai cara untuk membuat kode unik tersebut :

Hati – hati memakai dua fungsi diatas, karena bisa terjadi hasil nomor yang sama. Tidak percaya? silahkan buktikan sendiri.

Karena target berdasarkan penjualan / hari, dan kode unik yang akan diambil adalah 4 digit, maka contoh hasil yang akan didapat adalah jam [11] + detik [23] = [1123]. Jika total pembayaran awal Rp. 125.000,- maka total + kode unik adalah Rp. 126.123,-.

Sebenarnya memakai konsep ini bisa terjadi masalah juga. Yang harus dipahami adalah jika kode unik ini dibuat oleh kode PHP secara otomatis, yang di eksekusi melalui website, maka harus dilihat adalah pada perilaku web server (Apache / Nginx / lainnya). Dimana web server dan PHP dapat menerima multi sesi, sehingga bisa terjadi ada 2 atau lebih sesi yang berjalan pada detik yang sama, maka akan muncul kode unik yang sama. Memang kemungkinan nya sangat kecil, jika dibandingkan dengan total pembayaran yang akan ditambahkan.

Mengapa tidak menggunakan Increment ID dari data Order? Karena data Order hanya akan dibuat setelah pembeli melakukan Checkout. Sedangkan pembeli perlu diperlihatkan berapa total pembayaran yang sudah ditambah kode unik.

Website atau sistem e-commerce yang bagus, biasanya menyimpan informasi Shopping Cart / Quote kedalam sebuah tabel di database. Sehingga pembeli dapat meneruskan pembelian lain waktu atau di device yang berbeda (PC pribadi / PC teman / Smartphone).

Yang harus diperhatikan adalah berapa digit yang akan digunakan. Karena Increment ID dari Shopping Cart / Quote akan bertambah terus seiring waktu. Jadi jika maksimal yang akan digunakan hanya 3 digit, maka sistem harus dapat mengaturnya untuk hanya mengambil 3 digit terakhir dari Increment ID.

Misal Increment ID saat ini adalah 3569, maka ambil hanya 569. Jika total pembayaran awal Rp. 125.000,- maka total + kode unik adalah Rp. 126.569,-.

Dengan konsep ini, kemungkinan masalah yang timbul dari konsep nomor #2 diatas tidak akan terjadi. Tinggal memutuskan berapa jumlah digit yang akan dipakai dengan mempertimbangkan penjualan / hari atau / minggu.


3 contoh diatas mudah-mudahan cukup untuk menjadi bahan pertimbangan dalam membuat kode unik yang akan ditambahkan pada total pembayaran transaksi.

Kebetulan saya pernah membuat modul yang menggunakan konsep nomor #3 yang diimplementasikan pada Magento versi 2.1.2 yang Anda temukan disini.