All Projects → IBM → Real Time Payments

IBM / Real Time Payments

Licence: apache-2.0
Code for a Developer Journey that uses the Financial APIs on Bluemix. This application uses this service to send and request payments.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Real Time Payments

Dash Docs
📖 The Official Dash Userguide & Documentation
Stars: ✭ 338 (+1107.14%)
Mutual labels:  fintech
Qlib
Qlib is an AI-oriented quantitative investment platform, which aims to realize the potential, empower the research, and create the value of AI technologies in quantitative investment. With Qlib, you can easily try your ideas to create better Quant investment strategies. An increasing number of SOTA Quant research works/papers are released in Qlib.
Stars: ✭ 7,582 (+26978.57%)
Mutual labels:  fintech
React Plotly.js
A plotly.js React component from Plotly 📈
Stars: ✭ 701 (+2403.57%)
Mutual labels:  fintech
Gauzy
Gauzy™ - Open-Source Business Management Platform (ERP/CRM/HRM)
Stars: ✭ 374 (+1235.71%)
Mutual labels:  fintech
Deep Finance
Datasets, papers and books on AI & Finance.
Stars: ✭ 475 (+1596.43%)
Mutual labels:  fintech
Go Finance
⚠️ Deprecrated in favor of https://github.com/piquette/finance-go
Stars: ✭ 536 (+1814.29%)
Mutual labels:  fintech
Catena
Catena is a distributed database based on a blockchain, accessible using SQL.
Stars: ✭ 302 (+978.57%)
Mutual labels:  fintech
Cloud Native Workloads On Linuxone
In this code we will show how to run open source Cloud-Native workloads on Linux One. LinuxONE is built for open source.
Stars: ✭ 13 (-53.57%)
Mutual labels:  ibmcode
Spring Boot Microservices On Kubernetes
In this code we demonstrate how a simple Spring Boot application can be deployed on top of Kubernetes. This application, Office Space, mimicks the fictitious app idea from Michael Bolton in the movie "Office Space".
Stars: ✭ 504 (+1700%)
Mutual labels:  ibmcode
Iex Api
The IEX API provides any individual or academic, public or private institution looking to develop applications that require stock market data to access near real-time quote and trade data for all stocks trading on IEX.
Stars: ✭ 683 (+2339.29%)
Mutual labels:  fintech
Akaunting
Free and Online Accounting Software
Stars: ✭ 4,599 (+16325%)
Mutual labels:  fintech
Jqdatasdk
简单易用的量化金融数据包(easy utility for getting financial market data of China)
Stars: ✭ 457 (+1532.14%)
Mutual labels:  fintech
Build Blockchain Insurance App
Sample insurance application using Hyperledger Fabric
Stars: ✭ 609 (+2075%)
Mutual labels:  ibmcode
Sequence
Immutable, scalable, and easy to use ledger service.
Stars: ✭ 360 (+1185.71%)
Mutual labels:  fintech
Elasticsearch Spark Recommender
Use Jupyter Notebooks to demonstrate how to build a Recommender with Apache Spark & Elasticsearch
Stars: ✭ 707 (+2425%)
Mutual labels:  ibmcode
Bluepic
WARNING: This repository is no longer maintained ⚠️ This repository will not be updated. The repository will be kept available in read-only mode.
Stars: ✭ 322 (+1050%)
Mutual labels:  ibmcode
Awesome Deep Trading
List of awesome resources for machine learning-based algorithmic trading
Stars: ✭ 514 (+1735.71%)
Mutual labels:  fintech
Max Image Segmenter Web App
Deploy a Deep Learning Powered "Magic Cropping Tool" using Pre-Trained Open Source Models
Stars: ✭ 29 (+3.57%)
Mutual labels:  ibmcode
Finta
Common financial technical indicators implemented in Pandas.
Stars: ✭ 901 (+3117.86%)
Mutual labels:  fintech
Blockchain guide
Introduce blockchain related technologies, from theory to practice with bitcoin, ethereum and hyperledger.
Stars: ✭ 5,897 (+20960.71%)
Mutual labels:  fintech

