SEMAKIN BOTAK DAN KAYA DENGAN ISO-8583

Setelah galau-galau gak jelas semasa kuliah sampai meninggalkan blog ini jadi sarang laba-laba, udah galau + stress + frustasi, dengan susah payah akhirnya lulus juga, wisuda juga, ALHAMDULILLAH…. masalah nilai mah meskipun gak cumlaude gak masalah, wahai sodara-sodaraku yang termasuk PMDK(Perkumpulan Mahasiswa Dua Koma) dan Nasakom (Nasib Satu Koma), sabar, kesuksesan masih bisa diraih sob, yang penting kita udah lulus aja deh, hahaha…..sori brow kalau ada yang kesinggung, hehe….tapi IP mah memang gak menentukan brow, balik lagi ke usaha, doa dan nasib…oke lah, cukup  curhatan nya,….sekarang gua Alhamdulillah udah ada sedikit tambahan ilmu dan mau gua share ke lo pade.....

Sekarang ceritanya kita kan hidup di jaman serba online nih, yang kebutuhan juga semakin meningkat, termasuk tagihan-tagihan pun semakin meningkat. Kenapa kok masuk tagihan juga meningkat? Lo bayangin aja sekarang satu rumah pasti dibebani oleh tagihan air, listik, tv kabel (bagi yang punya TV), internet broadband, telepon rumah (kalau masih ada), belum lagi yang lain2 karena sekarang banyak iklan di TV tentang produk rumah tangga, kosmetik, alat kesehatan obat, dan lain2 itu, yang pembayarannya juga lewat bank. Otomatis tagihan pun bertambah. Dan hari gini juga orang sudah di serang oleh dominasi smartphone, satu orang bisa punya beberapa handphone canggih, kalau gua sih orangnya setia (padahal blum punya duit buat beli yang bagusan), BB aja gua kagak ade, padahal banyak yang minta pin tuh, hahaha….jadi cukup satu aja itupun ibarat motor taun 70an bung, jadul,….:D. Belum lagi kartu kredit ada beberapa biji. Dengan keterbatasan via mobile untuk bayar tagihan, gua akhirnya juga bayarnya di POS juga, sekalian promosi nih, hahaha…karena di POS bayar semua-muanya bisa…:D





Dengan banyak nya sarana itu menimbulkan suatu kenikmatan sendiri bro, lo gampang buat mbayar semua tagihan dari mana aja, banyak jasa yang nawarin kemudahan itu, itu karena sekarang banyak perusahaan2 yang memanfaatkan celah itu, dan perusahaan itu dikenal dengan perusahaan switching, yang mengandalkan layanan Host-to-Host dengan banyak institusi mengenai pembayaran tagihan2 yang bisa “membunuh” lo secara perlahan itu. Host-to-Host merupakan salah satu killer application di dunia yang penuh virtualisasi sekarang, dan berbasiskan standart ISO-8583…:O



Nah loh ketemu kata ISO-8583, tau gak lo apaan itu? Sabar, ini merupakan inti dari apa yang bakal gua share kepada pengunjung blog yang saya hormati. Siapin dah roti sama kopi, karena lo bakalan ngantuk dan pusing. Supaya memudahkan pemahaman, tulisan kali ini bakal gua jelaskan step by step nya….dimulai dari pengertian ISO (International Organization for Standardization) 8583, pengenalan format data atau pesan (message) pada ISO-8583. Sebagai awal pembahasan, langsung to the point deh bung.


Apa itu ISO 8583?

ISO-8583 ini adalah sebuah standart international untuk transaksi financial bro. Dan standart atau protocol ini sudah sejak lama digunakan oleh perbankan untuk menjembatani komunikasi-nya (walaupun tidak menutup kemungkinan pihak selain bank menggunakan ISO-8583),  dengan adanya standart komunikasi seperti ini maka tidak menutup kemungkinan transaksi dapat tetap dilakukan antar pihak yang terkait walaupun menggunakan system atau bahasa pemrograman yang berbeda. Disini gua pake bahasa pemrograman vb 6. Bahasa pubakala yang udah punah dan gua hidupin lagi dari kubur……-__-

