On This Page
Processing an Offline Sale
This section describes how to process an offline sale. This transaction is also known
as a
deferred authorization
or store and forward
. Offline sale
transactions can only be performed on a terminal that has been used to process at
least one online transaction. When internet connectivity is not available, an offline sale can be used to capture
the transaction details. Stored sale transactions must be submitted for
authorization when internet connectivity becomes available. For more information,
see Submitting an Offline Transactions Batch for Authorization.
Only process offline sales if required. The recommendation is to process online sale
transactions whenever possible. For more information, see Sale.
Follow these steps to process an offline sale:
- Create aTransactionParametersobject and provide the required information for the payment.
- Retrieve thetransactionIntentfrom themposUiobject and use thestartActivitymethod to initiate the transaction flow.val transactionParameters = TransactionParameters.Builder() .charge(BigDecimal("1.00"), Currency.EUR) .customIdentifier("yourReferenceForTheTransaction") .build() val transactionIntent = mposUi.offlineModule.createTransactionIntent(transactionParameters) startActivityForResult(transactionIntent, MposUi.REQUEST_CODE_PAYMENT)
- After the transaction is completed and the Summary screen is dismissed, theonActivityResultis triggered. This action returns information about the last transaction.override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == MposUi.REQUEST_CODE_PAYMENT) { when (resultCode) { // Result code from a successful transaction MposUi.RESULT_CODE_APPROVED -> { val transactionIdentifier = data?.getStringExtra(MposUi.RESULT_EXTRA_TRANSACTION_IDENTIFIER) Toast.makeText(findViewById(android.R.id.content),"Transaction approved!\nIdentifier: $transactionIdentifier", Toast.LENGTH_LONG).show() } // Result code from a declined, aborted or failed transaction MposUi.RESULT_CODE_FAILED -> { Toast.makeText(findViewById(android.R.id.content), "Transaction was declined, aborted, or failed", Toast.LENGTH_LONG).show() } } } }