Microservice-based online payment system for customers and merchants using RESTful APIs and message queues

Overview

DTUPay

  1. Introduction
  2. Microservices
  3. REST
  4. Payment-service
  5. Token-service
  6. Account-service
  7. Report-service
  8. Client application
  9. OpenAPI
  10. Installation
  11. Contributors

Introduction

This repository contains the source code and deliverables from Group 11 for the course 02267 Software Development of Web Services held in January 2021 at the Technical University of Denmark, DTU.

The system consists of four microservices called Payment-service, Token-service, Account-service and Report-service. A REST interfaces giving an outside interface for the system exists as well. The Client application is used for executing end-to-end tests.

Microservices

The microservices are running in the virtual-machine given by DTU Compute. The base URL for the virtual-machine is g-11.compute.dtu.dk. The main REST interface is listening on port 8080, so for accessing it you would go to g-11.compute.dtu.dk:8080. The report service used for managerial purposes is found on port 8083. You can access the Swagger UI by appending /swagger-ui at the end of the URL.

REST

The REST project holds the unified REST interface for the system. Essentially, all it does it take in a HTTP request and then map it to a respective RabbitMQ message to the internal microservices.

Payment-service

The purpose of the payment-service is to execute money transfers with the FastMoney bank, both regular payments and refunds. This will be triggered by a message sent from the REST project.

Token-service

Token-service is used by the customer application to request tokens and by the merchant to ask for one of these tokens on behalf of the customer during a payment situation. Therefore token-service functionality is also triggered in payment situations when it has to validate the token that is given for the payment.

Account-service

The account service keeps track of the user accounts that exist in DTUPay. It interacts with the 3rd party FastMoney BankService who controls the bank accounts. It is essentially used for user management of DTUPay.

Report-service

The report service is used to generate reports for the customers, merchants and managers of the system. It does this by always listening for messages that indicate whether a payment has succeeded or not, and then records that such that it can be used for reporting later. Report-service has its own REST interface that managers can use and generate these reports from.

Client-application

This project attempts to emulate an actual usage of the system as seen from the client. It contains both simulations for the customer application and the merchant application. It uses these applications in the end-to-end tests.

OpenAPI

To fetch the OpenAPI specification for the system, you can execute the following CURL command. Change the port to get the specification for the respective service. 8080 for the unified REST interfance and 8083 for the report service. These specifications also exist in the root of the project as openapi-spec-dtupay-api.yml and openapi-spec-management-api respectively.

curl -o openapi-spec.yml g-11.compute.dtu.dk:8080/openapi

Installation

To build and install the system locally using docker, execute the following script. Docker and docker-compose is required.

build_and_run.sh

Essentially what this script will do is first package all of the services, build their Docker containers, and then use docker-compose to configure to the containers for you and run them. You can use the mvn_package_all.sh script only building the executable binaries if desirable.

Contributors

  • Tobias Rydberg (s173899)
  • Sebastian Lindhard Budsted (s135243)
  • Daniel Larsen (s151641)
  • Emil Kosiara (s174265)
  • Troels Lund (s161791)
  • Kasper L. Stilling (s141250)
You might also like...

MemQ is a new PubSub system that augments Kafka

MemQ is a new PubSub system that augments Kafka

MemQ: An efficient, scalable cloud native PubSub system MemQ is a new PubSub system that augments Kafka at Pinterest. It uses a decoupled storage and

Dec 30, 2022

Open data platform based on flink. Now scaleph is supporting data integration with seatunnel on flink

scaleph The Scaleph project features data integration, develop, job schedule and orchestration and trys to provide one-stop data platform for develope

Jan 3, 2023

SMS app based on QKSMS. DISCLAIMER: This project is intended for my own use. No issues are accepted

Messages Messages is an open source replacement to the stock messaging app on Android. DISCLAIMER: Unlike most other projects, this project is for my

Dec 16, 2022

Kafka example - a simple producer and consumer for kafka using spring boot + java

Kafka example - a simple producer and consumer for kafka using spring boot + java