Asal lo tau, ISO-8583 ini juga banyak diterapkan pada komunikasi antar bank ataupun antar switcher dengan biller. ISO-8583 sendiri memungkinkan pemilik kartu untuk melakukan macam2 kegiatan seperti pembelian, pengambilan uang, penyimpanan uang, melihat tabungan, melakukan pembayaran, transfer antar rekening, dan lain2 deh pokoknya.

Host-to-Host dan e-Payment
Aplikasi lain yang menggunakan ISO-8583 adalah Host-to-Host sesuai yang dah gua bilang pertama tadi, host/server dari institusi pertama dihubungkan langsung dengan host/server dari institusi kedua. Misalnya system pembayaran PDAM yang bisa dilakukan di POS, karena itu yang sedang gua lakuin sekarang, PDAM sebagai biller dan Collecting Agentnya adalah gua yang bertugas di sisi PT. POS Indonesia (Persero). Ada juga misalnya Telkom, PLN, dst dengan server CA misalnya ATM, phone banking, internet banking, dst.

MPLS VPN dan Host-to-Host
MPLS VPN (Virtual Private Network berbasiskan Multi Protocol Label Switching) merupakan suatu teknologi yang sangat ideal dalam mendukung aplikasi semacam Host-to-Host. Sesuai dengan namanya MPLS VPN mampu melakukan virtualisasi network dengan aman cuy. IPsec (enkripsi) bisa dilakukan sebagai complement MPLS VPN, sehingga keamanan akan berlapis, dan integritas data akan terjaga. MPLS VPN mampu memberikan layanan Intranet maupun Extranet dengan topologi network seperti apapun yang diminta oleh pelanggan Host-to-Host.

Host-to-Host Lintas Operator
MPLS VPN juga mampu memberikan dukungan untuk Host-to-Host lintas operator. Di sini operator/service provider MPLS harus saling terhubung(peering) di level MPLSnya (istilah teknisnya peering antara PE-PE menggunakan Inter-AS MPLS VPN). Dengan koneksi ini, maka biller dan collecting agent (CA) bisa terhubungkan dengan operator manapun. Jadi keuntungannya adalah cakupan Host-to-Host menjadi lebih luas (tidak terbatas di satu operator saja), dan tingkat availability-nya juga akan makin tinggi karena multihoming jadi bukan kendala lagi. Ini bisa jadi peluang bisnis juga kalau lo bisa manfaatin, dan bukan tidak mungkin akan menimbulkan keuntungan yang lumayan besar, karena cakupan pasarnya yang cukup luas disamping permintaan pasar yang sangat tinggi untuk hal mempermudah transaksi keuangan. Cepet kaya, cepet kawin dah lo…..:))

Hambatan di Indonesia
Layanan Host-to-Host lintas operator di Indonesia sampai saat ini baru memungkinkan dengan adanya pihak ketiga yang terhubung ke banyak operator, dimana pihak ketiga ini menjadi transit lintas operator. Cara ini sebenarnya kurang effisien, tapi apa boleh buat, sampai saat ini di Indonesia pada penyedia jasa MPLS VPN masih belum (mau) duet satu sama lain, sehingga interkoneksi di level MPLS masih belum ada.

Hal yang bisa diperbaiki di Indonesia
Seandainya semua penyedia (operator) MPLS VPN mau saling berkolaborasi, maka alangkah indahnya Indonesia ini dengan segala keindahan alam yang ada, apaan sih semua orang dah tau juga kalee. Ok, balik ke pembicaraan…. Dengan banyak duat maut yang akan tercipta dan goyangan baru bermunculan, apaan sich ya,….hahaha. Dengan adanya kolaborasi, maka akan terjadi peningkatan efisiensi routing yang luar biasa, dan kita juga akan dapatkan tingkat availability yang jauh lebih tinggi.

Ok, sudah cukup ngantuk buat baca teori diatas, ngoceh-ngoceh ngalor ngidul, bikin pusing iya,….tapi untuk lebih paham lagi tentang ISO-8583 secara teknikal, gua jelasin sekalian deh……



Secara umum, ISO-8583 terdiri dari 3 bagian, yaitu :
1.      Message Header, ini dapat digunakan sebagai penanda awal dari sebuah message.
2.      Application Data, ini adalah inti dari ISO-8583. Semua format dan definisi message terdapat pada bagian ini.
3.      Message Trailer, ini dapat digunakan sebagai penanda akhir dari sebuah message.

