/
Cashier

Developing an App with Rapid Payment for Goods or Services

It runs on Android and iOS.

2.5 months of development

Задача

Task

Develop an app that will allow users to pay by card where there is no terminal available, e.g., at markets and stalls in shopping malls.

Решение

Solution

We have developed an app that can be used as a payment terminal.

The seller specifies a transaction name and amount in the app. Then the app generates an unique operation id, and the buyer pays for the purchase. When the purchase has been paid, the seller can see the payment status.

You can track sales statistics directly in the app.

Development Process

We moved ahead of schedule and worked closely with the customer’s developers. The customer provided the design and the libraries for interacting with the bank’s back end (Android SDK). Our task was to develop the Android app itself, integrate the screen layouts with the SDK, and implement an iOS SDK in line with the Android SDK.

While waiting for the customer to provide the materials, we got straight to developing the business logic and database. Once we had received the design, we started building the screens and working on the SDK integration. For the development, we used Kotlin Multiplatform Mobile and our own MOKO libraries, such as moko-mvvm, moko-resources, and moko-fields. We used SQLDelight for the user database, so the app remains available even if Internet connection is lost.

We swapped between tasks as needed, building screen layouts, then receiving another SDK module to integrate, and so on. We completed the screen layouts with time to spare.

The Android version with the shared code was finished in 1.5 months.

For the iOS version, we recreated the UI using iOS tools. In other words, it wasn’t a carbon copy of the Android design. The aim was to provide a familiar UI and UX. We used moko-kswift to make the Kotlin code “prettier” for Swift. We managed to complete it in just two weeks.

It took us a few weeks to develop an iOS SDK based on the Android SDK. This involved getting to grips with cryptography, as well as creating and storing private encryption keys in the iOS Keychain. Now the customer can use the iOS SDK for other projects.

We performed the tests in-house.

The Hardest Part

Developing an iOS SDK based on the Android SDK. This required us to take a deep dive into iOS cryptography.

How we solved these tasks

We implemented public/private key pair generation, with the private key stored in an iOS protected area. We also implemented SSL certificate validation and an SSL authorization method for the customer. All this gave us quite a few insights that will help us in future projects.

Yuri Egorov

Project manager

“We managed to stick to the plan throughout the entire project. Our team loved the chance to get into the nitty-gritty of iOS cryptography implementation. Customer interaction was quick and transparent. We look forward to seeing where the project goes next.”

card-0
card-1
card-2

Technology Stack

KMM (Kotlin Mobile Multiplatform)
MOKO libraries
MOKO-mvvm под капотом AAC (Android Architecture Components)
moko-resources
moko-fields
SQLDelight

Results

We developed an Android app for quick payments by phone and tracks transactions. On top of that, we adapted an Android library for iOS and built the layout for the iOS version of the app.

The development took us 2.5 months. The Android app is pending release.

iOS
iOS
Android

The app enables sellers to collect sales statistics. Users can track which days were best and worst for sales.

Statistics Tracking

The app enables sellers to collect sales statistics. Users can track which days were best and worst for sales.

0

Let’s discuss your project!

It is free. We will tell you how the application will solve your problems.