Scan Pay System Development
Traditional checkout systems and popular self-checkout systems which invlove a central point of service can become exponentially slow as the number of customers trying to checkout increases.
Overview
Project statement
Scan Pay is a proof of concept system that I am developing as a response to the inefficiency of the traditional checkout system.
Although services that allow customers to scan and pay for products exist, these services are usually offered by banks to their clients or by a single store, the problem with this approach is that the customer will either need to bank with a certain bank or install an app for each store which offers this.
My Solution
My solution is a platform that functions similar to an e-commerce service by allowing users to add items into their virtual cart as they add them to their physical cart, once they are done shopping, they can pay using their smartphone without having to enter any physical queues.
Basic Functions
- Allow businesses to set up stores
- Allow businesses to add products to an individual store
- Allow businesses to receive payments
- Allow customers to scan a product barcode to add an item to their shopping cart using their smartphone
- Allow a customer to add multiple products to their cart
- Allow a customer to pay for products in their cart using their smartphone
Development
Architecture
The system is built using Three-Tier architecture. The tiers for the application are as follows:
- Database Tier: SQL, Azure
- Server/API Tier: ASP.NET Web API, Azure
- Frontend: 2 x Android, Java
Using this architecture allows for all processing to be performed away from the client application making it near impossible for the user to manipulate processed data. This is especially important for this system as it will prevent users from changing product prices on their end and having the application process false prices.
Database
The database was developed using the following:
- Language: SQL
- Using: MS SQL Server
- Deployment: Azure (not yet deployed)
The database is used to store the following:
- User and Business information
- Invoice and Shopping history
- Product Information
The database makes use of stored procedures to do the following:
- Populate tables (User/Business information, product information)
- Create invoices
- User authentication
- Update/Delete records
Server [Github]
The server is developed using the following:
- Language: C#
- Framework: ASP.NET Core Web API
- Libraries: Stripe API, QR Code Generator
- Deployment: Azure (not yet deployed)
The server performs the following functions:
- Receive HTTP requests and filter user input
- Retrieve information from the database send the filtered results to the frontend
- Write filtered user inputs to the database
- Generate and manage user sessions
- Communicate with the Stripe API to perform checkout
- Generate invoice QR codes using the QR Code Generator API
Frontend
The frontend is made up of a business management application and a customer application. both applications are developed using the following:
- Language: Java
- Platform: Android
- External Tools: zxing-android-embedded (barcode scanner)
The core features of the customer application are as follows:
- The user scans a store QR Code to gain access to a shopping cart specific to an individual store
- Once on the shopping cart page, the user can scan an instore product's barcode (provided the store owner has uploaded the product to the platform)
- When the user scans a product, it is written to a cart table in the database.
- Once the cart is full, the user can checkout.
- Checkout functions are done in the database and the customer will receive a message indicating whether the transaction is successful. If successful, they will receive an invoice
The core features of the business application are as follows:
- The business can create one or multiple stores.
- When a store is created, the user will receive a QR code which will be used to identify the individual store enabling the system to correctly link products purchased to the store
- Once a store has been created, the user can add products to the store by scanning the barcode or manually entering the barcode numbers as well as entering product information like name, price, and description
- The user can edit product information and put products on sale.
- The user can view the total stock left based on the products that have been bought.