Most of the Banking System have ATM Booth for limited banking service. Services are like money withdraw, balance query, mini statement, fund-transfer etc. Banking Software should interfacing with that ATM system.
I have got an oppertunity to work with Banking Solution and my modulte was ATM interfacing. To fullfill that requirement I learn many things. I want to share it.
ATM devices that I worked used ISO 8583 message protocol for communication. So I need to understand first what the protocol, how look like the message pattern is!
Total Message was 128 bytes hexadecimal value. First 4 bit used for Message Type Identification. next 64 bit for bit pattern, and next was the actual message.
If you need to detail then go to online and collect specification.
I wrote a windows service for interct with atm host. There I use tcp socket. Actually it was a host to host communication service. One side is ATM boot's host another side in Bank is my service. ATM Host side is called Acquire and My service is called Issuer.
Suppose One person want to withdraw money from ATM booth. First he/she punch the card and pin number. ATM Host authenticate it then request to my service for update db. My service execute query to banking db for confirmation that the account has sufficiant balance for fullfill that request. If yes then send success signal to atm host otherwise send specific error code like not sufficient balance, account closed or something else.
When day-end process(well-known process in banking system) will run that time atm transaction will temporary store in difference place and after finish that process it will marge to main db.
Some Important Issues raised when working on that
1) After Day-end how ATM transaction will effect in profit calculation.
2) How transaction will be handled.
3) How reversal process will be executed.
4) How exception will be handled.
5) How load testing will be done.
and many more...........