Daemon ISO8583
Daemon ISO8583 ini bisa sebagai client maupun server. Berikut ini cara pemasangannya. Nama paketnya mengandung web karena ia bisa dihubungi melalui web service JsonRPC untuk melakukan inquiry, payment, dan reversal.
Pemasangan
Buat Python virtual environment:
$ python3 -m venv ~/env
Awali dengan memasang paket ebcdic yang dibutuhkan ISO8583:
$ ~/env/bin/pip install -r requirements.txt
Pemasangan yang tidak otomatis ini agar tidak menimbulkan kegagalan. Lanjut:
$ git clone https://git.opensipkd.com/sugiana/iso8583-web $ ~/env/bin/pip install -e 'iso8583-web[testing]'
Saatnya mencoba:
$ cd iso8583-web $ ~/env/bin/pytest iso8583_web/test-conf.py
Pastikan tidak ada pesan failure
. Bila ada warning
abaikan saja. Kini
salinlah file konfigurasi:
$ cp iso8583.ini test-pemda.ini
Sesuaikan isi section [host_bjb]
. Anda bisa menambahkan host lainnya
dengan menambahkan awalan host_
pada section.
Jalankan daemon-nya, anggap sebagai pemda (biller):
$ ~/env/bin/iso8583 test-pemda.ini
Anda akan mendapat pesan seperti ini:
2019-02-07 20:41:30,180 INFO Connect to 127.0.0.1 port 10002 2019-02-07 20:41:30,180 ERROR [Errno 111] Connection refused
Biarkan ini aktif. Buka konsol lain. Sekarang kita buat simulator BJB:
$ cp iso8583.ini test-bjb.ini
Ubah file test-bjb.ini
pada baris:
[host_bjb] ip = 127.0.0.1 port = 10002 listen = false streamer = bjb_with_suffix
menjadi:
[host_pemda] ip = 127.0.0.1 port = 10002 listen = true streamer = bjb_with_suffix
Simpan, lalu jalankan:
$ ~/env/bin/iso8583 test-bjb.ini
Log File
Untuk menyimpan log ke dalam file lakukan perubahan pada file konfigurasi (INI
file). Pada section [handlers]
baris keys
tambahkan file
sehingga
menjadi:
[handlers] keys = console, file
Pada section [logger_root]
baris handlers
tambahkan file
sehingga
menjadi:
[logger_root] level = INFO handlers = console, file
Setelah section [handler_console]
tambahkan section [handler_file]
seperti ini:
[handler_file] class = FileHandler args = ('/home/sugiana/tmp/pemda.log', 'a') level = NOTSET formatter = generic
Lalu jalankan lagi daemon seperti di atas.
JsonRpc
Ini adalah web service untuk memudahkan pembuatan client. Misalkan kita ingin
membuat aplikasi teller bank. Pada test-bjb.ini
aktifkan section
[web]
:
[web] port = 7000
Kemudian restart daemon-nya. Setelah echo established dengan daemon pemda lakukan echo request dengan cara:
$ ~/env/bin/python contrib/web-client.py
Hasilnya menjadi seperti ini:
2019-04-22 10:47:03.625 Request: {'method': 'echo', 'params': [{'host': 'pemda'}], 'jsonrpc': '2.0', 'id': 0} 2019-04-22 10:47:03.938 Response: {'jsonrpc': '2.0', 'id': 0, 'result': {'code': 0, 'message': 'OK', 'data': {'7': '0422104703', '11': '104703', '39': '00', '70': '301'}}} thread 0 0.3129305839538574 detik
Jika ingin stress test silakan gunakan opsi -c 10
yang berarti 10 kali
bersamaan.
JsonRpc Log File
Biasanya tahap awal pembuatan web client terjadi kesalahan yang tampak di
client namun tak nampak di log web server. Untuk mengatasi hal ini lakukan
penambahan di file konfigurasi section [loggers]
menjadi seperti ini:
[loggers] keys = root, iso8583_web, jsonrpc
Lalu tambahkan section [logger_jsonrpc]
berikut ini:
[logger_jsonrpc] level = DEBUG handlers = console, file qualname = pyramid_rpc.jsonrpc
Kemudian jalankan lagi daemon-nya. Misalkan client memanggil method eco
yang seharusnya echo
maka di log akan tampil seperti ini:
2019-02-21 14:00:47,135 DEBUG handling id:0 method:eco 2019-02-21 14:00:47,135 DEBUG json-rpc method not found rpc_id:0 "eco"
Semoga dipahami.