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.
Pindahlah ke direktorinya:
$ cd iso8583-web
Buat Python virtual environment:
$ python3 -m venv ../env
Pasang paket yang dibutuhkan:
$ ../env/bin/python setup.py develop-use-pip
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. Kemudian lakukan uji coba:
$ ../env/bin/pip install -e '.[testing]' $ ../env/bin/pytest iso8583_web/test-conf.py
Pastikan tidak ada pesan failure
. Bila ada warning
abaikan saja.
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,179 INFO Web server listen at 0.0.0.0:6543 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/bank-teller.py
Hasilnya menjadi seperti ini:
{'id': 0, 'jsonrpc': '2.0', 'result': {'code': 0, 'data': {'11': '163105', '39': '00', '7': '0221163106', '70': '301'}, 'message': 'OK'}}
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.