Jak od strony kodu wygląda wykonanie przelewu wbanku

0

Pod wpływem postu @Koziołek nasunęło mi się pytanie jak od strony kodu działa w banku wykonanie przelewu? W książkach jest to właśnie taki uproszczony przykład - zakładamy transakcję, odejmujemy od jednego, dodajemy do drugiego i w zależności od powodzenia commitujemy lub robimy rollback. A jak to wyglada w realnym swiecie? Móglby ktoś (może @Koziołek) jakos szerzej to opisać i wrzucić jakieś przykładowe kody jakby to mogło być realizowane?

1

jeśli jest to przelew wewnętrzny to tak to mniej więcej wygląda (+ sprawdzanie czy są środki dostępne), przy przelewach zewnętrznych w grę wchodzą zewnętrzne serwisy jak ELIXIR

8

@goodfather: to zależy od banku. W najprostszym modelu masz mniej więcej taki proces:

Po stronie obciążenia:

  • Zlecenie przelewu przez uprawnionego użytkownika/automat (np. przelewy stałe, polecenia zapłaty itp.)
  • Sprawdzenie, czy na koncie jest wystarczająca ilość środków i:
    • nie ma środków, to odrzucamy zadanie albo,
    • nie ma środków, to zakładamy blokadę i generujemy ostrzeżenie dla klienta albo,
    • są środki, to zakładamy blokadę.
  • Wygenerowanie dokumentu przelewu
  • przesłanie dokumentu do systemu rozliczeniowego i księgowego.
  • „obciążeniowe” zdjęcie blokady (zdjęcie blokady powoduje obciążenie rachunku).

Po stronie uznania:

  • Pojawia się polecenie uznania rachunku,
  • sprawdzenie, czy rachunek może być uznany (istnieje, czy są blokady itp.) → możliwe odrzucenie, co wiąże się z wygenerowaniem storno dla strony obciążonej.
  • wygenerowanie zdarzenia księgowego → uznanie konta.
  • uznanie na rachunku.

Po stronie banku w obu przypadkach potrzebne są odpowiednie operacje księgowe zgodnie z zasadą podwójnego zapisu. I tu właśnie leży „realna magia” operacji na kontach bankowych. Każda taka operacja przechodzi przez księgę rachunkową banku, gdzie pozostaje po niej ślad. Co ciekawe w księdze tej nie ma rachunków klientów, a konta księgowe, które odpowiadają „kierunkom” ruchu pieniądza. W ten sposób bank wie, ile pieniędzy przyjął i ile wysłał w świat (tzw. konta drogi). Ile było operacji przewalutowania (konta w walucie obcej) albo ile wpłacono/wypłacono w okienku (konta materiałowe).
Do tego dochodzi rekoncyliacja, czyli wzajemne sprawdzenie zapisów pomiędzy kontami księgowymi, ale też np. pomiędzy bankiem, KIR-em i NBP (tak jak ma to miejsce w ELIXIRze).

Jeżeli do czegoś miałbym to porównać, to najbliżej jest do event sourcingu. Przy czym ES jest to taki dość prymitywny mechanizm.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0