OBSOLETE: This code pattern is obsolete

The 3rd party zelle Real Time Payments service is not operational at the moment. This repository will not be updated. We will keep the repository available for folks interested in some of the technical details.

Read this in other languages: 日本語.

Real-Time Payments

In this code pattern, we will use a Bluemix finance service to create a web application which sends and requests payments. The Real-Time Payments service is used to manage tokens and recipients, and to initiate payments and payment requests.

The application presents an online banking experience, starting with getting a user to create an account. A user's sample bank account is created with a checking and savings account. In order for user to start making payments, the user is requested to register an email or phone number as their token for their checking or savings account. After completing this step, the user can send or request payments to another user's account using their token such as phone number or email. All user activities are recorded and can be displayed to the user.

When the reader has completed this code pattern, they will understand how to:

  • Manage Participants, Tokens and Recipients
  • Initiate Payments and PaymentRequests
  • View transaction activity

Architecture

  1. User A logs into the Demo banking portal and can link email addresses and/or phone numbers to their account, add recipients identified by their email addresses or phone numbers, and can send or request money to the recipients added by the user such as User B.
  2. All these actions are controlled through API calls by the application using the Real-time Payments service.
  3. The service uses Redis Cache and a Cloudant DDA system to store data, process request and provide security.
  4. Once the transactions are registered and completed, they can be viewed through the banking portal.
  5. User B can log in and see the money sent or request made by User A.

Included Components

Featured Technology

Deploy to IBM Cloud

Deploy to IBM Cloud

  1. Log in to your IBM Cloud account before deploying. If already logged in, then ignore this step.

  2. We can see that the app is ready to be deployed. Provide an App name to your application and ensure that the Region, Organization and Space is valid before pressing 'Deploy'.

  3. In Toolchain, the app is deployed. There are also options to edit code via eclipseIDE, git changes if required.

  4. You should see two stages pass successfully once your Deploy Stage completes

  5. To see the app and services created and configured for this pattern, use the IBM Cloud dashboard

Run the Application Locally

Follow these steps to setup and run this code pattern. The steps are described in detail below.

Prerequisite

Steps

  1. Clone the repo
  2. Create Bluemix services
  3. Configure Manifest
  4. Configure .env file
  5. Run the application

1. Clone the repo

Clone the Real Time Payments locally. In a terminal, run:

$ git clone https://github.com/IBM/real-time-payments.git

2. Create Bluemix services

Create the following services:

3. Configure Manifest

Edit the manifest.yml file in the folder that contains your code and replace my-real-time-payments-app with a unique name for your application. Additional - update the service name so they match what you have in IBM Cloud. The relevant portion of the manifest.yml file looks like the following:

declared-services:
    {Real-Time-Payments}:
      label: real-time-payments-service
      plan: real-time-payments-service-free-plan
applications:
- name: {my-real-time-payments-app}
  random-route: true
  memory: 128M
  services:
    - {Real-Time-Payments}
  env:
    NODE_TLS_REJECT_UNAUTHORIZED: 0

4. Configure .env file

Create a .env file in the root directory of your clone of the project repository by copying the sample .env.example file using the following command:

NOTE Most files systems regard files with a "." at the front as hidden files. If you are on a Windows system, you should be able to use either GitBash or Xcopy

cp .env.example .env

You will need to update the credentials with Real-time payments service access token:

# Real-time Payments
CRED_REAL_TIME_PAYMENTS_URL=https://ftm-proxy.mybluemix.net
CRED_SIMULATED_INSTRUMENT_ANALYTICS_ACCESSTOKEN=

5. Run the application

cd into this project's root directory

  • Run npm install to install the app's dependencies
  • Run runme.sh
  • Access the running app in a browser at http://0.0.0.0:8080/

Using the Application

The application emulates a bank's online web or mobile portal. Using your favorite browser, launch the application and choose "i'm new here". Enter a first name, last name, user name and any password.

If the specified user name exists, the user will be redirected to the standard login process. Otherwise the application will create two new accounts, checking and savings, by calling the 'core banking system' database, and put some money in each account. The application will also create a Participant by calling FTM's CXCParticipant (POST) API.