NB: Dalam beberapa kasus, kadang-kadang dalam setiap message kita hanya menjumpai penggunaan message header atau message trailer saja. Penggunaan message header dan message trailer ini sepenuhnya tergantung pada setiap pihak yang berkepentingan dan harusnya informasi ini tertulis jelas pada dokumen spesifikasi teknis yang telah dimusyawarahkan dan disepakati bersama oleh kedua beah pihak atau lebih. Kalau di gua sih namanya PKS

Karena Message Header dan Message Trailer hanya digunakan sebagai penggembira aja, jadi gua bahas yang Application Data yang terdapat dalam ISO-8583 ini. Sama seperti struktur ISO-8583. Application Data ini juga dibagi menjadi beberapa bagian yang kurang lebih seperti ini :
1.      MTI (Message Type Indicator) adalah 4 digit karakter yang digunakan sebagai penanda awal dari message utama ISO-8583.
2.      Bitmap, adalah 8 bytes data biner atau 16 digit nilai hexadecimal yang digunakan sebagai penanda bit-bit atau data element mana saja yang aktif. (16 digit disini merupakan panjang standart dari primary bitmap saja).
3.      Data Element (DE), adalah bit-bit yang berisi informasi yang sebenarnya pada transaksi itu sendiri.

Langsung aja wes gua jelasin, untuk nomor 1 dan 2 gampang, kalau yang yang nomor 3 itu yang rada bikin emosi dikit. Karena Data Element itu tergantung bisnis proses atau tujuan lo nggunain ISO-8583 itu sendiri mau lo buat apaan. Jadi tergantung lo mau kayak gimananya,…..
Ok, umpama gua dapat message kayak begini nih : 0210723A40010A418002
Itu bukan nomor telepon rumah untuk daerah jabodetabek gara-gara depannya 021, itu ISO-8583 bro, kalau lo nelpon tu nomor gak bakalan bisa nyambung-nyambung, nomornya aja ada banyak, itu sebetulnya masih ada buntutnya dan bisa sampai 500an karakter, tapi berhubung itu informasi yang sangat sensitif mengingat itu transaksi finansial, jadi gua ambil generalnya aja….
Sekarang kita parsing tu ISO sekalian gua jelasin maksudnya apaan….

1.      MTI (Message Type Indicator)
MTI berisi kode yang mengartikan bahwa “respon message nya apa”. MTI sendiri ada 4 digit.

a.        Digit pertama menyatakan versi dari ISO-8583, pada umumnya di Indonesia dan yang gua pake, masih menggunakan versi 0, yang merupakan versi tahun 1987.

0xxx-ISO 8583:1987
1xxx-ISO 8583:1993
2xxx-ISO 8583:2003

b.      Digit kedua menyatakan jenis message (Class of Message) nya.

x1xx-Authorization Message
x2xx-Financial Message
x3xx-File Action Message
x4xx-Reversal Message
x5xx-Reconciliation Message
x6xx-Administrative Message
x7xx-Fee Collection Message
x8xx-Network Management
x9xx-Reserved by ISO

Dari kesembilan itu, gak semua lo gunain, sesuai pengalaman gua yang kebanyakan digunakan itu yang x2xx aja.

x1xx-bisa dipake buat request/inquiry. Misal, cek saldo.
x2xx-buat transaksi finansial, sehari2 kebanyakan yang gua pake ini, Misal buat   bayar PDAM, PLN, Kredit Motor, dll.
x4xx-buat reversal, kalau misalnya transaksi gagal (Misal koneksi dengan biller yang terputus) ini yang terkadang buat gua geregeten gara2 koneksi biller DOWN, tapi kalau gua di aplikasi nya “nembak” ke server tiap 3 detik dan akan terus dilakukan meskipun sedang DOWN. Semua transaksi yang gagal itu akan di rollback (di reserve). Karena bisa aja pas lo bayar PDAM dan sudah bayar dan status jadi lunas, tapi pas mau potong defisit, listrik/internet padam…gratis deh tuh bayar listrik…hahaha. Tapi itu semua akan kecatet, karena di gua ada 2 jenis transaksi error, suspect untuk yang kecatet di log PDAM tapi tidak di gua, dan forced untuk transaksi yang tidak kecatet di log PDAM tapi kecatet di gue nya, kalau suspect berarti transaksi itu di batalkan sedangkan forced akan ditransaksikan ulang. Kaitannya sama rekonsiliasi data.
x8xx-buat network management, echo test yang bersifat state full, jadi koneksinya terjalin tanja putus ketika sudah handshake, dan  gua setting akan mengirimkan sinyal tiap 3 detik sesuai gua bilang tadi.

