Keyple-based advanced ticketing demonstrator

To illustrate an advanced implementation of the Keyple Java middleware for Calypso-based ticketing systems, CNA has released a full ticketing demonstrator under the Eclipse Public License version 2.0.

Ticketing Service & repositoryKeyple integrationSmartcard readers involvedOptimization targets
Calypso cardCalypso SAM
Remote sales & reloadingdistributed Calypso applications
  • server with ticketing intelligence, based on Keyple
  • light client, Keyple-based or not
Integrated on the distributed client sideIntegrated on the distributed server side
  • Limit the number of network messages between client and server
  • Enable client to be hosted on any light terminal without Keyple dependency
Validationstandalone Calypso terminal application based on KeypleLocally embeddedLocally embeddedLimit the number of card and SAM commands during the card transaction
Control

Stand-alone validation and control terminals

The architecture of validation and control tools is very similar, with only the ticketing transaction differing:

  • For validation, the terminal checks that a valid ticket is present, records an event and authorizes access.
  • For control, the terminal checks that a recent validation event is valid. The ticketing data format is just an example defined for demonstration purposes.
Terminal applicationLanguageOSSupported devices
ValidationKotlinAndroidAny Android device having
  • a contactless reader
  • & a SAM reader
Control

These demos can be installed on various Android terminals such as Coppernic, Famoco, Flowbird, or Bluebird using the plugins provided by CNA.

Validation scenario:

  • An autonomous validator on Android-based ticketing terminal that seamlessly starts a secure session when a contactless card is detected.
  • The machine checks the last transport event and the available ticketing contracts.
  • If access is granted, a new event is written.

Control scenario:

  • A hand-held inspection terminal on Android portable terminal that allows an operator to check the content of a card.
  • The application verifies the validity of the last transport event regarding the current time and location.
  • Finally, it displays the result.

Remote sales and reloading distributed service

This demo requires a client/server environment:

  • On the server side, the back-office includes a Java server application to process the ticketing sale and manage the Calypso secure session to reload contracts in remote cards. The server manages a pool of Calypso SAM using the PC/SC plugin and the Calypso SAM resource manager.
  • On the client side, any terminal with a contactless reader provides the means to a customer to make the ticket purchase. The Calypso card commands are fully managed by the back-office ticketing server using the Keyple Distributed solution.
Terminal applicationLanguage / folderOSSupported devices
Sales / Reloading server
(Keyple based)
JavaWindows, Linux, macOSJava Server with PC/SC SAM readers
Sales / Reloading clientKeyple-basedKotlinAndroidAndroid NFC phone
Keyple-lessKotlin
.NET C#WindowsWindows PC with a PC/SC reader
  • Kotlin Multiplatform
  • & Compose Multiplatform
Windows, Linux, macOS, Android, iOS
  • any NFC mobile
  • any PC with a PC/SC reader