Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/manasmalla/paypal-clone-casestudy
PayPal (Payment Management System): A simple payment management system, inspired by PayPal, in the exact language in which the fin-tech giant started out.
https://github.com/manasmalla/paypal-clone-casestudy
academic-project case-study java payment-gateway payments paypal
Last synced: about 1 month ago
JSON representation
PayPal (Payment Management System): A simple payment management system, inspired by PayPal, in the exact language in which the fin-tech giant started out.
- Host: GitHub
- URL: https://github.com/manasmalla/paypal-clone-casestudy
- Owner: ManasMalla
- License: mit
- Created: 2024-04-01T17:57:09.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-01T18:36:12.000Z (9 months ago)
- Last Synced: 2024-04-20T14:19:26.127Z (8 months ago)
- Topics: academic-project, case-study, java, payment-gateway, payments, paypal
- Language: Java
- Homepage:
- Size: 22.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Case Study
### PayPal
#### Payment Management System
A simple payment management system, inspired by PayPal, in the exact language in which the fin-tech giant started out.
This CLI based project integrates sign-in functionality, blocks more than 3 wrong password attempts including the following:
1. Instantiate Transaction
2. View Transaction History
3. View Account Details
4. View Card Details
5. View Bank Details
6. View Balance
7. View Currency DetailsA few classes that are encapsulated for the project:
1. `Currency`: A custom interface that defines and holds the data about the currency, like the:
i. `currencyCode` (String): The international code used to identify the currency, like for eg. INR for Indian Rupee
ii. `currencySymbol` (String): The international symbol used along with the currency like ₹ for Indian Rupee
iii. `rupeeEquivalent` (double): The present-day Indian Rupee equivalent of the currency
2. `CardType` is an enum class which differentiates if the card is debit (`.DEBIT`) or credit (`.CREDIT`)
3. `Card`: A custom class that holds confidential information regarding a banking card used for online transactions. It orchestrates the following details:
i. `cardNumber` (String): The sixteen digit card number passed as a text String object
ii. `cardHolderName` (String): The card holders name
iii. `expiryDate` (String): The expiry date of the banking card in the format (MM/YYYY)
iv. `cvv` (String): The 3 digit Card Verification Value of the banking card (Confidential)
v. `cardType` (CardType): Indicates whether the card is a debit card or a credit card
4. `Bank`: A custom class that stores the publicly available details of a bank, that includes the following:
i. `bankName` (String): The public registered name of the entity bank
ii. `ifscCode` (String): The Indian Financial System code of the operating bank, used to instantiate transactions
iii. `branchName` (String): The name of the branch of the bank entity is operating from
5. `User`: A custom class that encapsulates the details of the user who has logged in.
i. `id` (String): The uniquely identified username of the user
ii. `name` (String): The official name of the user, as per governement ID proof
iii. `email` (String): The verififed email address of the user, used for all official communication.
iv. `password` (String): The password used for logging into the service, created by the user at the time of account opening
v. `bank` (Bank): The bank account of the user that is linked to his/her/their PayPal account, and is to be used for all transactions
vi. `accountNumber` (String): The bank account number of the linked bank account
vii. `balance` (double): The current available balance of the user (in currency units)
viii. `currency` (Currency): The currency in which the specified user operates.
ix. `card` (Card): The banking card linked to the user's bank and PayPal account, to be used for transactional purposes
6. `Payment`: a basic class to encapsulate the transaction related properties, methods and functions.
i. `paymentId` (String): A random unique identifier (UUID) that is used to tag a particular transaction
ii. `amount` (double): the actual amount to be transferred from the sender to the recepient, to be entered in the currency (Currency)
iii. `currency` (Currency): the currency being used to handle the amount, used by the sender
iv. `convertedCurrency` (Currency): the currency being used by the recepient
v. `recepient` (User): the user who is recieving the funds, i.e, the user whose bank account is going to credited with the funds in the `convertedCurrency`
vi. `sender` (User): the user who is sending the funds, i.e, the user whose bank account is going to debited with the funds in the `currency`
vii. `approved` (boolean): a boolean flag to identify is the transaction is compliant
> [!TIP]
>
> A few areas that could be ventured in the future include:
>
> 1. New user registration
> 2. checking transaction compliance
> 3. Update card details
> 4. Update bank details
> 5. Update credits to account
> 6. Update the user's default currency