Distribued Computing Week 8
Please go through the requirements and let me know if you can handle this in the next 24 hours.
PURPOSE OF ASSIGNMENT
In this coding assignment, you will implement a prototype distributed payment processing system based on the designs you have created in the previous weeks.
PAYMENT PROCESSING SYSTEM DESCRIPTION
Have you ever stopped to consider what happens when you’re shopping online? In between entering your credit card information and the money getting charged to your account is a very complex set of interactions. During this class, we will explore a simplified payment processing system that does exactly this. We’ll create a design for it and provide sample implementations for some of the components.
Let’s take a look at some of the details of a payment processing system.
FORMS OF PAYMENT
To keep this simple we’ll assume that we only accept credit cards for payment.
FRONTEND
The happy shopper needs some way to enter their payment details.
ONLINE STORE
The storefront needs an interface to the processing system where they can enter the shoppers’ details, get confirmation that they can charge the card, and collect the money afterwards.
CREDIT CARD PAYMENTS
Paying by credit card, whether online or in a physical shop, follows a two-step process.
When your card is first run, it performs an “authorization”. This authorization takes the credit card details and the amount requested and sends them to the credit card company. The company then looks up the card and verifies whether or not the payment will succeed. A status code (OK or some kind of error code) is returned, along with an authorization code if the status is OK.
Later on (e.g. once an hour, once a day) all of these authorizations are collected up into a single batch and sent as “payment requests” to the credit card company. A payment request contains the same information as the initial authorization along with the authorization code that was returned. The credit card company will respond with statuses for each payment request and all the money for those requests that succeeded is transferred into the store’s bank account.
PAYMENT PROCESSING SYSTEM
The system needs to implement credit card processing as described above.
CREDIT CARD COMPANY
We shall assume we use a single credit card processor and that processor provides us with an interface for performing authorizations in real time and batch payment requests.
ASSIGNMENT INSTRUCTIONS
The system you implement should have the following pieces:
The Client
This will be the web browser. Create a simple web page called “payment.html”. You can use the “form.html” page as a starting point to create a form. The payment.html page should prompt the user to enter their credit card information (do not enter real data here!) and it should submit it to the payment server with the path “/make-payment” as a POST request.
The UI Server
The UI Server should simply be a web server that accepts requests with the /make-payment path and processes them. To do this it should call the processing server using a JSON string. It should then return success or failure to the client based on the response from the processing server.
The Processing Server
This server can have any form you want (including being an HTTP server as we’ve discussed). It should accept a JSON string with credit card information and decide whether it wants to accept it as payment or not, and respond to the UI server accordingly. If you wanted to get more interesting you could keep track of payments for each card and include a maximum total spend or something of that form.
Please keep focused on the goal of this assignment, which is to gain experience in the principles of distributed systems, rather than creating something perfect.
You must submit a zip file containing all of your source code (no executable code) and a 1,000-2,000 word write-up that describes your design and implementation, clearly explains how to run it, and covers problems you encountered and their solutions.
When you complete the assignment, please share your Assignment Experience in this
anonymous survey (Links to an external site.)
.
Assignment Focus
Assignment Focus
The implementation, as we’ve discussed all term, is focused on the merchant’s system. After all, the user will need to already have a UI device or application to connect to the Merchant’s site; and the Merchant will need to connect to already-existing systems with already-existing interfaces.
Therefore, please interpret the UI server as the Merchant’s web server front end; and please interpret the Processing Server as the Merchant’ssubsystem that connects to the external credit card processing system to request approvals and batch settlements.
You are welcome to use our external processing service or modify it if you wish. You can also place that service inside the Merchant’s subsystem if you segregate and mark it with an appropriate comment.
The details of this external credit card processing system are not of primary importance.
It is important to deal with customer input; form a request for authorization; and capture or report the transaction. Information may be exchanged between the merchant system and the credit card processor using JSON or XML.
The focus of the “more interesting” part is the focus on the next use case, that of the Settlement phase.
As the assignment instructions caution, “Please keep focused on the goal of this assignment, which is to gain experience in the principles of distributed systems, rather than creating something perfect.”
FORMATTING AND STYLE REQUIREMENTS
1.
Submissions should be between 1,000 words and 2,000 words in length.
1. Refer to the
UCOL Format and Style Requirements (Links to an external site.)
on the Course Homepage, and be sure to properly cite your sources using
Turabian Author-Date style citations (Links to an external site.)
.
1.
1.
1.
1.
1.
1.
1.
Rubric
Writing Rubric
Writing Rubric | ||
Criteria |
Ratings |
Pts |
This criterion is linked to a Learning OutcomeAnswers the Question Demonstrates an understanding of the requirements and purpose of the assignment, and addresses the topics specified at the appropriate level of detail. |
40.0 pts |
|
This criterion is linked to a Learning OutcomeConcepts and Content Uses relevant content, including external sources if appropriate, to illustrate mastery of key ideas. The material submitted forms a complete document that addresses the assignment’s focus. |
80.0 pts |
|
This criterion is linked to a Learning OutcomeGrammar, Mechanics, and Style Engaging and consistent style and voice, nearly free of errors in grammar, spelling and mechanics, and adheres to University College format and style requirements, including Turabian Author-Date citation style. |
20.0 pts |
|
Total Points: 140.0 |