QuickPay dla Trans.eu: mikroserwis do automatycznego finansowania zobowiązań finansowych

About the project

Client:

Trans.eu to jedna z największych giełd transportowych w Europie, łącząca dziesiątki tysięcy spedytorów i przewoźników. QuickPay to usługa działająca wewnątrz ekosystemu Trans.eu, umożliwiająca firmom transportowym szybkie finansowanie faktur, bez czekania na termin płatności od kontrahenta. Serwis pośredniczy w komunikacji z zewnętrznymi systemami faktoringowymi (m.in. TransCash) i automatyzuje cały proces: od weryfikacji wiarygodności kontrahenta, przez złożenie wniosku faktoringowego, po wygenerowanie dokumentów cesji wierzytelności.

Project goal:
Automatyczne finansowanie faktur dla użytkowników Trans.eu
Przewoźnicy na Trans.eu czekają na zapłatę od spedytorów 30, 60, czasem 90 dni. QuickPay skrócił tę drogę do minimum: użytkownik składa wniosek faktoringowy bezpośrednio z poziomu platformy, a system automatycznie przechodzi przez weryfikację kontrahenta, wycenę i cesję wierzytelności, bez wychodzenia do zewnętrznych serwisów, bez ręcznego wypełniania dokumentów.
Integracja z zewnętrznymi systemami faktoringowymi
Zapewnienie niezawodnej, gwarantowanej komunikacji z systemem TransCash z mechanizmem potwierdzającym, że każda operacja dotrze do celu mimo niskiej dostępności zewnętrznego systemu.
Obsługa alternatywnych systemów finansowania
Objęcie jednym mikroserwisem trzech, różnych form finansowania: Quickpay, Bonabanco i SafePay, dostępnych dla użytkowników platformy Trans.eu.
Automatyzacja generowania dokumentów cesji wierzytelności
Eliminacja ręcznej obsługi dokumentacji: każdy zaakceptowany wniosek faktoringowy skutkuje automatycznie wygenerowanym i przekazanym dokumentem cesji.
From challenge

Key Challenges

1

Integracja z zewnętrznym systemem faktoringowym o niskiej dostępności

Zewnętrzny system TransCash nie gwarantował wysokiej dostępności. W praktyce oznaczało to ryzyko, że dokumenty aplikacyjne, wnioski czy dane klientów mogły nie dotrzeć do systemu w czasie rzeczywistym. Każda utracona wiadomość to realne ryzyko finansowe dla użytkownika platformy. Konieczne było zbudowanie mechanizmu „watchdog", który śledzi status każdej operacji i gwarantuje jej ostateczne wykonanie, bez ingerencji użytkownika.

2

Niezawodna komunikacja między systemami finansowymi

QuickPay musiał działać jako rzetelny pośrednik między Trans.eu a zewnętrznymi serwisami finansowymi, przekazując informacje o zmianach w firmach klientów do systemu windykacyjnego przez REST API, a odbierając zdarzenia za pośrednictwem brokera wiadomości. Każda niespójność danych między systemami mogła skutkować błędną oceną wiarygodności kontrahenta lub błędnie przetworzonym wnioskiem.

3

Złożoność architektury domenowej w środowisku produkcyjnym

Obsługa finansowania faktur to proces wieloetapowy: weryfikacja kontrahenta, wycena, złożenie wniosku, generowanie dokumentów cesji, potwierdzenie. Każdy etap musi być odporny na awarie i obsługiwać scenariusze częściowego wykonania. Architektura oparta na DDD i CQRS wymagała precyzyjnego podziału odpowiedzialności na każdym etapie implementacji.

4

Zapewnienie obserwowalności i jakości w systemie finansowym

Serwis obsługiwał procesy finansowe, gdzie błąd lub brak potwierdzenia operacji był bezpośrednio odczuwalny przez klientów biznesowych. Konieczne było wdrożenie pełnego monitoringu (Grafana, Kibana, Consul), systemu testów (jednostkowych, integracyjnych, pact testów), a także automatycznego generowania i wersjonowania dokumentacji API (OpenAPI, AsyncAPI) bezpośrednio w repozytorium kodu.

Kluczowe wymagania funkcjonalne i niefunkcjonalne

Funkcjonalne

  • API do obsługi i zarządzania wnioskami finansowymi użytkowników
  • Weryfikacja wiarygodności kontrahentów przez systemy faktoringowe
  • Automatyczne generowanie dokumentów cesji wierzytelności
  • Powiadamianie systemu windykacyjnego o zmianach w firmach klientów przez REST API
  • System reprocessingu - ponowne przetwarzanie poleceń, które nie zostały wykonane
  • Obsługa alternatywnych systemów finansowania: QuickPay, Bonabanco, SafePay
  • Frontend umożliwiający użytkownikom składanie wniosków i śledzenie statusu finansowania

Niefunkcjonalne

  • Odporność na niską dostępność zewnętrznych systemów faktoringowych
  • Monitorowanie wydajności i zdrowia systemu (Grafana, Kibana, Consul)
  • Automatyczna dokumentacja API generowana i przechowywana w repozytorium GIT
  • Pełne pokrycie testami: jednostkowymi, integracyjnymi, pact testami (PactBroker)
  • Infrastruktura na AWS (S3, RDS, ECS) - konteneryzacja i skalowalność
  • Migracje schematu bazy danych zarządzane przez Liquibase
Through the solution

Architektura mikroserwisowa oparta na DDD i CQRS