Assume John Doe is a customer of the bank.

The application displays a list of John's accounts - checking and savings - and the balance of each. This information is retrieved from the 'core banking system' database.

The application has an option to "send or receive money".

In use case #1, John selects "Add/Edit Your Email/Mobile #".

A list of John's tokens is displayed. This information is pulled from FTM’s CXCToken API (GET). Clicking on one of them allows John to view/edit the 'contact info', and select from a list of his accounts (pulled from the 'core banking system' database). A legal disclaimer is displayed with a checkbox to indicate acceptance. Clicking Continue produces a confirmation page and then clicking "Add email/mobile #" invokes FTM's CXCToken API (POST). John can also “Edit” the token using FTM's CXCToken API (PUT), or "Delete" the token, and after the "are you sure ?" check, FTM's CXCToken API (DELETE) is invoked.

John may "Add another email/mobile #". The 'contact info' field is free text, the 'deposit account' is a list of his accounts (pulled from the 'core banking system' database). A legal disclaimer is displayed with a checkbox to indicate acceptance. Clicking Continue produces a confirmation page and then clicking "Add email/mobile #" invokes FTM's CXCToken API (POST).

Next John selects "Add Recipients".

A list of John's recipients is displayed. This information is pulled from FTM’s CXCRecipient API (GET). Clicking on one of them allows John to view/edit the 'recipient details'. Details are pulled from FTM’s CXCRecipient API (GET). John may "Add New Recipient". The "Mobile # or Email", "First Name", and "Last Name" fields are free text. Clicking Continue produces a confirmation page and then clicking "Add recipient" invokes FTM's CXCRecipient API (POST). John can also can also “Edit” the recipient using FTM's CXCRecipient API (PUT), or "Delete" the recipient, and after the "are you sure ?" check, FTM's CXCRecipient API (DELETE) is invoked.

In use case #2. John chooses "Send".

He can either choose a recipient from a list, pulled from FTM's CXCRecipient API (GET), or enter an email/mobile # manually. The next screen prompts him for the amount (in $USD), and a list of his source accounts, pulled from FTM's CXCToken API (GET). Clicking 'continue' gives a confirmation screen and then clicking "Send" invokes FTM's CXCPayment API (POST). FTM debits the selected amount from John's account by calling back into the 'core banking system' database. FTM notifies the recipient via email (or sms) by calling a User Exit.

In use case #3. John chooses "Request".

He can either choose a recipient from a list, pulled from FTM's CXCRecipient API (GET), or enter an email/mobile # manually. The next screen prompts him for the amount (in $USD), and a list of his deposit accounts, pulled from FTM's CXCToken API (GET). Clicking 'continue' gives a confirmation screen and then clicking "Request" invokes FTM's CXCPaymentRequest API (POST). FTM notifies the requestee via email (or sms) by calling a User Exit.

John can then choose "View Activity".

A list of statii is given (Accepted, Completed, Delivered, Expired, Failed, Pending, Sent). Each of those can be chosen, and a list of payments in that status is given, pulled from CXCPayment and CXCPaymentRequest APIs (GET). Each selected transaction can be viewed, the data is pulled from the CXCPayment or CXCPaymentRequest API (GET).

John logs out of the application.

In use case #4. Billy Fish is a developer who works at the bank. He is building a portal for bank operators to monitor the operations of the payments hub.

Using a web browser, he logs onto the BlueMix Console and navigates to the FTM for Real Time Payments APIs. His user name, password and API Key are verified by the API Proxy which maintains a secret username and password to use with FTM’s REST API.

He can explore FTM’s core read-only APIs and he chooses to view inboundTransactions (GET).

Find more information on FTM for Real Time Payments api calls here.

Billy logs out of BlueMix.

Troubleshooting

  • To troubleshoot your Bluemix application, use the logs. To see the logs, run:
cf logs <application-name> --recent

License

This code pattern is licensed under the Apache Software License, Version 2. Separate third party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 (DCO) and the Apache Software License, Version 2.

Apache Software License (ASL) FAQ

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].