Java代写 | An Online Payment Service


1. Introduction

This assignment is about the design and implementation of a web-based, multi-user payment service using Java Enterprise Edition (Java EE) technologies. The system is a much simplified version of PayPal. Through a JSF-based web interface, users should be able to send money to other registered users (e.g. using their registered email address as their unique identifier), request money from other registered users and manage their own account (e.g. look at their recent transactions). Super-users (i.e. admins) should be able to access all user accounts and transactions. Optionally, you will deploy your application on the cloud (e.g. on Amazon AWS, Microsoft Azure, or any similar infrastructure).

After successfully completing the assignment, you will have demonstrated that you can:

  • design and implement user interfaces using Java Server Faces
  • design and implement business logic using enterprise Java beans (EJBs)
  • design and implement a secure multi-user system


2. Project Description

Online payment services, such as PayPal, allow users to connect their online accounts to their bank accounts, debit and credit cards. In such systems, users are usually able to transfer money from their bank accounts to the online account, receive payments to this account from other users, push money from the online account to their bank accounts etc.

For simplicity, we will assume that, for this project, all registered users start with a specific amount of money (e.g. £1000 pounds) and no connections to bank accounts exist.

Note: this is pretended money and no connection to real sources of money should exist.

Each user has a single online account whose currency is selected upon registration. A user can select to have their account in GB Pounds, US dollars or Euros. In that case, the system should make the appropriate conversion to assign the right initial amount of money (e.g. if the baseline is £1000, then the initial amount should be 1000 * GBP_to_USD_rate US dollars).

A user can instruct the system to make a direct payment to another user. If this request is accepted (i.e. the recipient of the payment exists and there are enough funds), money is transferred (within a single Java EE transaction) to the recipient immediately. A user should be able to check for notifications regarding payments in their account.

A user can instruct the system to request payment from some other user. A user should be able to check about such notifications for requests for payment. They can reject the request, or, in response to it, make a payment to the requesting user.

Users can access all their transactions, that is, sent and received payments and requests for payments as well as their current account balance.

An administrator can see all user accounts and all transactions.

Currency conversion must be implemented by a separate RESTful web service (see Section 3.3). The actual exchange rates will be statically assigned (hard-coded) in the RESTful service source code.


3. System Architecture

3.1. Web Layer

The web layer consists of a set .xhtml (facelets) pages through which users and administrators interact with the web application.

Users should be able to:

  • View all their transactions
  • Make direct payments to other registered users
  • Request payments from registered users

Administrators should be able to see:

  • user accounts
  • all payment transactions

and register new administrators

CDI Beans must not access any persistent data from the database. They should delegate all business logic to the service layer.

3.2. Service Layer

The service layer consists of a set of Enterprise Java Beans (EJBs) that implement the business logic for the system. EJBs should support Java EE transactions so that data integrity is preserved. You should utilise container-managed transactions. That is, your code doesn’t need to cope with opening, committing or roll-backing transactions. You will only need to annotate your EJBs with the appropriate transaction attributes (or leave the default behaviour, if appropriate).

The service layer is responsible for accessing the data (persistence) layer. Persistence (JPA) entity managers must be injected into your EJBs. Access to persistent data must only take place through these entity managers.

3.3. Data Layer

The data layer consists of a relational database and JPA entities. To simplify deployment and configuration you must use JavaDB as your Relational DataBase Management System (RDBMS). JavaDB is an RDBMS that is installed with GlassFish.

Your data model should be written as a set of persistence entities (JPA). Upon deployment, JPA will create the actual relational database tables for you. Access to the database must always take place through manipulating JPA entities. Do not access the database directly using JDBC.

3.3. Web Services

You must implement a REST Service that is accessed by the service layer. The service will be deployed on the same server but accessed from the service layer in the standard way (i.e. through HTTP).

A currency conversion RESTful web service that responds only to GET requests. The exported resource should be named conversion, in a path like the following:


The RESTful web service should return an HTTP response with the conversion rate (currency1 to currency2) or the appropriate HTTP status code if one or both of the provided currencies are not supported.

e.g. GET baseURL/conversion/{currency1}/{currency2} HTTP/1.1 should return a status ok response with a very simple response (e.g. in JSON that says that 1.00 GBP = 1.21217 EUR). Writing a REST client should be straightforward. Check the following links for more information:

3.4. Security

The online payment service is a multi-user web application. A user must be logged-in in order to interact with the system. Users should not be able to see other users’ information nor access pages and functionality for administrators. Administrators access their own set of pages, through which can have access to all users information. Users and administrators should be able to logout from the web application.

You will need to implement and support:

  • Communication on top of HTTPS for every interaction with users and admins
  • Form-based authentication (simple using the file realm, in a jdbcRealm where users can subscribe – full marks will be given to the second approach (see Section 4.))
  • Logout functionality
  • Declarative security to restrict access to web pages to non-authorised users
  • Declarative security to restrict access to EJB methods


本网站支持淘宝 支付宝 微信支付  paypal等等交易。如果不放心可以用淘宝交易!

E-mail:  微信:itcsdx