Introducion

The series of the PaymentKit is designed for customers to use the SecuX’s payment terminal (Figure1) in their iOS/Android APPs. Please refer to the Figure2 for the architecture.

  • Provide both Pod & Carthage libs for iOS APP.
  • Provide Jitpack lib for Android APP.

Figure 1: Payment device

Figure 2: Architecture

Main features

  • PaymentDeviceKit communicates with the payment device via BLE (Nordic solution)
  • Integrated with Nordic DFU lib for device FW update
  • PaymentKit lib communicates with payment server via RESTful APIs

Development IDE & languages

  • XCode, Swift, UIKit, CryptoKit, CoreBluetooth, CoreNFC, LocalAuthentication …
  • Android Studio, Java

Development steps:

1. Worked with payment device FW engineer to setup the communication between PaymentDeviceKit and payment device.

  • FW engineer provides all payment device operations BLE protocols, e.g. init dev, FW update, make/cancel payment …
  • Define PaymentDeviceKit APIs for device operations
  • Implement the BLE protocol for each operation in PaymentDeviceKit
  • Create a test app for using the PaymentDeviceKit
  • Test and make sure the communications between test app and payment device work correctly
  • The test app is provided to the FW engineer

2. Worked with server engineer to setup the communications between PaymentKit and the server

  • Server engineer provides all operations RESTfulAPIs, account login/registration, coin/token account list, account balance, payment history ….
  • Define PaymentKit APIs for server operations
  • Implement the RESTful APIs in PaymentKit
  • Create a test app for using PaymentKit
  • Test and make sure the communications between the test app and server work correctly
  • The Test app is provided to the server engineer

3. Integrated PaymentKit and PaymentDeviceKit together

  • Create APPs: SecuX-EvPay & SecuX Stream Merchant

Challenges and what I learned

  • Worked with both FW and backend server engineers
  • Implemented libs for both iOS & Android
  • Learned how to create pod and jitpack for third-party to use
  • Practiced Android NDK for the verification mechanism between APP and Device

Github links

Demo Video