/iso8583-server

A sample ISO8583 server built using Rust (based on crate iso8583_rs)

Primary LanguageRustApache License 2.0Apache-2.0

A demo ISO8583 server built using crate iso8583_rs (https://crates.io/crates/iso8583_rs)

Please see https://github.com/rkbalgi/iso8583_rs and https://crates.io/crates/iso8583_rs for additional documentation/reference

C:/Users/rkbal/.cargo/bin/cargo.exe run --color=always --package iso8583-server --bin iso8583-server
   Compiling iso8583_rs v0.1.10
   Compiling iso8583-server v0.1.0 (C:\Users\rkbal\IdeaProjects\iso8583-server)
    Finished dev [unoptimized + debuginfo] target(s) in 3.28s
     Running `target\debug\iso8583-server.exe`
current-dir: C:\Users\rkbal\IdeaProjects\iso8583-server
spec-file: .\src\sample_spec.yaml
14:09:04 [INFO] starting iso server for spec SampleSpec at port 6666
14:10:22 [DEBUG] (2) iso8583_rs::iso8583::server: Accepted new connection .. Ok(V4(127.0.0.1:52307))
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::server: reading data for mli 81 
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::server: received request: 

|31343230 f0242000 00000000 80000001| 1420.$ ......... 00000000
|00000000 00000001 00000000 31323132| ............1212 00000010
|33343536 37383931 30313030 34303030| 3456789101004000 00000020
|30303030 30303030 30313939 37373935| 0000000001997795 00000030
|38313232 3034f8f4 f0313233 34353637| 812204...1234567 00000040
|38|                                  8                00000050
                                                       00000051

 len = 0
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: computed header value for incoming message = 1420
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: parsing field : message_type
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: parsing field : bitmap
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - pan
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - proc_code
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - amount
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - stan
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - expiration_date
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - country_code
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - key_mgmt_data
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::bitmap: parsing field - reserved_data
14:10:22 [DEBUG] (3) iso8583_server: parsed incoming request - message = "1420 - Reversal" successfully. 
 : parsed message: 
 --- 
 
-Field-              : -Position-  : -Field Value- 
message_type         :             : 1420 
bitmap               :             : f02420000000000080000001000000000000000100000000 
pan                  :    002      : 123456789101 
proc_code            :    003      : 004000 
amount               :    004      : 000000000199 
stan                 :    011      : 779581 
expiration_date      :    014      : 2204 
country_code         :    019      : 840 
key_mgmt_data        :    096      : 1234 
reserved_data        :    160      : 5678  
 ----

14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 2: 123456789101
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 3: 004000
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 4: 000000000199
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 11: 779581
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 14: 2204
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 19: 840
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::iso_spec: echoing .. 96: 1234
14:10:22 [DEBUG] (3) iso8583_server: stan = 779581
14:10:22 [DEBUG] (3) iso8583_rs::iso8583::server: iso_response : 
|31343330 f0242000 02000000 00000001| 1430.$ ......... 00000000
|00000000 31323132 33343536 37383931| ....121234567891 00000010
|30313030 34303030 30303030 30303030| 0100400000000000 00000020
|30313939 37373935 38313232 3034f8f4| 01997795812204.. 00000030
|f0343030 31323334|                   .4001234         00000040
                                                       00000048
 
 parsed :
 --- 
-Field-              : -Position-  : -Field Value- 
message_type         :             : 1430 
pan                  :    002      : 123456789101 
proc_code            :    003      : 004000 
amount               :    004      : 000000000199 
stan                 :    011      : 779581 
expiration_date      :    014      : 2204 
country_code         :    019      : 840 
action_code          :    039      : 400 
key_mgmt_data        :    096      : 1234  
 --- 

14:10:22 [DEBUG] (3) iso8583_rs::iso8583::server: request processing time = 2 millis

You can find a Java TcpClient implementation here - https://github.com/rkbalgi/tcptester/blob/master/src/test/java/TcpClientTest.java#L39 or a Rust TcpClient here - https://github.com/rkbalgi/iso8583_rs/blob/master/src/iso8583/test.rs#L86