by Chris Borowski, Software Developer • @chriseborowski

Modern logo featuring an outline of a traditional card wallet with a purple background representing WalletOne.

WalletOne: a command line interface (CLI) app with a virtual credit card management system written in Java.

Introduction

Recently, I have been working on developing WalletOne, a command line interactive tool for working with virtual credit cards. WalletOne is a fast and robust virtual credit card management system written in Java that allows users to easily create, manage, and delete virtual credit cards. This blog post explains the software development process, providing an in-depth look at WalletOne’s software architecture and its key features as a modern financial management tool.

This blog post introduces WalletOne, its software architecture, key functionalities, providing sample Java code snippets as well as a list of potential future enhancements and improvements. To navigate the contents, please use the table of contents below or the navigation menu on the right-hand side (hover to activate).

Table of Contents

Virtual Credit Cards: An Innovative Solution for Modern Times

With the steady growth of digital transactions and online shopping, the virtual cards market is on the rise as well. Major financial companies like Visa, MasterCard, and Capital One use virtual cards to provide a more secure and seamless shopping experience to its customers. The virtual credit cards market is predicted to reach $1.3 trillion in worth by 2032 as the total number of virtual card transactions reaches 175 billion by 2028. As a result, security measures become “one of the key responsibilities of SWEs working in payments engineering,” writes Soumya G., Senior Software Engineer at PayPal.

While traditional credit cards can be limiting, and sharing card information online poses security risks, virtual credit cards are the much needed remedy. Virtual credit cards — or, more specifically, virtual credit card numbers — are strings of randomly generated numbers that are provided by your card issuer and linked to your credit card account. One advantage of virtual cards is that you don’t need to enter your actual, physical card information every time you make a purchase online. Instead, you can generate a new virtual credit card for a new transaction and disable or delete the card afterwards. Luckily, modern financial technology allows for virtually unlimited creation of new cards that can service one-time or ongoing transactions.

Software Architecture and Functionalities

WalletOne is a Java-based application that enables users to create, edit, access, and delete virtual credit cards through a command-line interface (CLI). With an interactive menu of options, users quickly and effortlessly manage their virtual credit cards by selecting numbers from 0 to 9. In its software architecture, WalletOne applies object-oriented programming (OOP) principles: abstraction, encapsulation, inheritance, and polymorphism, with a clear separation of concerns across multiple classes. The division into separate classes promotes modularity, allowing for easy code maintenance and future expansion of the management system.

The application’s architecture is structured around the following key classes, each responsible for specific functionalities within the virtual credit card management system:

  1. WalletOneApp: The main application class that handles user interaction.
  2. CardManager: Manages the creation, storage, and retrieval of virtual cards.
  3. Card: Represents a virtual credit card with its associated properties and methods.
  4. User: Represents a user of the system.
  5. Account: An abstract base class for financial accounts.
  6. BinList: Provides a list of valid Bank Identification Numbers (BINs) for card generation.