👉 The Capture Pre-auth request is used to capture a pre-authorisation transaction.
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.
Capture Pre-auth request originating from the client app to initiate a request for a Capture Pre-auth transaction
Capture Pre-auth response originating from the ‘viva.com | Terminal’ application to return the result of a Capture Pre-auth transaction
Capture Pre-auth request
For a typical Capture Pre-auth request, the client app must provide the following information:
Field
Description
Example
Required
Card terminal support
Character limit
Type
scheme
The Viva custom URL scheme, the host and the version.
'vivapayclient://pay/v1'
✅
merchantKey
The merchant's key. For successful validation, should not be empty. Deprecated: you may pass any value.
'SG23323424EXS3'
appId
The client app ID. For successful validation, should not be empty.
'com.example.myapp'
✅
action
Pre-auth transaction. For successful validation, should not be empty.
'capture_pre_auth'
✅
callback
The URI callback that will handle the result. For successful validation, should not be empty.
'mycallbackscheme://result'
✅
amount
The amount to be captured, in cents.
'1200' = 12 euro
✅
integer (int32)
referenceNumber
The STAN number of the transaction to be cancelled. If empty, after card presentment, the app will provide a list of the last 3 transactions made with the presented card, allowing the user to select the transaction to be canceled. If action is cancel and if not empty should be integer bigger than zero.'
'833121' (optional)
Please note the following options (if using the 'viva.com | Terminal' application for Android):
- Pass one or more of the identification parameters (referenceNumber, orderCode, shortOrderCode), but no date parameters: this will allow the capture to be completed directly
- Pass both of the date parameters (txnDateFrom & txnDateTo), but no identification parameters: this will allow the POS user to locate the desired transaction with filters (with the date range pre-filled but amendable)
- Pass neither the identification parameters or the date parameters: this will allow the POS user to locate the desired transaction with filters (with the date range not pre-filled)
integer (int32)
orderCode
If not empty should be integer bigger than zero and length 16.
'1020304050607080'
integer (int32)
shortOrderCode
If not empty should be integer bigger than zero and length 10.
'1234567890'
integer (int32)
txnDateFrom
If action is cancel and if not empty should be in "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" format.
'2021-03-18T14:42:53.341Z'
date-time
txnDateTo
If action is cancel and if not empty should be in "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" format, txnDateFrom should be provided and txnDateTo should be after txnDateFrom.
'2021-03-19T14:42:53.341Z'
date-time
show_receipt
A flag indicating if the receipt and transaction result will be shown. If true both transaction result and receipt will be shown. If false receipt will not be shown and result will be shown if show_transaction_result is true.
'true'
boolean
show_transaction_result
A flag indicating whether transaction result will be shown.
'true'
boolean
show_rating
A flag indicating if the rating flow will be shown.
'true'
boolean
The above parameters must be used to create a URI call. Please see the below example:
IntentpayIntent=newIntent(Intent.ACTION_VIEW,Uri.parse("vivapayclient://pay/v1"+"?merchantKey="MY_MERCHANT_KEY"
+ "&appId=com.example.myapp"
+ "&action=capture_pre_auth"
+ "&referenceNumber=123456"
+ "&callback=mycallbackscheme://result"
+"&orderCode=1020304050607080"+"&shortOrderCode=1234567890"+"&txnDateFrom=2021-03-18T14:42:53.341Z"+"&txnDateTo=2021-03-19T14:42:53.341Z"+"&amount=100"+"&show_receipt="+true+"&show_transaction_result="+true+"&show_rating="+true));payIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);payIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);// Those two flags should be added for paydroid implementations
// payIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
// payIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(payIntent);
Capture Pre-auth response
After executing a Capture Pre-auth transaction the ‘viva.com | Terminal’ application responds with a Capture Pre-auth response result to indicate if the transaction has been approved or not.
The result is received as a URI in the callback activity intent:
Uriresult=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'
status
The status of the transaction.
'success'
message
A string containing information about the transaction status.
'Transaction successful'
action
Capture Pre-auth transaction.
'capture_pre_auth'
amount
The amount in cents without any decimal digits. If action is cancel and amount is not empty must be integer and bigger than zero. (Used in successful and declined receipts)
'1200' = 12 euro
cardType
The card type.
'VISA'
accountNumber
The card number masked. Note that only the 6 first and the 4 last digits are provided. All other digits are masked with stars. (Used in successful and declined receipts)
'479275\*\*\*\*\*\*9999'
tid
A 12 character string indicating the terminal's TID number.
' 16016684'
referenceNumber
A 6-digit number indicating the transaction's STAN number.
'833121'
authorisationCode
A 6-digit number indicating the transaction's Authorisation code provided by the host.
'690882'
orderCode
The order code.
' 9256110059000200'
shortOrderCode
10-digit integer.
'1234567890'
transactionDate
The transaction date in ISO 8601 format. (Used in successful and declined receipts)
'2019-09-13T12:14:19.8703452+03:00'
transactionId
A unique identifier for the transaction.
'a78e045c-49c3-4743-9071-f1e0ed71810c'
aid
A string indicating the AID of the card. (Used in successful receipts)
'A000000003101001'
vatNumber
The VAT number of merchant. (if print VAT is enabled in the 'viva.com | Terminal' application settings) (Used in successful and declined receipts)
'123412341'
address
The address of merchant (if print address is enabled in the 'viva.com | Terminal' application settings) (Used in successful receipts)
‘Main St 123, 12312 Anytown’
businessDescription
Merchant’s Business/Trade/Store name (depending on what option is selected in the 'viva.com | Terminal' application settings), (Used in successful receipts)
'Wonka Industries'
printLogoOnMerchantReceipt
A boolean indicating weather the VivaWallet logo should be printed on merchant receipt. (Used in successful receipts)
'false'
merchantReceiptPAN
This field contains the value of the PAN (and additional clipping) that should be printed in merchant receipt. If is empty, then apply the default clipping. (Used in successful receipts)
'629914XXXXXXXXX6770'
cardholderReceiptPAN
This field contains the value of the PAN (and additional clipping) that should be printed in customer receipt. If is empty, then apply the default clipping.
'629914XXXXXXXXX6770'
transactionReceiptAcquirerZone
If it is not empty then this value should be printed at the end of the customer receipt. (Used in successful receipts)
'qwerty123456'
cardholderReceiptText
If is not empty then this value should be printed at the end of the customer receipt. (Used in successful receipts)
'qwerty123456'
merchantReceiptText
If is not empty then this value should be printed at the end of the customer receipt. (Used in successful receipts)
'qwerty123456'
cardholderName
Name of the cardholder. (Used in successful receipts)
'JOHN DOE'
cardExpirationDate
Expiration date of the card (YYMM). (Used in successful receipts)
'2212'
cardholderNameExpirationDateFlags
Each char may be 0 (false) or 1 (true) and indicates if the cardholder name and the expiration date should be printed on the merchant/cardholder receipts)
1st char: if 1 then the Cardholder Name should be printed in the merchant's receipt. If 0, then it should not.
2nd char: if 1 then the Cardholder Name should be printed in the cardholder's receipt. If 0, then it should not.
3rd char: if 1 then the Expiration Date should be printed in the merchant's receipt. If 0, then it should not.
4rd char: if 1 then the Expiration Date should be printed in the cardholder's receipt. If 0, then it should not. (Used in successful receipts)
'1010'
needsSignature
A boolean indicating if the receipt needs a signature section. (Used in successful receipts)
false
addQRCode
A boolean indicating if the order code should be printed as a QR. (Used in successful receipts)
false
terminalSerialNumber
The serial number of the terminal. (Used in successful receipts)
“1234567891“
currency
The currency of the transaction. (Used in successful receipts)
“EUR“
errorText
Text to print on the receipt stating the error description and the error ccode. (Used in declined receipts)
“Transaction failed - Z-3“
applicationVersion
The version off the application. (Used in declined receipts)
'v3.7.0(1956)'
A Capture Pre-auth response result for an approved transaction looks as follows:
mycallbackscheme://result?status=success&message=Transaction successful&action=capture_pre_auth&amount=10&verificationMethod=&rrn=235314357110&cardType=&referenceNumber=357110&accountNumber=************0178&authorisationCode=000445&tid=16022145&orderCode=2353151181022145&transactionDate=2022-12-19T16:08:10.9105065+02:00&transactionId=2ef43138-2a1a-433e-8df1-72911d53169f&shortOrderCode=2353151181&vatNumber=EL096019265&address=kifisias 10, 12342 Athens&businessDescription=AGROTIKOS SYNETAIRISMOS MESOLOGGIOU NAUPAKTIAS I ENOSI&printLogoOnMerchantReceipt=false&cardholderNameExpirationDateFlags=0000&needsSignature=false&addQRCode=false&terminalSerialNumber=1490355478¤cy=EUR&applicationVersion=v4.11.0(4800)&entryMode=00&cashless=false
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.
'viva.com | Terminal' application for Android
Mini Card Reader, Pocket Card Terminal connected via Bluetooth or USB to the 'viva.com | Terminal' application for Android.
Linux Card Terminals
Countertop, IM20, S900, S800, D200.
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 Contact & Support page to see how we can help!