c.       Digit ketiga menyatakan jenis message-nya (Function of the Message). Selain itu juga mengartikan bahwa apakah message ini bersifat advice atau bukan.

xx0x-Request
xx1x-Request Response
xx2x-Advice
xx3x-Advice Response
xx4x-Notification
xx8x-Response Acknowledgement
xx9x-Negative Acknowledgement

Yang sering digunakan itu yang 0 dan 1 aja, tergantung kasus yang lo hadapin sih, itu kalau sesuai dengan pengalaman gua selama ini aja. Kalau nilainya 0 maka dia request tapi kalau 1 maka dia adalah response.

d.      Digit keempat menyatakan siapa yang memulai komunikasi, sehingga diketahui darimana ISO Message itu berasal (Message Originil).

xxx0-Acquirer
xxx1-Acquirer Repeat
xxx2-Issuer
xxx3-Issuer Repeat
xxx4-Other
xxx5-Other Repeat

Pada pengalaman gua selama ini, gua sering nemunya cuma yang 0 aja, tapi gak atau kasus yang lo alamin ketemu selain 0 atau gak.

Dah paham belum?....kalo belum gua kasih contoh mengenai MIT sendiri itu kayak apa, ini yang standart digunakan dan yang gua temuin selama ini.
MTI
Meaning
Usage
0100
Authorization Request
Request from Point-of-Sale terminal for Authorization for a cardholder purchase
0110
Issuer Response
Issuer response to a Point-to-Sale terminal for Authorization for a cardholder purchase
0120
Authorization Advice
When The Point-of-Sale device breaks down and you have to sign a voucher
0121
Authorization Advice Repeat
If The Advice Times Out
0130
Issuer Response to Authorization Advice
Confirmation of receipt of Authorization Advice
0200
Acquirer Financial Request
Request for funds, typically from an ATM or pinned Point-of-Sale device
0210
Issuer Response to Financial Request
Issuer response to request for funds
0220
Acquirer Financial Advice
e.g. Checkout at a hotel. Used to complete transaction initiated with Authorization Request
0221
Acquirer Financial Advice Repeat
If The Advice Times Out
0230
Issuer Response to Financial Advice
Confirmation of receipt of Financial Advice
0400
Acquirer Reversal Request
Reverses a transaction
0420
Acquirer Reversal Advice
Advices that a reversal has taken place
0421
Acquirer Reversal Advice Repeat Message
If The Reversal times out
0430
Issuer Reversal Response
Confirmation of receipt of Reversal Advice
0800
Network Management Request
Echo test, logon, log off, etc.
0820
Network Management Advice
Keychange

Dari penjelasan gua diatas, sekarang coba kita implementasiin ke message yang gua tulis sebelumnya. 4 digit awal adalah “0210” yang artinya message ini adalah respon transaksi financial yang gua dapat dari biller.

Karena message ini response, berarti gua harus ngirim request sebelumnya dengan 4 digits awal message-nya “0200”. Jika tidak di reply oleh biller gua anggap bahwa ada yang gak beres pada jaringannya.

0210
723A40010A418002 <= sisanya


2.      Bitmap
Berhubung gua seneng itung-itungan maka ini yang paling gua suka. Pertama ambil 16 atau 32 digits setelahnya yang berupa bilangan hexadecimal, convert menjadi bilangan biner(Bitmap). Bitmap merupakan bit-bit untuk mapping. Tadi gua bilang ambil 16 atau 32 digit, la dari itu sudah timbul pertanyaan, kapan gua ambil 16 atau kapan gua ambil 32 digits, jangan banting leptop dulu bro, santai…..gua orangnya baik, jadi gua kasih tau. Daripada lo nangis terus minta balon bisa gawat. Jawaban nya lo ambil 1 digit pertama dulu. Dari contoh itu digit pertama adalah “7” yang merupakan bilangan bukan decimal, lalu convert menjadi bilangan biner, artinya menjadi “0111”, jika digit pertama dari bilangan binernya adalah 0 artinya lo hanya ambil 16 digits, jika 1 artinya lo harus ambil 32 digits.

