Dalam post sebelumnya kita sudah tau apa dan kenapa ISO8583 itu, sekarang bagaimana kita bisa memakai JPOS guna membatu kita dalam mendevelop aplikasi ISO8583. Message ISO8583 sendiri aslinya hanya berupa string panjang. Kesulitan terbesar pada saat membangun aplikasi berbasis ISO8583 kita mesti menhitung bitmap dan menyesuaikan data element sesuai format standar. Untungnya denga JPOS semua itu menjadi lebih mudah.
Misalnya bila kita ingin membuat ISO8583 message dengan spesifikasi sebagai berikut:
MTI : 0800
DATA ELEMENT : 22062008 pada field 7 dan 000001 pada field 11
Maka java code dengan jpos sebagai berikut:
InputStream isp = ClassLoader.getSystemResourceAsStream("iso87ascii.xml");
ISOMsg msg = new ISOMsg();
try {
GenericPackager packager = new GenericPackager(isp);
msg.setPackager(packager);
msg.setMTI("0800");
msg.set(7,"22062008");
msg.set(11,"000001");
String message = new String(msg.pack());
System.out.println("ISO message hasil generate :"+message);
} catch (ISOException e) {
e.printStackTrace();
}
Bila dijalankan akan otomatis mendapatkan iso8583 message sebagai berikut:
080002200000000000000022062008000001
JPOS sudah dengan otomatis akan mengenerate bitmap sesuai field yang kita isi dalam kasus diatas bila kita beda ISO8583 message menjadi seperti ini:
0800 0220000000000000 0022062008000001
0800 menunjukan MTI, 0220000000000000 menunjukkan bitmap dan bila dijadikan binary akan menunjukan bahwa benar bit 7 dan 11 yang aktif berisi data element (panjangnya hanya 64 bit karena tidak terdapat sencondary bitmap), sisanya adalah data elementnya.
Selain itu JPOS juga bisa memecah kembali ISO8583 message yang masih berupa string panjang menjadi objek java kembali. Codenya yang bisa disisipkan dibawah code diatas sebagai berikut:
msg = new ISOMsg();
msg.setPackager(packager);
msg.unpack(message.getBytes());
System.out.println("field 7 hasil unpack :"+msg.getValue(7));
System.out.println("field 11 hasil unpack :"+msg.getValue(11));
Mungkin ada yang bingung bagaimana JPOS bisa mempack dan unpack secara tepat ISO8583 message, semua itu karena adanya packager. Packager yang membantu JPOS membuat ISO8583 sesuai standar dan juga membantu membongkarnya agar bisa kembali menjadi objek java. JPOS menyediakan beberapa packager. Tapi yang sering saya pakai adalah Generic Packager karena packager tersebut sangat flexible dan gampang dicustom. Generic Packager meload semua konfigurasi dari xml file yang berisikan format dan standar baik itu tipe dan length dari isofield atau data element. Kadangkala didunia nyata beberapa field itu disesuaikan dengan sistem dan negara makanya biasanya ada perubahan length dari data element, dengan generic packager bila ada perubahan tinggal diganti di xmlnya saja.
Source code dari demo diatas bisa diunduh disini (Ganti extensionnya jadi ZIP) dan bisa langsung dibuka di netbeans dan lib yang dibutukan ada didalam folder lib . Semoga berguna
.
















