PlusPayDevelopers

Introduction

App-to-app payment integration with the POS+ application using the PlusPay A2A packages.

PlusPay A2A (app-to-app) lets your application start payments, cancellations, end-of-day and parameter operations on the POS+ application that runs on the same Android device, query the state of transactions and orders, and receive a strongly-typed result back.

Your app never talks to the card reader or the banking network directly. It hands a request to POS+, POS+ performs the payment on its certified payment stack, and returns the outcome to your app.

How it works

┌─────────────┐   1. request (Intent)    ┌─────────────┐
│             │ ───────────────────────▶ │             │
│  Your App   │                          │    POS+     │
│             │ ◀─────────────────────── │             │
└─────────────┘   2. result (broadcast)  └─────────────┘
  1. Your app builds a typed request and calls a method on the A2A client.
  2. The client launches POS+ through an Android Intent.
  3. POS+ runs the transaction (card, cash, wallet, EFT-POS, …).
  4. POS+ returns the result; the client parses it into a typed response object, or throws a typed error.

Because the integration is Intent + broadcast based, it is Android only. There is no iOS support.

Which package do I use?

There are three packages that expose the same capabilities. Pick the one that matches your app's technology:

Throughout this documentation every code sample is shown for Flutter, Kotlin, Java and React Native in a tabbed block, so the same flow is described once for all of them.

Supported operations

OperationMethodResult
Start a paymentstartPaymentPPStartPaymentResponseModel
Cancel a paymentcancelPaymentPPStartPaymentResponseModel
Start an EFT-POS paymentstartEftPaymentPPStartPaymentResponseModel
Cancel an EFT-POS paymentcancelEftPaymentPPStartPaymentResponseModel
Pay an existing orderstartOrderPaymentPPOrderPaymentResponseModel
Multi-payment / orderstartMultiPaymentPPMultiPaymentResponseModel
Create an order without payment ¹createOrderPPOrderCreateResponseModel
End-of-day (settlement)triggerEodPPEodResponseModel
Parameter updatetriggerParametersPPParametersResponseModel
Available payment methods ¹getAvailablePaymentMethodsPPAvailablePaymentMethodsResponseModel
Query a transaction ¹getTransactionResultPPStartPaymentResponseModel
Query an order ¹getOrderResultPPOrderPaymentResponseModel
Technical cancel ¹technicalCancelPPTechnicalCancelResponseModel

¹ Flutter and React Native only. The native Android package does not support these operations yet. The last three need Flutter 0.8.0 / React Native 0.4.0.

Authentication

A2A runs entirely on-device: your app and POS+ exchange data through Android intents, so there is no API key or token to configure. POS+ authenticates the cardholder and settles the transaction with the bank.

Next steps