Memparsing ISO 8583 secara manual? Kenapa tidak? Siapa tahu anda sedang melamar pekerjaan, dan anda sudah tahu bahwa nanti akan ditest apakah anda mengerti cara parsing ISO 8583 atau tidak. Jika anda memang bisa, ini bisa jadi point + untuk anda.

Atau jika anda ingin membuat program / tools sendiri untuk memparsing ISO 8583, tentu anda harus mengerti dulu bagaimana cara memparsing ISO 8583. Pada tulisan ini, akan saya coba untuk paparkan bagaimana cara membaca (memparsing secara manual) format message  ISO 8583. Anda hanya membutuhkan program calculator scientific dan notepad/text editor lainnya. Selain itu, sebelumnya anda harus sudah memahami apa itu ISO 8583 dan 3 komponen utamanya (MTI, Bitmap dan Data Elements). Jika belum paham, silahkan pelajari dari tautan berikut:

  1. ISO 8583 Wikipedia; atau
  2. ISO 8583 Pool of Knowledge

Misal, ada ISO 8583 message berikut:

0200723840010881800218622004124001000117360000000000000000062103204898062110204806217010040124000000000957KTM00106XXXXXXXX022647204100400100040201236000800101N01

Lalu kita akan coba memparsingnya secara manual. Where to Start?

4 digit pertama adalah MTI. Dari sini kita tahu bahwa MTI-nya bernilai 0200. Tinggal 2 komponen lagi, Bitmap dan Data Elements.

16 digit berikutnya adalah Bitmap. Yaitu 7238400108818002. Dua digit pertama yaitu 72 (dalam heksadesimal), jika ditranslasikan ke dalam bilangan biner, akan menjadi 01110010. Karena angka pertama bernilai 0, berarti bitmap nya hanya 64 bit. Berarti sisa karakternya adalah Data Element. Untuk mengetahui Data Element mana saja yang ada di dalam message, kita harus mentranslasikan setiap 2 digit dari bitmap.

  • 72 = 01110010 (Data Element 2, 3, 4 dan 7 ada)
  • 38 = 00111000 (11, 12, dan 13 ada)
  • 40 = 01000000 (18)
  • 01 = 00000001 (32)
  • 08 = 00001000 (37)
  • 81 = 10000001 (41, 48)
  • 80 = 10000000 (49)
  • 02 = 00000010 (63)

Sisa datanya adalah :

18622004124001000117360000000000000000062103204898062110204806217010040124000000000957KTM00106XXXXXXXX022647204100400100040201236000800101N01

Untuk DE (Data Element) 2, tipenya n..19, maka kita ambil dua digit pertama, yaitu 18. Maka 18 karakter berikutnya, adalah DE 2, yaitu 622004124001000117.

DE 3 tipenya n6, maka 6 digit berikutnya adalah 360000. Dan seterusnya sehingga diperoleh

  • 4 = 000000000000
  • 7 = 0621032048
  • 11 = 980621
  • 12 = 102048
  • 13 = 0621
  • 18 = 7010

Untuk DE 32, tipenya n..11, maka kita ambil 2 digit dulu, diperoleh 004. Maka DE 32 isinya = 0124. Dan seterusnya diperoleh

  • 37 = 000000000957
  • 41 = KTM00106XXXXXXXX

Untuk DE 48, tipenya an..999, maka kita ambil 3 digit dulu, diperoleh 022. Maka DE 48 isinya = 6472041004001000402012. Lalu untuk DE 49 tipenya an3, maka isinya = 360.

Terakhir, untuk DE 63, tipenya ans..999. Kita ambil 3 digit dulu, diperoleh 008. Maka DE 63 isinya = 00101N01.

Jika dirangkum jadi :

<isomsg>
   <field id="0" value="0200"/>
   <field id="2" value="622004124001000117"/>
   <field id="3" value="360000"/>
   <field id="4" value="000000000000"/>
   <field id="7" value="0621032048"/>
   <field id="11" value="980621"/>
   <field id="12" value="102048"/>
   <field id="13" value="0621"/>
   <field id="18" value="7010"/>
   <field id="32" value="0124"/>
   <field id="37" value="000000000957"/>
   <field id="41" value="KTM00106XXXXXXXX"/>
   <field id="48" value="6472041004001000402012"/>
   <field id="49" value="360"/>
   <field id="63" value="00101N01"/>
</isomsg>

Bagaimana.. mudah bukan?