Feb 18, 2022

Real Time communication library using Animated Gifs as a transport™

gifsockets "This library is the websockets of the '90s" - Somebody at Hacker News. This library shows how to achieve realtime text communication using

Dec 17, 2022

Examples using libp5x

Examples for libp5x libp5x is a modularized fork of Processing used inside PraxisLIVE. Based on Processing v3.5.3, it fully supports Java 11+ and the

May 17, 2021

FLiP: StreamNative: Cloud-Native: Streaming Analytics Using Apache Flink SQL on Apache Pulsar

FLiP: StreamNative: Cloud-Native: Streaming Analytics Using Apache Flink SQL on Apache Pulsar

StreamingAnalyticsUsingFlinkSQL FLiP: StreamNative: Cloud-Native: Streaming Analytics Using Apache Flink SQL on Apache Pulsar Running on NVIDIA XAVIER

Dec 19, 2021

A modular and portable open source XMPP client library written in Java for Android and Java (SE) VMs

Smack About Smack is an open source, highly modular, easy to use, XMPP client library written in Java for Java SE compatible JVMs and Android. A pure

Dec 28, 2022

Firehose is an extensible, no-code, and cloud-native service to load real-time streaming data from Kafka to data stores, data lakes, and analytical storage systems.

Firehose - Firehose is an extensible, no-code, and cloud-native service to load real-time streaming data from Kafka to data stores, data lakes, and analytical storage systems.

Dec 22, 2022
Owner
Daniel Larsen
Analyst at Netcompany. Software engineer, tinkerer and guitarist.
Daniel Larsen
Efficient reliable UDP unicast, UDP multicast, and IPC message transport

Aeron Efficient reliable UDP unicast, UDP multicast, and IPC message transport. Java and C++ clients are available in this repository, and a .NET clie

Real Logic 6.3k Jan 9, 2023
Fast and reliable message broker built on top of Kafka.

Hermes Hermes is an asynchronous message broker built on top of Kafka. We provide reliable, fault tolerant REST interface for message publishing and a

Allegro Tech 742 Jan 3, 2023
An example Twitch.tv bot that allows you to manage channel rewards (without requiring a message), and chat messages.

Twitch Bot Example shit code that can be used as a template for a twitch bot that takes advantage of channel rewards (that dont require text input) an

Evan 3 Nov 3, 2022
An Open-Source, Distributed MQTT Message Broker for IoT.

MMQ broker MMQ broker 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序。 MMQ broker 完整支持MQTT V3.1 和 V3.1.1。 安装 MMQ broker 是跨平台的,支持 Linux、Unix、macOS

Solley 60 Dec 15, 2022
Evgeniy Khyst 54 Dec 28, 2022
Apache Pulsar - distributed pub-sub messaging system

Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API. Learn more about Pulsar at https:

The Apache Software Foundation 12.1k Jan 4, 2023
HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.

HornetQ If you need information about the HornetQ project please go to http://community.jboss.org/wiki/HornetQ http://www.jboss.org/hornetq/ This file

HornetQ 245 Dec 3, 2022
A high available,high performance distributed messaging system.

#新闻 MetaQ 1.4.6.2发布。更新日志 MetaQ 1.4.6.1发布。更新日志 MetaQ 1.4.5.1发布。更新日志 MetaQ 1.4.5发布。更新日志 Meta-ruby 0.1 released: a ruby client for metaq. SOURCE #介绍 Meta

dennis zhuang 1.3k Dec 12, 2022
System Of E-Commerce

SystemOfECommerce System Of E-Commerce Simulation of Login the System With Google Account E-mail Verification Simulation Operation of Register To Syst

Barış Aslan 4 Jan 30, 2022
EventStoreDB is the database for Event Sourcing. This repository provides a sample of event sourced system that uses EventStoreDB as event store.

Event Sourcing with EventStoreDB Introduction Example Domain Event Sourcing and CQRS 101 State-Oriented Persistence Event Sourcing CQRS Advantages of

Evgeniy Khyst 53 Dec 15, 2022