• Stars
    star
    217
  • Rank 182,446 (Top 4 %)
  • Language
    Kotlin
  • License
    Other
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Reference Android code integrating TransferWise's services into a (Demo) Bank App

Bank Integrations Reference Implementation (Android)

The reference implementation for designing the international payments experience with the TransferWise API.

This implementation is based on the following documents:

Have a look at Bank Integrations Reference Implementation (Backend) for a reference backend implementation.

Overview

The reference application consists of three main modules:

  • app module: simulates a demo banking application and doesn't contain any TransferWise reference code
  • transferwise module: implementation of all code and screens to integrate the TransferWise for Banks API
  • dynamicform module: reusable library that renders dynamic forms returned by the TransferWise for Banks API

App module

This module doesn't contain any TransferWise reference code and shouldn't be reused.

A very basic module that simulates a bank application and integrates the TransferWise component.

 

Learn more

πŸ‘‰ Learn more about the App module.

TransferWise module

This module can be copied to bootstrap your integration of the TransferWise for Banks API. Note that only the full flow can easily be reused, not the different steps independently.

This module represents the reference implementation of the TransferWise for Banks API and contains all screens to handle an international payment flow.

Navigation graph

Learn more

πŸ‘‰ Learn more about the TransferWise module and its architectural choices.

Dynamic forms module

This module can reused to render dynamic forms returned by the TransferWise for Banks API. While it is fully tested and has a simple, generic API, its interface needs more polish to distribute it as a Maven artifact (e.g. thread safety, review contracts,...).

Some endpoints in the TransferWise API return a dynamic UI that needs to be rendered to the user.

These endpoints are:

Rendering such a dynamic UI is quite challenging and therefore, the reference implementation contains a separate module dynamicforms that handles all that complexity for you.

Learn more

πŸ‘‰ Learn more about the Dynamic forms module and how to integrate it.

Development setup

The banks reference requires Android Studio version 3.6 or higher. The latest version can be downloaded from here.

This project uses the Gradle build system:

  • To build this project, use ./gradlew assembleDebug
  • To run all unit tests, use ./gradlew testDebugUnitTest

For more resources on learning Android development, visit the Developer Guides at developer.android.com.

Getting started

The banking reference implementation can be tested both offline and online.

Offline

Checkout the source code and install the application on an Android device. Make sure to check the "Enable offline demo mode" toggle and you can go through most of the flow without needing to set up an instance of the reference backend.

