Friday 3 October 2014

Implementasi Menggunakan Java

Nah setelah kita mengetahui format message ISO 8583, sekarang bagaimana meng-implementasikan-nya pada bahasa pemrograman Java ? Sebelum kita menulis kode, yang harus kita lakukan pertama kali yaitu adalah menyusun spesifikasi yang akan kita gunakan untuk berkomunikasi. Pada kenyataan-nya, spesifikasi ini sangat penting peranan-nya dan ada kemungkin tiap vendor mempunyai spesifikasi yang berbedaantara satu dengan yang lain. Sebagai catatan, perhatikan betul-betul spesifikasi yang sudah disepakati bersama. Dan sekarang, bagaimanakah cara membuat sebuah spesifikasi untuk message ISO 8583 dan implementasi-nya pada bahasa pemrograman Java akan kita bahas pada bab-bab dibawah ini :
  • Pembuatan Spesifikasi Message Network Management
  • Pembuatan Aplikasi Server
  • Pembuatan Aplikasi Client
  • Testing


Pembuatan Spesifikasi Message Network Management


Agar komunikasi antara server dan client dapat berjalan dengan sukses, maka diperlukan sebuah kesepakatan yang harus ditaati oleh kedua belah pihak. Beberapa persyaratan tersebut yaitu mencakup tentang :
  1. Message Protokol, protokol yang akan digunakan dalam contoh kasus ini adalah ISO 8583:1993 yang ditandai dengan angka 1 (satu) pada MTI (Message Type Indicator).
  2. Connection Type, mode koneksi yang akan digunakan adalah mode connection-oriented dimana client membuka koneksi ke server sekali dan mengirimkan banyak message (connect once -> many transaction)
  3. Message System, untuk seluruh message yang dikirimkan ke server harus menggunakan 4 bit header sebagai penanda panjang message yang dikirimkan
Dan dibawah ini adalah format message Network Management Request/Response :
  1. NETWORK MANAGEMENT REQUEST
    1. Message Type Identifier : 1800
    2. Sender : Client
    3. Purpose : Request network management action to Server
    4. Data ElementNameSubfieldTypeLengthFormatDescription
      MTIN4For request use 1800
      1BitmapH16Use field = 3,7,11,12,13,48 and 70
      3Processing CodeN6Default set to 000001
      7Transmission Date and TimeN8yyyyMMddTransmission Date and Time
      11System Trace Audit NumberN6zero-left-paddingUnique number from client
      12Local time transactionN6HHmmssTransaction time from client
      13Date local transactionN4mmddDate transaction from client
      48Additional Private DataN3zero-left-paddingLenght of Additional Private Data
      48Additional Private DataClientIDN7zero-left-paddingClient identification number
      70Network Information CodeN3001=sign-on, 002=sign-off, 003=echo-test
  2. NETWORK MANAGEMENT RESPONSE
    1. Message Type Identifier : 1810
    2. Sender : Server
    3. Purpose : Response network management action for Client
    4. Data ElementNameSubfieldTypeLengthFormatDescription
      MTIN4For request use 1800
      1BitmapH16Use field = 3,7,11,12,13,39,48 and 70
      3Processing CodeN6Default set to 000001
      7Transmission Date and TimeN8yyyyMMddTransmission Date and Time
      11System Trace Audit NumberN6zero-left-paddingUnique number from client
      12Local time transactionN6HHmmssTransaction time from client
      13Date local transactionN4mmddDate transaction from client
      39Response CodeN3Available Response Code :

      1. 000 = Successfull
      2. 001 = Timeout from Server
      3. 002 = Invalid Network Information Code
      4. 003 = Invalid Processing Code
      48Additional Private DataN3zero-left-paddingLenght of Additional Private Data
      48Additional Private DataClientIDN7zero-left-paddingClient identification number
      70Network Information CodeN3001=sign-on, 002=sign-off, 003=echo-test

Pembuatan spesifikasi untuk message Network Management sudah selesai, sekarang mari kita implementasikan dengan membuat sebuah aplikasi server-nya dahulu.


Pembuatan Aplikasi Server


Sekarang buatlah sebuah project Java biasa pada NetBeans IDE dan berilah nama project tersebut contohnya Implementasi, dan buatlah sebuah package dahulu dengan nama id.web.martinusadyh.iso8583.helper. Didalam package yang telah kita buat, buatlah sebuah helper class dengan nama DecimalHexBinaryConverter.java yang mempunyai fungsi sebagai konverter ketika kita ingin menghitung nilai Bitmap yang kurang lebih seperti kode dibawah ini :




