Payment systems are now available everywhere and everyone interacts with these systems every day. There are different types of transactions you can make, SALE, REFUND, Pre-Authorization, and VOID.
- SALE: means to buy something and its price will be deducted from your bank account.
- REFUND: this means that you will return something and wants your money back to your bank account.
- Pre-Authorization: means holding an amount of money from your account, e.g Hotel reservation.
- VOID: this means canceling the transaction, e.g if the seller entered the wrong amount.
You are required to implement the SALE transaction only by simulating the card, terminal(ATM), and the server.
- Development environment preparation.
- Implement the card module.
- Implement the terminal module.
- Implement the server module.
- Implement the application.
- Testing the application.
- Create modules folders.
- Create .c and .h file for each module.
- Add header file guard.
- Create the main.c file.
- Fill in card.h file with functions' prototypes and typedefs.
- Implement getCardHolderName function.
- Implement getCardExpiryDate function.
- Implement getCardPAN function.
- Fill in terminal.h file with functions' prototypes and typedefs.
- Implement getTransactionDate function.
- Implement isCardExpried function.
- Implement gatTransactionAmount function.
- Implement isBelowMaxAmount function.
- Implement setMaxAmount function.
- Fill in server.h file with functions' prototypes and typedefs.
- Implement server-side accounts' database.
- Implement server-side transactions' database.
- Implement recieveTransactionData function.
- Implement isValidAccount function.
- Implement isAmountAvailable function.
- Implement saveTransaction function.
- Fill in application.h file with functions' prototypes.
- Implement appStart function.
- Transaction approved user story.
- Exceed the maximum amount user story.
- Insufficient fund user story.
- Expired card user story.
- Invalid card user story.
As a bank customer have an account and has a valid and not expired card, I want to withdraw an amount of money less than the maximum allowed and less than or equal to the amount in my balance, so that I am expecting that the transaction is approved and my account balance is reduced by the withdrawn amount.
As a bank customer have an account, that has a valid and not expired card, I want to withdraw an amount of money that exceeds the maximum allowed amount so that I am expecting the transaction declined.
As a bank customer have an account and has a valid and not expired card, I want to withdraw an amount of money less than the maximum allowed and larger than the amount in my balance so that I am expecting that the transaction declined.
As a bank customer have an account and a valid but expired card, I want to withdraw an amount of money so that I expect that the transaction declined.
As a bank customer have an account and has a valid and not expired but stolen card, I want to block anyone from using my card so that I am expecting that any transaction made by this card is declined.