The JavaPurse
sample application consists of two components, a JavaPurse
applet and a JavaLoyalty
applet.
The JavaPurse
applet demonstrates a simple electronic cash application. The applet is selected and initialized with various parameters such as the Purse ID, the expiration date of the card, the Master and User PINs, maximum balance, and maximum transaction. Transaction operations perform the actual debits and credits to the electronic purse. If a configured loyalty applet is assigned for the CAD performing the transaction, JavaPurse
communicates with it to grant loyalty points. In this sample, JavaLoyalty
is the provided loyalty applet.
A number of transaction sessions are simulated where amounts are credited and debited from the card. In an additional session, transactions with intentional errors are attempted to demonstrate the security features of the card.
The JavaLoyalty
applet is a minimalistic loyalty applet that interacts with the JavaPurse
applet and demonstrates the use of shareable interfaces. The shareable JavaLoyaltyInterface
is defined in a separate library package, com.sun.javacard.SampleLibrary
.
JavaLoyalty
applet is registered with JavaPurse
when a Parameter Update APDU command with an appropriate parameter tag is executed, and when the AID part of the parameter corresponds to the AID of the JavaLoyalty
applet. The applet contains a grantPoints
method. This method implements the main interaction with the client. The grantPoints
method implementing the JavaLoyaltyInterface
is requested when the first two bytes of the CAD ID in a request by a JavaPurse
transaction correspond to the two bytes of CAD ID in the corresponding Parameter Update APDU command.
JavaLoyalty
maintains the balance of loyalty points. The JavaLoyalty
applet contains methods to credit and debit the account of points and to get and set the balance.