Pada bab-bab awal implementasi, kita menggunakan class ServerSocket dan Socket dimana untuk melakukan parsing harus kita lakukan secara manual satu-persatu. Beruntunglah kita sebagai programmer Java , karena di bahasa pemrograman Java terdapat 1 library yang cukup bagus yaitu jPOS. Meskipun library jPOS ini opensource, tapi untuk dokumentasi-nya (jPOS Programmer’s Guide) kita diharuskan membeli sebesar $ 50 saja (sebuah harga yang tidak terlalu mahal bukan ?) Sedangkan untuk source code jPOS sendiri, bisa kita download menggunakan anonymous subversion pada alamathttps://jpos.svn.sourceforge.net/svnroot/jpos (untuk pengembangan menggunakan library jPOS, sangat dianjurkan untuk mendownload source code ini sebagai bahan referensi)
Apasih kelebihan dari library jPOS ini ? Yang jelas adalah, library ini memangkas semua proses manual yang harus kita lakukan ketika kita menggunakan Socket biasa. Selain itu, jPOS juga mendukung beberapa protokol-protokol yang biasa digunakan dalam implementasi ISO 8583. Untuk dapat menggunakan jpos ada beberapa hal dasar yang harus kita ketahui yaitu :
- ISOPackager
- ISOChannel
- ISOServer Dan ISOMUX
- ISOMsg
ISOPackager
Packager atau ISOPackager pada library library jPOS ini digunakan sebagai definisi panjang dan tipe data tiap-tiap Data Element yang akan digunakan dalam komunikasi. Ada banyak contoh packager yang dapat kita lihat dalam direktori jpos/dist/cfg/packager yang salah satu contoh-nya yaitu packager untuk iso93ascii.xml seperti dibawah ini:
Selain menggunakan file xml, packager juga dapat dikonfigurasikan melalui file java dengan ketentuan kita harus meng-extends class ISOBasePackager seperti dibawah ini :
Sedangkan cara penggunaan-nya adalah sebagai berikut :
Sampai disini sudah mengerti ? Jika sudah, mari kita masuk ke pembahasan ISOChannel
ISOChannel
Class ISOChannel atau Channel pada library jPOS ini digunakan untuk membungkus detail implementasi dari protokol-protokol yang digunakan oleh setiap vendor. Selain itu ISOChannel ini juga digunakan untuk mengirimkan dan menerima object ISOMsg. Beberapa Channel yang telah didukung oleh library jPOS ini antara lain :
Channel Name | Description | URL |
---|---|---|
AmexChannel | Implementasi ISOChannel untuk American Express | detail |
ASCIIChannel | ISOChannel yang menggunakan 4 ASCII karakter header sebagai penanda panjang message | detail |
Base24Channel | Implements an ISOChannel capable to exchange messages with ACI’s BASE24[tm] over an X.25 link. | detail |
BASE24TCPChannel | Implements an ISOChannel able to exchange messages with ACI’s BASE24 over a TCP link. | detail |
BCDChannel | Talks with TCP based NCCs Sends [LEN][TPDU][ISOMSG] (len=2 bytes HEX). | detail |
ChannelPool | - | detail |
CSChannel | ISOChannel implementation – CS standard Channel. | detail |
FSDChannel | - | detail |
GZIPChannel | ISOChannel implementation. | detail |
HEXChannel | Sends a four ASCII hex characters indicating message length (up to 0xffff). | detail |
LogChannel | Extracts | detail |
LoopbackChannel | - | detail |
NACChannel | Talks with TCP based NACs Sends [LEN][TPDU][ISOMSG] (len=2 bytes network byte order). | detail |
NCCChannel | Talks with TCP based NCCs Sends [LEN][TPDU][ISOMSG] (len=2 bytes BCD). | detail |
PADChannel | Implements an ISOChannel suitable to be used to connect to an X.25 PAD. | detail |
PostChannel | ISOChannel implementation – Postilion Channel Send packet len (2 bytes network byte order MSB/LSB) followed by raw data. | detail |
RawChannel | ISOChannel implementation – RAW Channel Send packet len (4 bytes network byte order) followed by raw data. | detail |
RBPChannel | Implements Record Boundary Preservation protocol. | detail |
TelnetXMLChannel | Implements an ISOChannel able to exchange jPOS generated (or compliant) XML based ISO-8583 messages through a Telnet session the telnet commands are simply ignored. | detail |
VAPChannel | ISOChannel implementation – VISA’s VAP framing. | detail |
X25Channel | Implements an ISOChannel suitable to be used to connect to an X.25 PAD. | detail |
XMLChannel | Implements an ISOChannel able to exchange jPOS generated (or compliant) XML based ISO-8583 messages. | detail |
Channel atau ISOChannel disini mempunyai peran yang sangat penting sekali dalam proses tersambung atau tidak-nya antara vendor yang satu dengan yang lain dan biasanya implementasi tiap vendor berbeda-beda Sedangkan pada library jPOS, penggunaan Channel ini sangat mudah seperti terlihat pada potongan kode dibawah ini :
ISOServer Dan ISOMUX
Jika pada implementasi sebelum-nya kita menggunakan class ServerSocket sebagai implementasi sebuah server dan class Socket sebagai implementasi sebuah client, pada library jPOS kita dapat menggunakan class ISOServer sebagai implementasi Server-nya dan class ISOMUX sebagai implementasi client-nya. Agar message yang kita kirimkan ke server tidak tertukar dengan message yang lain, maka ketika kita melakukan inisialisasi pada ISOMUX overridelah method
getKey(ISOMsg isoMsg)
seperti contoh dibawah ini :
Sedangkan cara untuk menggunakan class ISOServer adalah sebagai berikut :
ISOMsg
Class ISOMsg pada library jPOS ini adalah merupakan inti dari message yang akan kita kirim dan kita terima. Dibandingkan dengan cara manual yang telah kita lakukan pada tahap implementasi di bab sebelum-nya, untuk mengisi nilai pada data element tertentu pada class ISOMsg dapat kita lakukan secara langsung dengan cara seperti dibawah ini :
Sedangkan untuk mengirimkan-nya pada sebuah server, kita dapat membungkus ISOMsg kedalam object ISORequest dan mengirimkan object ISORequest tersebut ke method
queue(ISORequest isoRequest)
pada class ISOMUX seperti contoh dibawah ini :
Dan untuk mendapat respon dari server, kita bisa menggunakan method
getResponse(Integer TIMEOUT)
dari class ISORequest seperti kode dibawah ini :
Sampai disini pembahasan tentang apa itu jPOS sudah bisa dikatakan selesai Nah sekarang bagaimanakah implementasi menggunakan jPOS ? Mari kita lihat pada bab selanjut-nya
sangat membantu banget.. tks sharingnya
ReplyDeleteKursus jPos dimana ya ??? penasaran saya
ReplyDeleteBisa coba ke artivisi.com pak klo pingin tahu lebih detail :)
Delete