Developing payments app to accept debit and credit cards requires going through a full EMV certification for contact and contactless payments with each of the card brands. This is however a big undertaking for most companies that requires a heavy investment of time, resources and industry expertise to be able to pull through. Most companies do not want to reinvent the wheel and prefer to use existing payment apps instead. However, existing payments app may not provide the necessary integration hooks so other applications at the point of sale can readily interact with the payment app. We have so many 3rd party applications such as Electronic Cash Registers (ECR), Gift and Rewards apps, financing apps, etc. that may want to pass payments and refunds to the EMV app without having to go through recertification.
In this project, ONTAB was brought in to develop the necessary hooks and interface to enable 3rd party apps to interact with the core EMV app. We designed an Android app that would instantiate a TCP server to allow other Android and non-android apps to interact with the core EMV app so long as they reside on the same LAN. The solution was designed to manage every ancillary feature around payments, such as refunds, reversals, reporting, receipt management, and end of the day settlement, but still provided a semi-integration mode for other 3rd party apps to be able to initiate an EMV transaction and get notified of the result of the transaction.
ONTAB was responsible for the technical requirements, app architecture design, UI/UX design, user flows, project plan, development, merchant onboarding, and documentation.
The Biggest Challenge
In order to provide a versatile semi-integration environment for 3rd party apps to the core EMV payment app, we had to develop and build a full TCP server on the Android terminal, which could be discovered and reached by other 3rd party apps in the same network. In this project, we had to define an API swagger that would provide a secure, authenticated interface to other systems to connect to the TCP host and be able to exchange data via JSON objects.