Limitations:

  • All requests will be simulated to be successful, so you won't see any backend failures
  • The simulated customer already has a TransferWise account connected, so the anonymous quote (step 2) and sign up flow (steps 3) are skipped
  • All server responses are static (e.g. entering a different quote amount won't change the receiving amount)

Online

Checkout the source code and provide your own values of the following templated variables (found here)

  • DEFAULT_SERVER_URL -> where the Bank Integrations Reference Implementation (Backend) is running
  • loginUrl -> the reference example is pointing to TransferWise's Sandbox API. Change this to our production environment before making the code available to customers.
  • LOGIN_CLIENT_ID -> unique Id identifying your product (Please contact [email protected] to get started.)

Code style

This project uses ktlint, provided via the spotless gradle plugin.

Please run ./gradlew spotlessApply before merging pull requests to format all code and apply the appropriate copyright headers.

License

Copyright 2019,2020 TransferWise Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

pipelinewise

Data Pipeline Framework using the singer.io spec
Python
629
star
2

sequence-layout

A vertical sequence UI component for Android
Kotlin
475
star
3

wise-pizza

A library to find and visualise the most interesting slices in multidimensional data
Jupyter Notebook
98
star
4

tw-tasks-executor

Java
71
star
5

idempotence4j

Lightweight library for handling idempotent actions
Java
58
star
6

actions-next-bundle-analyzer

Github Action that analyses page bundle sizes from a Next.js build
TypeScript
57
star
7

pipelinewise-target-snowflake

Singer.io Target for Snowflake - PipelineWise compatible
Python
51
star
8

public-api-postman-collection

A Postman collection for exploring and testing the TransferWise public API
44
star
9

pipelinewise-tap-postgres

Singer.io Tap for PostgreSQL - PipelineWise compatible
Python
41
star
10

prometheus-envoy-dashboards

40
star
11

ng-browser-info

AngularJS service that gives you a collection of methods for knowing more about your client browser
JavaScript
37
star
12

banks-reference-backend

Reference Backend code integrating TransferWise's services for a (Demo) Bank App
Java
20
star
13

pipelinewise-target-postgres

Singer.io Target for PostgreSQL - PipelineWise compatible
Python
20
star
14

pipelinewise-transform-field

Singer.io transformation component between Taps and Targets - PipelineWise compatible
Python
19
star
15

pipelinewise-tap-mysql

Singer.io Tap for MySQL - PipelineWise compatible
Python
18
star
16

neural-lifetimes

User behavior prediction from event data.
Python
15
star
17

pipelinewise-target-s3-csv

Singer.io Target for CSV on S3 - PipelineWise compatible
Python
15
star
18

openbanking-client

Java client for using the UK Open Banking API
Java
14
star
19

digital-signatures-examples

Go
14
star
20

pipelinewise-target-redshift

Singer.io Target for Amazon Redshift - PipelineWise compatible
Python
12
star
21

formatting

VanillaJS library for formatting different things.
TypeScript
12
star
22

cloudflare-prometheus-exporter

Prometheus exporter powered by Cloudflare GraphQL API.
Python
10
star
23

tw-tkms

Java
9
star
24

oomie

Maps system OOM messages to Kubernetes pods, emitting k8s events.
Go
8
star
25

pipelinewise-singer-python

Writes the Singer format from Python https://singer.io - Pipelinewise compatible
Python
8
star
26

wise-topic

LLM-only topic extraction and classification
Python
8
star
27

public-widgets

Wise Public Widgets
7
star
28

pipelinewise-tap-s3-csv

Singer.io Tap for CSV files on S3 - PipelineWise compatible
Python
7
star
29

wise-platform-samples

Code samples to get started with common Wise API use cases
TypeScript
7
star
30

pipelinewise-tap-kafka

Singer.io Tap for Kafka - PipelineWise compatible
Python
7
star
31

pipelinewise-tap-snowflake

Singer.io Tap for Snowflake - PipelineWise compatible
Python
7
star
32

url-locale

URL localisation
Java
6
star
33

cicada

Cicada scheduler
Python
5
star
34

pipelinewise-tap-mongodb

Singer.io Tap for MongoDB - PipelineWise compatible
Python
5
star
35

spiffe-kafka-talk

Resources for Levani and Jon's talk about SPIFFE and Kafka
HTML
5
star
36

payment-components

Angular components (directive-controller-view-styles bundles as it is Angular 1) for payment steps in TransferWise products.
CSS
5
star
37

actions-pr-checker

Github Action to check PR title/description/labels.
Shell
5
star
38

webpack-translations-plugin

JavaScript
5
star
39

release-to-github-with-changelog

JavaScript
4
star
40

tw-experimentation

AB testing tool
Jupyter Notebook
4
star
41

historic-rates-line-chart

JavaScript
3
star
42

tw-sketch-library

Sketch library of TW UI components for use with Invision's craft sketch plugin
3
star
43

pipelinewise-tap-google-analytics

Singer.io Tap for Google Analytics - PipelineWise compatible
Python
3
star
44

spire-k8s-registrar

Go
3
star
45

acorn

mission days 2021
Java
3
star
46

interview

Java
2
star
47

mitosis

A/B split filter
Groovy
2
star
48

tw-graceful-shutdown

Graceful Shutdown System.
Java
2
star
49

hisel

Feature selection tool based on Hilbert-Schmidt Independence Criterion
Jupyter Notebook
2
star
50

crypto

Crypto helper modules
Go
2
star
51

tw-context

Java
2
star
52

tlint

Simple tool for linting of configurations files
Go
2
star
53

sanitize-branch-name

A Github action that determines the branch name, then sanitizes it of any forward slashes
2
star
54

digital-signatures

Java
2
star
55

wise-envoy-xds

Wise Envoy xDS
Java
2
star
56

iconfont

TransferWise IconFont
HTML
1
star
57

terra

A minimalistic library for object hydration. Useful for data to object reconstruction mechanics.
Java
1
star
58

cable

Simple and minimalistic url rewriter
Java
1
star
59

tw_bootcamp_2019

Take home exercise
Java
1
star
60

.github

Default community health files for TransferWise GitHub organization
1
star
61

tw-challenge-february-2015

Template repository for TW Challenge submissions
1
star
62

actions-slack-notify

Send slack notifications with easy
1
star
63

tw-base-utils

Generic, Transferwise domain independent base utils.
Java
1
star
64

tw-incidents

Java
1
star
65

Numair_Repo

Repository containing codes by Numair Fazili
1
star
66

tw-leader-selector

Java
1
star
67

spring-cloud-tex

EnableConfigServer
Java
1
star
68

cache-algorithms-demo

Visually shows the behavior of different cache algorithms.
Java
1
star
69

tw-challenge-2014

Base repository for TransferWise Challenge - please fork for each team and make repository public. Sharing is caring!
1
star
70

FloatingPlaceholderTextField

Yet another "float label pattern" component written in Swift
Swift
1
star
71

tw-curator

Auto-configurator for Apache Curator
Java
1
star
72

send-money-pages-og-images

If a user shares one of the send-money pages on Facebook, the image that’s displayed in Facebook to represent the page is drawn from this repository.
JavaScript
1
star
73

legal-terms

This repository is intended to contain all T&C, ToS and other legal documents that can be required through a programatic endpoint for the use and information of partners and other third parties.
HTML
1
star
74

auto-causality

1
star