Abort request

An overview of the Abort request message.

Overview

The client app must implement a mechanism to send messages using Android intents and URI calls and to receive the result in a custom URI callback.

Abort request

Using abort action user tries to abort a transaction he started from the third-party app. Abort will not always succeed as in some cases it is not possible to abort the transaction. For a typical abort transaction request, the client app must provide the following information:

Field Description Example Required Card terminal support
scheme The Viva's custom URL scheme, the host and the version. 'vivapayclient://pay/v1' Android Card TerminalsViva Wallet POS app for Android
merchantKey The merchant's key. For successful validation, should not be empty.
Deprecated: you may pass any value.
'SG23323424EXS3' Android Card TerminalsViva Wallet POS app for Android
appId The client app ID. For successful validation, should not be empty. 'com.example.myapp' Android Card TerminalsViva Wallet POS app for Android
action Cancel transaction. For successful validation, should not be empty. 'abort' Android Card TerminalsViva Wallet POS app for Android
callback The URI callback that will handle the result. For successful validation, should not be empty. 'mycallbackscheme://result' Android Card TerminalsViva Wallet POS app for Android

The above information elements must create a URI call, i.e.

Intent payIntent = new Intent(Intent.ACTION_VIEW, Uri.parse( "vivapayclient://pay/v1"
			+ "?merchantKey=MY_MERCHANT_KEY"
			+ "&appId=com.example.myapp"
			+ "&action=abort"
			+ "&referenceNumber=123456"
			+ "&callback=mycallbackscheme://result"));


payIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
payIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(payIntent);

Abort response

After executing an abort transaction, the Card Terminal App responds with an abort response result to indicate if the abort request has been successful or not. Also, we should state that the response from the abort action is actually a response of a failed transaction.

The result is received as a URI in the callback activity intent:

Uri result = getIntent().getData()

The table below summarises the contents of an approved response.

Field Description Example Card terminal support
callback The URI callback that will handle the result. 'mycallbackscheme://result' Viva Wallet POS app for AndroidViva Wallet POS app for Android
status The status of the transaction. 'success' Viva Wallet POS app for AndroidViva Wallet POS app for Android
message A string containing information about the transaction status. 'Transaction successful' Viva Wallet POS app for AndroidViva Wallet POS app for Android
action Cancel transaction. 'abort' Viva Wallet POS app for AndroidViva Wallet POS app for Android

A cancel response result for an approved refund looks as follows:

mycallbackscheme://result?status=fail&message=(-57) ABORTED&action=ABORT&amount=10&tipAmount=0

It is expected that if we have not started a transaction the Abort action will respond (-55) NOTHING_TO_ABORT. A failed Abort action response looks as follows:

mycallbackscheme://result?status=fail&message=(-55) NOTHING_TO_ABORT&action=ABORT

In some cases (when the transaction has been sent to server for approval / user selected payment with QR) the transaction cannot be aborted, and the Card Terminal app will not send the Abort response.

Key to card terminal product categories

To understand the icons used on the above tables, see the below table.

Product category Terminal models Icon
Android Card Terminals Android Card Terminal Ethernet, Android Card Terminal 4G, Mobile Card Terminal Plus, Mobile Card Terminal. Android Card Terminals
Viva Wallet POS app for Android Mini Card Reader, Pocket Card Terminal connected via Bluetooth or USB to the Viva Wallet POS app for Android. Android Card Terminals
Linux Card Terminals Countertop, IM20, S900, S800, D200. Linux Card Terminals

Get Support

If you would like to integrate with Viva Wallet, or if you have any queries about our products and solutions, please see our Get Support page to see how we can help!