Skip to content

Instantly share code, notes, and snippets.

Last active Dec 2, 2020
What would you like to do?
Sanyam Goel | Google Summer of Code - 2018 | Mifos Initiative

Google Summer of Code 2018 - Mifos Initiative

Payment Gateway Service a.k.a Middleware

Payment Gateway Service is act as a middleware which interacts with the different Mobile Money Providers(MMP's) and Fineract to manage transactions and selecting vendors for the ease of the User and the client.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.


What things you need to install the software and how to install them

Java >= 1.8
Apache Maven
IDE: preferable: IntelliJ IDEA
Lombok Plugin


A step by step series of examples that tell you how to get a development env running

Installation on UBUNTU


sudo apt-get update
sudo apt-get upgrade
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
Java Installation: sudo apt-get install oracle-java8-installer
Check version: java -version


Maven Installation: sudo apt-get install maven
Check version: mvn -version


Installation: sudo apt-get install mysql-server
Check version: mysql --version

IntelliJ Idea:


Lombok Plugin:

Install Lombok plugin:

Database setup:

sudo  mysql -u root -p
create database `payment-gateway`;


  1. Project Setup on Git:
    • Fork:

    • Clone:

    • Main Development Branch: payment-gateway-core-functionality

  2. Import into IDE
  3. change branch:

    git checkout payment-gateway-core-functionality

  4. mvn clean install
  5. Run file as Java Application -

Payment Gateway API's Documentation:


Work Done:

  1. Middleware generic architecture which can be used to integrate different Mobile money providers like Beyonic, MPesa, Razorpay
  2. Payment flows from API's
    Main Slug:


  3. Get All vendors API's


  4. Get All active vendors API's


  5. Get vendor by particular ID


  6. Get all Transactions with headers to filter search result: nextTransactionId, size, isTotalCountRequired, vendorIdList, clientPhoneNumber, clientAccountNumber


    curl -X GET \
    http://localhost:8080/payment-gateway/api/v1/transactions/search \
    -H 'clientPhoneNumber: +80099999111'
  7. Get Transaction by Transaction ID


  8. Beyonic Integration for Collections, Collection Request and Payment API's
  9. Use Cases:
    1. Mobile/Online Banking
      1. Loan Repayment from Mobile Money Account
      2. Savings Deposit from Mobile Money Account
    2. Mobile Wallet
      1. Loan Repayment
      2. Savings Deposit
      3. View list of mobile money transactions

Work Left:

  1. Peer to Peer transfer model
  2. Interacting with Fineract API's

Deployment on Local Machine:

See installation steps on Ubuntu

Built With

  • Maven - Dependency Management



See also the list of contributors who participated in this project.


This project is licensed under the Mozilla Public License 2.0 License - see the file for details


  1. To create payment or in case of LOAN DISBURSAL

  2. To create payment or in case of LOAN REPAYMENT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment