We developed a card payment agent that runs on store PCs separately from POS and kiosk screens, plus a central system for the transaction ledger and remote cancellations. Screens pay through a single local WebSocket with no payment logic of their own, while the agent handles approvals, cancellations, reversals, reconciliation and recovery after failures.
Challenge
No kiosk or POS should have to integrate payments on its own, and a dropped connection or crashed program must never leave a double charge or a transaction with an unknown result.
Technology
- .NET 10
- C#
- ASP.NET Core
- WebSocket
- SQLite
- Java 21
- Spring Boot
- PostgreSQL
- Kafka
What and&end did
- Server & CMS
- Central system for the transaction ledger and remote cancellations, shared single sign-on (OIDC)
- Integration
- Store-PC payment agent (state machine and transaction journal for approvals, cancellations, reversals and reconciliation, crash recovery), payment daemon integration, serialised card-reader commands, a shared payment protocol for POS and kiosks