ISO 8583 dengan JPOS bag 1

Di jaman yang canggih kayak gini kita sering dimanjakan dengan beberapa fasilitas perbankan macam ATM, Mobile Banking, Internet Banking, Kartu Debit, dsb. Pernah gak kita berpikir bagaimana sih hal2 tersebut bekerja. Apakah dengan menarik uang diATM bener2 mengurangi saldo kita di bank padahal ATMnya jauh dari kantor cabang? Atau bener gak rekening kita didebet sesuai dengan yang kita tarik di ATM? Atau mesin EDC (mesin buat gesek kartu) kok bisa mendebet secara otomatis rekening kita?

Pastinya alat2 tersebut punya saluran komunikasi dengan bank, bisa berupa VSAT buat ATM-ATM yang ada dipelosok, atau line telpon buat dihubungkan dengan mesin EDC. Cuma apakah pernah terpikir bagaimana tepatnya mesin2 tersebut bisa berkomunikasi (istilah lainnya BERBICARA ;) ) dengan Core Banking Bank tertentu secara tepat.

Makanya dibutukan semacam bahasa untuk membuat saling pengertian :D dan standar. Bahasa untuk transaksi finansial tersebut sudah dibuatkan ISOnya dengan nama ISO 8583 . Ini adalah bahasa standar yang harus dipakai seluruh hardware dan software bila berhubungan dengan transaksi finansial.

ISO8583 mempunyai beberapa versi yaitu versi tahun 1987, 1994, dan 2003 . Kebanyakan bank diindonesia masih menggunakan versi 1987. Ok cukup intro sekarang mari kita bongkar format messaging ISO8583 itu sendiri. ISO8583 terdiri dari 3 bagian yaitu MTI, Bitmap, dan DATA.

MTI merupakan Message Type Indicator terdiri dari 4 digit merupakan penanda dari message secara keseluruhan berisi informasi seperti versi ISO8583, type message, fungsi pesan, dan asal pesan. Misalnya 0800( 0 = ISO 8583 versi 1987, 8 = message bertipe network management, 0 = berfungsi sebagai request, 0 = message berasal dari member/nasabah).

Bitmap adalah penanda dimana data ditempatkan di field dan subfield keberapa didalam message. Setiap message minimal harus punya satu bitmap yang bernama primary bitmap yang mengindikasikan ada/tidaknya data element dari 1 ke 64. Bitmap maksimal dapat memetahkan 128 data element. Bitmap yang memberitahukan ada/tidaknya data element dari 65 ke 128 disebut secondary bitmap. Bitmap biasanya ditransmisikan kedalam bentuk hexadecimal atau 8 bytes binari data. Bila kita mendapatkan bitmap seperti ini:

Hexa : 4210 0011 02C0 0000

Untuk mengetahui dimana data element yang ada kita ubah menjadi binary:

Bin : 0100 0010 0001 0000 0000 0000 0001 0001 0000 0010 1100 0000 0000 0000 0000 0000

Dari binary diatas kiat bisa menemukan bahwa data element aktif ada di field 2, 7, 12, 28, 32, 39, 41 dan 42. Buat yang masih binggung dari mana ajaibnya angka2 field tersebut, itu didapat dari urutan munculnya angka 1 dalam binary diatas. Jadi dalam urutan diatas angka 1 muncul pada urutan kedua berarti ada data element di field 2, dst.

Data element seperti namanya adalah tempat kita menempatkan data didalam ISO8583 message. Pada ISO8583 versi 1987 terdapat 128 data element. Setiap data element mempunyai arti dan format tersendiri untuk mendefain data seperti apa (binary, numeric, dll) yang bisa dimasukan kedalamnya dan berapa panjang (fixed, variable). Misalnya field 3 bertipe “n 6” artinya hanya dapat menerima data bertipe “numeric” dengan panjang “tetap” sebanyak 6 character atau field 44 bertipe “an..25” artinya bisa menerima data bertipe “alpha” dan “numeric” dengan panjang “flexible” sampai sebanyak 2 digit dengan maximalnya 25 charater. Jadi kita data seperti “000100” dapat dimasukkan ke dalam field 3 sedangkan “ad78012” dan “891829386518asd” bisa dimasukkan ke field 44 karena panjangnya masih dibawah 25 character. Tentu saja dengan segala arti dan format yang berbeda2 di masing2 data element, ISO8583 juga menyediakan data element yang multifungsi dan specific pada system atau negara tertentu.

Untuk membantu kita dalam mendevelop aplikasi yang menggunakan ISO8583 di java biasanya kita menggunakan bantuan dari framework yang bernama JPOS. Untuk demo cara menggunakan JPOS buat menangani ISO8583 bisa diliat di post berikutnya :D .

Ungkapkan pendapat Anda