ISO8583 - Τραπεζικό πρωτόκολλο
Σύνοψη
Πληρώνουμε με κάρτα ή κάνουμε ανάληψη χρημάτων από το ATM. Ανησυχούμε για ορθότητα της συγκεκριμένης συναλλαγής ? Μάλλον όχι. Ίσως να ανησυχούμε για το αν κάποιος τρίτος μας κλέψει την κάρτα και το pin και μας χρεώσει τις δικές του αγορές. Αν κάνουμε αγορές στο internet επιβάλλεται να χρησιμοποιούμε προπληρωμένη κάρτα «φορτωμένη» με ποσό ίσο με την αγορά μας.
Το πρωτόκολλο ISO8583 (http://en.wikipedia.org/wiki/ISO_8583) είναι ένα τραπεζικό πρωτόκολλο που χρησιμοποιείται όταν κάνουμε οικονομικές συναλλαγές σε ATM, EFT, web banking κτλ και καθορίζει
1. Τις δύο άκρες της επικοινωνίας. Το ένα άκρο (τερματικό) που εκκινεί την συναλλαγή (EFT, ATM ή μια εφαρμογή σε ένα PC) και το δεύτερο άκρο, την τράπεζα (τον processor για την ακρίβεια). Το κανάλι επικοινωνίας μπορεί να είναι μια απλή τηλεφωνική γραμμή συνδεδεμένη σε ένα modem και μια σειριακή θύρα ή μια TCP/IP γραμμή.
2. Κάθε τερματικό έχει δικό του μοναδικό κωδικό TerminalID και τον κωδικό του εμπόρου MerchantID, ο λογαριασμός του οποίου θα πιστωθεί από την αγορά με αντίστοιχη χρέωση του λογαριασμού της κάρτας. Στα ATMs η συναλλαγή ανάληψης αφορά μόνο ένα λογαριασμό.
3. Κάθε τερματικό υπάρχει δηλωμένο (λογικά) και στην τράπεζα. Κάθε κίνηση στην μία άκρη αντιγράφεται στο λογικό τερματικό στη τράπεζα.
4. Την μορφή και το περιεχόμενο των μηνυμάτων που ανταλλάσσονται. Η μορφή των μηνυμάτων είναι μια απλή λεπτομέρεια.
5. Το τερματικό που εκκινεί την συναλλαγή είναι και ο απόλυτος κριτής της επιτυχίας ή της αποτυχίας της. Επιτυχημένη συναλλαγή είναι αυτή που ο client έχει αποστείλει μήνυμα και έχει λάβει και καταγράψει την απάντηση του Server. Η συναλλαγή μπορεί να είναι επιτυχημένη επικοινωνιακά αλλά με αρνητική απάντηση ως προς το ερώτημα (αν πχ δεν υπάρχουν χρήματα για ανάληψη).
6. Χειρισμό κάθε αποτυχίας επικοινωνίας από το τερματικό.
Σε κάθε TCP/IP συναλλαγή εκτελούνται τα εξής βήματα.
- Σύνδεση του τερματικού με τον server (τράπεζα). Η αδυναμία σύνδεσης σημαίνει αδυναμία εκτέλεσης της συναλλαγής και δεν είναι σφάλμα επικοινωνίας.
- Αποστολή ISO8583 μηνύματος από το τερματικό στο server
- Λήψη αιτήματος από τον server.
- Επεξεργασία αιτήματος από τον server.
- Αποστολή της ISO8583 απάντησης από τον server στον client
- Παραλαβή απάντησης από τον client.
- Αποσύνδεση του server με την ολοκλήρωση της αποστολής της απάντησης.
- Επεξεργασία απάντησης από τον client.
Σε κάθε σημείο μπορεί η επικοινωνία να διακοπεί. Μπορεί η απάντηση να έχει παραληφθεί από το τερματικό αλλά για οποιοδήποτε λόγο (διακοπή ρεύματος) να μην ολοκληρώθηκε η καταγραφή και η επεξεργασία της.
Μετά από κάθε αποτυχημένη επικοινωνία, το τερματικό προσπαθεί να αντιλογίσει (reverse) την τελευταία αποτυχημένη συναλλαγή. Η άλλη πλευρά (τράπεζα) γνωρίζει ποια είναι η τελευταία συναλλαγή του συγκεκριμένου τερματικού που έχει λάβει. Και πράττει ανάλογα. Ακυρώνει την τελευταία συναλλαγή ή αγνοεί την εντολή και επιστρέφει επιτυχία.
Τα μηνύματα αντιλογισμού δεν αντιλογίζονται αλλά επαναλαμβάνονται μέχρι να επιτύχουν.
7. Την τήρηση αρχείου συναλλαγών στο τερματικό (batch) και κλείσιμο του batch, διαδικασία που εκτελείται συνήθως στο τέλος της ημέρας. Για κάθε επιτυχημένη συναλλαγή αυξάνεται ένα μετρητής συναλλαγών και ένας αθροιστής αξιών. Το κλείσιμο του batch αποστείλει στον server τα σύνολα (τον αριθμό και την αξία των συναλλαγών) που γνωρίζει το τερματικό. Ο server τα συγκρίνει με τα σύνολα που τηρεί για το συγκεκριμένο τερματικό. Αν τα σύνολα συμφωνούν, το batch κλείνει επιτυχώς, ανοίγει ένα νέο άδειο και η διαδικασία επαναλαμβάνεται.
Για κάποιο λόγο τα σύνολα ανάμεσα στα δύο άκρα δεν συμφωνούν. Τότε το τερματικό, το σημείο δηλαδή που έγιναν οι συναλλαγές και υπάρχουν αποδεικτικά vouchers, στέλνει εξαρχής όλες τις συναλλαγές του batch.
Η διαδικασία τελειώνει όταν συμφωνήσουν τα σύνολα.
Κρίσιμη εφαρμογή
Στο modbus πρότεινα μερικές επαναλήψεις στη αποστολή του μηνύματος, για να ανταλλάξουμε δεδομένα σε περίπτωση σφαλμάτων.
Στο ISO8583 oι απαιτήσεις επιβάλουν τον χειρισμό σφαλμάτων στην διαδικασία.
1. Τηρούνται δύο αντίγραφα των συναλλαγών, στο τερματικό και στη τράπεζα.
2. Σε οποιοδήποτε σφάλμα επικοινωνίας η συναλλαγή αντιλογίζεται (διαγράφεται).
3. Η συναλλαγή αντιλογισμού επαναλαμβάνεται έως ότου πετύχει.
4. Στο κλείσιμο batch ελέγχονται τα σύνολα των συναλλαγών του τερματικού και των συναλλαγών της τράπεζας.
5. Σε διαφωνία συνόλων το τερματικό "αφέντης" στέλνει ξανά τις συναλλαγές.
Συνεχίζεται…