Name Last Update
alembic Loading commit data...
contrib Loading commit data...
iso8583_web Loading commit data...
.gitignore Loading commit data...
CHANGES.txt Loading commit data...
MANIFEST.in Loading commit data...
README.rst Loading commit data...
alembic.ini.tpl Loading commit data...
development.ini Loading commit data...
iso8583.ini Loading commit data...
msgfmt.sh Loading commit data...
production.ini Loading commit data...
pytest.ini Loading commit data...
requirements.txt Loading commit data...
setup.py Loading commit data...

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.