Bambang berkata,
Juli 14, 2008 @ 10:24 am
Duh, Saya run program di atas tapi error di line 4 ya?
Inisialisasi genericpackager.
error kaya gini :
org.jpos.iso.ISOException: java.net.MalformedURLException (java.net.MalformedURLException)
at org.jpos.iso.packager.GenericPackager.readFile(GenericPackager.java:232)
at org.jpos.iso.packager.GenericPackager.(GenericPackager.java:151)
at com.sdd.iso.IsoTest.main(IsoTest.java:20)
sonic31 berkata,
Juli 14, 2008 @ 5:20 pm
kamu bukanya pake netbeans gak? atau langsung di run aja yah? dari
error tersebut dia itu gak nemu file packagernya yang .xml itu, trus
di dalam file packagernya itu ada link ke file .dtd . semua itu harus
masuk ke dalam classpath pas waktu jalaninnya. Semoga membantu
Adhie berkata,
September 18, 2008 @ 10:27 am
iso8583 yg dijadikan contoh tsb kan versinya 1987… gimana crnya agar inputan dlm versi 1987 tsb dapat mengeluarkan output dlm versi 2003?
sonic31 berkata,
September 18, 2008 @ 10:55 am
Kayaknya tinggal ganti aja xml di generic packager disesuaikan ke format 2003. Dan diMTInya juga harus disesuaikan ke format 2003 .
petrcech berkata,
November 24, 2008 @ 12:42 pm
tulisan dasar iso 8583 yg bagus mas, kalo bisa lebih banyak lagi mas tulisan tentang iso 8583, mungkin dengan bahasa pemrograman lain.Aku tunggu updatenya mas…
wiem berkata,
Februari 20, 2009 @ 9:28 am
Untuk me run program ini, apakah memang dibutuhkan Jakarta Ant installed (1.6.5 or higher), untuk mem build jPOS?
Bagaimana cara meng call “ant run” untuk mem build dan starting the jPOS server?
Mohon infonya?
sonic31 berkata,
Februari 20, 2009 @ 2:09 pm
Paling gampang buat ngerunnya sih pake Netbeans aja karena itu memang copyan dari project yang dibuat dinetbeans. Semoga membantu.
wiem berkata,
Februari 20, 2009 @ 5:00 pm
Kalo langsung saya run dengan netbeans muncul tanda seru pada :
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.packager.GenericPackager;
karena package org.jpos.iso nya does not exist
kenapa ya pak?
wiem berkata,
Februari 23, 2009 @ 10:32 am
Alhamdulillah sudah ketemu penyebabnya yaitu 3 buah file library pada folder lib harus di add ke netbeans. Sekarang sudah running well
Terima Kasih pak, infonya sangat berharga
rio berkata,
April 2, 2009 @ 11:31 am
Makasih banyak infonya bang…. Sudah bisa YM an.. langsung….
GBU
andri berkata,
Mei 13, 2009 @ 8:17 am
Untuk yang sudah bisa, apakah boleh berbagi solusinya, karena saya juga mengalami masalah serupa.
Semua library sudah saya add kan dan semua yang ada pada folder packager telah saya tempatkan di classpath tapi tetap saja ketika import org.jpos.iso.* selalu tidak di kenali.
Terima kasih sebelumnya untuk para guru jpos di sini.
Anton berkata,
Juni 22, 2009 @ 8:13 am
Mau tanya, apa manfaatnya memakai jPOS? terus, kenapa harus memakai jPOS? bukannya jPOS sudah ada library. Terus, kita buat apanya, kan udah ada package nya…
Terima kasih atas sarannya. Saya sangat membutuhkan jawabannya.
Kirim ke antonrtw@yahoo.com
sonic31 berkata,
Juni 22, 2009 @ 11:47 pm
Ok gini JPOS itu sendiri adalah library yang biasanya dipake buat membantu segala hal yang berhubungan dengan ISO8583 di JAVA, biasanya JPOS dipake sebagai formater untuk format message ISO8583 memang bisa sih bikin formater sendiri cuma pasti makan waktu dan tenaga. Misal kamu adalah ATM mau komunikasi dengan CORE BANKING begini “saya mau transfer dari a ke b” nah pesan itu diubah jadi message ISO8583. Dari situ bisa kita liat walaupun sudah pake JPOS sebagai formater message tentu kita harus menghandle komunikasi tersebut jadi sebuah transaksi kurangi account a dan pindahkan ke account b, dan banyak hal lainnya yang harus dihandle macam validasi, content, dsb.