Berhubung digit pertamanya “0” jadi gua ambil 16 digit, berikut sisa digit dari contoh :
“723A40010A418002”, maka artinya bit yang gua nyalain adalah bit 2,3,4,7,11,12,13,15,18,32,37,39,42,48,49,63.

Kalo lo Tanya kok bisa? Gua bukan orang sakti bro. Itu semua ada itung-itungannya, makanya tadi gua bilang gua suka itung-itungan, ya itungannya ada disini. Bentar gua jelasin. Jadi begini ceritanya. Lo liat 16 bit diatas, terus lo pecah kecil-kecil masing-masing terdiri 2 bit.

BYTE1 : 01110010 = 72x (72 itu bilangan heksa, itung dari kiri bit 2,3,4 dan 7)
BYTE2 : 00111010 = 3Ax
BYTE3 : 01000000 = 40x
BYTE4 : 00000001 = 01x
BYTE5 : 00001010 = 0Ax
BYTE6 : 01000001 = 41x
BYTE7 : 10000000 = 80x
BYTE8 : 00000010 = 02x

Kalo belum paham juga, gini gua jelasin detail.
BYTE1 : 01110010
Terus lo itung dari kiri, angka 1 ada di urutan ke 2,3,4 dan 7 kan. Berarti bit 2,3,4 dan 7 yang gua nyalain nih. Pada bitmap itu angka 1 menandakan bit yang lo aktifin dan 0 adalah bit yang nggak aktif.

Lalu BYTE2 : 00111010 artinya bit 11,12,13 dan 15 yang nyala. Ngitungnya jangan dari 1 lagi, tapi lo lanjutin yang tadi sampai ke bit 64. Jika gua jabarin bit-bit diatas, hasilnya kek begini :

0________10________20________30________40________50________60__64
1234567890123456789012345678901234567890123456789012345678901234    n-th bit
0111001000111010010000000000000100001010010000011000000000000010    bitmap

Bagaimana, dah paham? Pusing tapi asik kan……:D

3.      Data Elements
Ini merupakan bagian yang paling bikin emosi karena data elements ini merupakan pembawa informasi dari transaksi itu sendiri dan dikirimkan melalui jaringan menggunakan protocol ISO-8583. Panjang bit nya bisa berbeda sesuai kebutuhan, ada spec nya, jadi memang user specified. Tergantung perjanjian. Tapi masing-masing data elements memiliki format baku yang kontennya didefinisiin dengan panjang dan tipe yang berbeda-beda. Untuk versi 1987, terdapat 128 data elements, sedangkan pada versi berikutnya yaitu ISO-8583 versi 1993 naik menjadi 192 data element.
Data element ini dapat diasumsikan seperti sekumpulan kotak sebanyak 128 atau 192 buah, yang tiap-tiap kotak mempunyai arti dan format yang sudah ditentukan oleh standart ISO-8583. Untuk daftar kontentnya gua bikin table kayak dibawah ini :

Bit
Name
Format
Representation
1
Bitmap Indocator

b 64
2
Primary Account Number (PAN)
LLVAR
n .. 19
3
Processing Code

n 6
4
Amount Transaction

n 12
5
Amount Settlement

n 12
6
Amount Cardholder Billing

n 12
7
Date and Time Transmission
MMDDhhmmss
n 10
8
Amount Cardholder Billing Fee

n 8
9
Conversion Rate Settlement

n 8
10
Conversion Rate Cardholder Billing

n 8
11
Systems Trace Audit Number

n 6
12
Time Local Transaction
hhmmss
n 6
13
Date Local Transaction
MMDD
n 4
14
Date Expiration
YYMM
n 4
15
Date Settlement
MMDD
n 4
16
Date Conversion
MMDD
n 4
17
Date Capture
MMDD
n 4
18
Merchant Type

n 4
19
Acquiring Institution Country Code

n 3
20
Primary Account Number (PAN) Extended Country Code

n 3
21
Forwarding Institution Country Code

n 3
22
Point of Service Entry Mode

n 3
23
Card Sequence Number

n 3
24
Function Code

n 3
25
Point of Service Condition Code

n 2
26
Point os Service Capture Code