Setelah selesai membuat konverter dari HexaToBinary dan sebalik-nya, sekarang buatlah sebuah Helper Class lagi yang fungsinya kali ini lebih berkaitan dengan field-field yang terdapat dalam format ISO 8583seperti mencari panjang bitmap yang sebenar-nya, mencari data element yang aktif dalam sebuah message dan lain-lain. Sekarang buatlah sebuah Java Class dengan nama ISOUtil didalam packageid.web.martinusadyh.iso8583.helper yang isinya kurang lebih adalah sebagai berikut :



Sampai disini proses pembuatan Helper Class sudah selesai dan siap untuk digunakan, sekarang mari saat-nya kita membuat sebuah implementasi server-nya :) Implementasi server ini akan kita buat dengan menggunakan ServerSocket standart dari Java, jadi kita tidak memerlukan lagi tambahan library lain. Sekarang buatlah sebuah class baru dengan nama ServerISO dan simpanlah pada packageid.web.martinusadyh.iso8583.socket yang isinya kurang lebih seperti kode dibawah ini :



Sampai disini proses pembuatan implementasi Server ISO 8583 kita sudah selesai, sekarang mari kita lanjutkan dengan membuat implementasi untuk client-nya :)


Pembuatan Aplikasi Client


Penulisan kode untuk implementasi client ini lebih mudah, karena kita hanya akan mencoba mengirimkan request message saja. Sekarang mari kita buat sebuah Java Class dengan nama ClientISO.java yang kode-nya seperti dibawah ini :


Jika sudah, sekarang lakukan-lah proses Clean and Build pada NetBeans dengan menekan kombinasi tombol SHIFT+F11 dan harusnya tidak ada pesan kesalahan yang akan ditimbulkan :)


Testing


Pembuatan aplikasi server dan client sudah selesai dilakukan, sekarang langkah terakhir yang harus kita lakukan yaitu adalah mencoba untuk menjalankan kedua aplikasi tersebut. Sekarang jalankanlah dahulu aplikasi server-nya dengan cara klik kanan pada file ServerISO.java kemudian pilihlah Run Dan jika tidak ada pesan kesalahan, maka pada pallete output NetBeans akan muncul tulisan seperti dibawah ini :
run:
Server siap menerima koneksi pada port [12345]
Jika sudah menjumpai tampilan seperti diatas, sekarang jalankan-lah file ClientISO.java dengan cara klik kanan kemudian pilih menu Run. Jika tidak pesan kesalahan, maka pada sisi client akan muncul tulisan seperti dibawah ini :
run:
Req. Msg [00791800a2380000000100000400000000000000000001201011080000012356161108007CLNT001001]
Rec. Msg [00821810a2380000020100000400000000000000000001201011080000012356161108000007CLNT001001] len [86]
Dan kita juga bisa melihat respon yang diberikan server ketika terjadi request dari client dengan melihat tampilan output-nya yang kurang lebih seperti dibawah ini :
run:
Server siap menerima koneksi pada port [12345]
Rec. Msg [00791800a2380000000100000400000000000000000001201011080000012356161108007CLNT001001] len [83]
[3] [000001]
[7] [20101108]
[11] [000001]
[12] [235616]
[13] [1108]
[48] [007CLNT001]
[70] [001]
Res. Msg [00821810a2380000020100000400000000000000000001201011080000012356161108000007CLNT001001]
Sampai disini, proses request / response telah terjadi dengan baik antara sisi server dan sisi client :) Bagaimana ? tidak susah bukan ? Nah pada bab selanjut-nya, kita akan membahas salah satu library di Java yang sudah meng-otomatisasikan proses-proses yang telah kita lakukan secara manual diatas :)


4 comments:

  1. WHat is that 0079 and 0082 infront of the MTI?

    ReplyDelete
  2. Mas saya udah coba jalankan scripnya tapi kenapa Res. Msg nya ngga keluar ya.? Maaf mas newbe. Hehe

    ReplyDelete
  3. 5 Ways to Add Titanium In a Bucket - TITanium-Arts.com
    Titanium-Arts.com titanium men\'s wedding band is a website titanium curling wand devoted titanium solvent trap monocore to titanium earrings all used ford edge titanium the benefits of building a bucket. Tittler's is a simple tool that comes in handy whenever you

    ReplyDelete