fireup.pro dostarczyło zespół, który zaprojektował i wdrożył QuickPay jako samodzielny mikroserwis w architekturze domenowej. Rdzeń systemu zbudowany w Java ze Spring Boot odpowiadał za cały cykl życia wniosku faktoringowego.

    Backend (Java/Spring Boot)

    Zaprojektowanie architektury i podział domenowy (DDD)- wyraźne granice między weryfikacją kontrahentów, obsługą wniosków, generowaniem dokumentów i komunikacją zewnętrzną. Implementacja wzorca CQRS separującego operacje zapisu i odczytu. Integracja z RabbitMQ jako brokera wiadomości. QuickPay subskrybował zdarzenia o zmianach w firmach klientów i publikował powiadomienia do systemu windykacyjnego. System reprocessingu obsługujący polecenia, które nie powiodły się przy pierwszej próbie, z logiką ponowień i alertowaniem. Migracje schematu baz danych zarządzane przez Liquibase, ORM przez Hibernate, baza MariaDB.

      Infrastruktura i obserwowalność

      Wdrożenie na AWS z wykorzystaniem ECR (rejestr kontenerów), ECS (orkiestracja) i S3 (przechowywanie dokumentów). Monitoring aplikacji i zdrowia systemu w Grafana, Kibana i Consul. Pełen zestaw testów: jednostkowe, integracyjne i pact testy weryfikujące kontrakty między serwisami (PactBroker). Mechanizm automatycznego generowania dokumentacji OpenAPI i AsyncAPI z zapisem wersji w repozytorium GIT.

        Frontend

        Interfejs użytkownika zbudowany w React.js z TypeScript umożliwiał składanie wniosków o finansowanie, śledzenie statusu i przeglądanie historii operacji.

          QA i automatyzacja testów

          Testy automatyczne oparte na Selenium weryfikujące przepływy użytkownika end-to-end.

            Metodyka pracy

            Zespół pracował w bliskiej integracji z wewnętrznym zespołem Trans.eu. Każdy PR przechodził code review z naciskiem na poprawność domenową i odporność na awarie, szczególnie istotne w kontekście operacji finansowych. Architektura była projektowana iteracyjnie, z przemyślanym podziałem odpowiedzialności między moduły.

              To the success

              Technological outcomes

              Mikroserwis wdrożony na produkcję

              QuickPay został zintegrowany z ekosystemem Trans.eu i udostępniony użytkownikom platformy. Funkcje micro-faktoringu działają produkcyjnie, obsługując realne wnioski finansowe przewoźników i spedytorów.

              Niezawodna integracja z TransCash

              Mechanizm watchdog i system reprocessingu wyeliminował ryzyko utraty operacji przy niskiej dostępności zewnętrznego systemu faktoringowego. Każde polecenie jest śledzone do momentu ostatecznego potwierdzenia.

              Pełna obserwowalność systemu finansowego

              Monitoring w Grafana, Kibana i Consul daje pełny wgląd w wydajność i stan systemu. Błędy są wykrywane aktywnie, nie przez zgłoszenia użytkowników.

              Dokumentacja API jako kod

              Automatycznie generowana dokumentacja OpenAPI i AsyncAPI jest wersjonowana w repozytorium, każda zmiana kontraktu jest utrwalona i śledzona.


              Project team
              Abstract background
              Robert Pietrzyński
              Daniel Jendroska
              Łukasz Sobisiak
              Błażej Pelczar
              Łukasz Morawiec
              Michał Trela

              Robert Pietrzyński

              Senior Backend Developer

              Projektowanie architektury mikroserwisu i podziału domenowego (DDD). Implementacja logiki biznesowej i mechanizmów komunikacji. Code review i nadzór nad jakością kodu.

              Tech stack

              Java

              Spring boot

              Amazon S3

              Amazon ECR

              Amazon ECS

              Maria DB

              HIBERNATE

              RabbitMQ

              Liquibase

              Your success is our success

              See how we can build a technological advantage for your company together.

              Book free consultation!

              We have a team that truly knows its stuff — we'll help you find a solution that works.

              Conclusions & recommendations

              W systemach finansowych niezawodność ważniejsza niż szybkość.

              Zewnętrzny system faktoringowy dostępny w 80% to za mało, gdy brak potwierdzenia operacji oznacza realną stratę finansową dla klienta. Mechanizm watchdog i system reprocessingu to nie opcja, lecz wymóg projektowy dla każdej integracji z systemem zewnętrznym przetwarzającym pieniądze.

              DDD i CQRS opłacają się w domenach o wysokiej złożoności.

              Proces faktoringowy to wiele stanów, aktorów i reguł biznesowych. Architektura domenowa z wyraźnymi granicami kontekstów pozwoliła na bezpieczną iterację i rozszerzanie funkcjonalności bez rosnącego chaosu w kodzie.

              Dokumentacja API jako artefakt, nie dodatek.

              Automatyczne generowanie OpenAPI i AsyncAPI z zapisem w GIT sprawiło, że kontrakty między serwisami były zawsze aktualne i weryfikowalne przed wdrożeniem. W środowisku mikroserwisowym to podstawa bezpiecznego rozwoju.

              Monitoring finansowy wymaga aktywnego podejścia.

              Cicha awaria (polecenie, które nie rzuca wyjątku, ale nie dociera do celu) jest groźniejsza niż jawny błąd. Grafana, Kibana i Consul dały zespołowi aktywny wgląd w stan systemu, zamiast czekania na zgłoszenia klientów.

              Background

              Time for your project.

              Turn your ideas into real solution and...

              ...Get in touch with us!

              Your vision, our realization
              Want to discuss the details?
              Let us know!

              I agree to the processing of my personal data by Fireup Software ...