n 2
27
Authorization Identification Response Length

n 1
28
Amount Transaction Fee

n 8
29
Amount Settlement Fee

n 8
30
Amount Transaction Processing Fee

n 8
31
Amount Settlement Processing Fee

n 8
32
Acquiring Institution Identification Code
LLVAR
n .. 11
33
Forwarding Institution Identification Code
LLVAR
n .. 11
34
Primary Account Number Extended
LLVAR
n .. 28
35
Track 2 data
LLVAR
z .. 37
36
Track 3 data
LLLVAR
z .. 104
37
Retrieval Reference Number

an 12
38
Authorization Identification Response

an 6
39
Response Code

an 2
40
Service Restriction Code

an 3
41
Card Acceptor Terminal Identification

ans 16
42
Card Acceptor Identification code

ans 15
43
Card Acceptor Name/Location

ans 40
44
Additional Response Data
LLVAR
an .. 25
45
Track 1 data
LLVAR
an .. 76
46
Additional Data ISO
LLLVAR
an .. 999
47
Additional Data National
LLLVAR
an .. 999
48
Additional Data Private
LLLVAR
an .. 999
49
Currency Code Transaction

an 3
50
Currency Code Settlement

an 3
51
Currency Code Card Holder Billing

a 3
52
Personal Identification Number (PIN) Data

b 16
53
Security Related Control Information

n 18
54
Additional Amounts
LLLVAR
an .. 120
55-56
Reserved for ISO Use
LLLVAR
ans .. 999
57-59
Reserved for National Use
LLLVAR
ans .. 999
60-63
Reserved for Private Use
LLLVAR
ans .. 999
64
Message Authentication Code (MAC) Field

b 16
65
Reserved for ISO Use


66
Settlement Code

n 1
67
Extended Payment Code

n 2
68
Receiving Institution Country Code

n 3
69
Settlement Institution Country Code

n 3
70
Network Management Information Code

n 3
71
Message Number

n 4
72
Data Record
LLLVAR
ans .. 999
73
Date Action
YYMMDD
n 6
74
Credits Number

n 10
75
Credit Reversal Number

n 10
76
Debits Number

n 10
77
Debits Reversal Number

n 10
78
Transfer Number

n 10
79
Transfer Reversal Number

n 10
80
Inquiries Number

n 10
81
Authorisations Number

n 10
82
Credits Processing Fee Amount

n 12
83
Credits Transaction Fee Amount

n 12
84
Debits Processing Fee Amount

n 12
85
Debits Transaction Fee Amount

n 12
86
Credit Amount

n 15
87
Credits Reversal Amount

n 15
88
Debits Amount

n 15
89
Debits Reversal Amount

n 15
90
Original Data Elements

n 42
91
File Update Code

an 1
92
File Security Code

n 2
93
Response Indicator

n 5
94
Service Indicator

an 7
95
Replacement Amounts

an 42
96
Message Security Code

an 8
97
Amount Net Settlement

n 16
98
Payee

ans 25
99
Settlement Institution Identification Code
LLVAR
n .. 11
100
Receiving Institution Identification Code
LLVAR
n .. 11
101
File Name
LLVAR
ans .. 99
102
Account Identification 1
LLVAR
ans .. 28
103
Account Identification 2
LLVAR
ans .. 28
104
Transaction Description
LLLVAR
ans .. 999
105-111
Reserved for ISO use


112-119
Reserved for National Use


120-127
Reserved for Private Use


128
Message Authentication Code (MAC) Field

b 16


referensi :
1. https://sites.google.com/site/paymentsystemsblog/iso8583-financial-transaction-message-format
2. http://mycekinfo.blogspot.com/2013/09/data-element-iso-8583.html
3. http://tonyseno.blogspot.com/2007/12/jaringan-host-to-host-untuk-e-payment.html
4. http://lmanxp.wordpress.com/2011/04/09/parsing-iso8583/
5. http://bayurimba.wordpress.com/2011/05/14/iso-8583/
6. http://en.wikipedia.org/wiki/ISO_8583


1 komentar:

  1. bro ada contoh implementasi dalam aplikasi jadi nya? vb?

    BalasHapus

Diberdayakan oleh Blogger.

Copyright © / riffStudio

Template by : Urang-kurai / powered by :blogger