Sale with On-Reader Tipping

Use the information in this section to process a sale with on-reader tipping. At the start of each transaction, the terminal prompts the customer to add a tip by showing suggested tip amounts. The customer chooses or enters a tip amount on the terminal before presenting their payment card.
Follow these steps to process a sale with on-reader tipping.
  1. Create a
    TransactionParameters
    object and provide the required information for the payment.
  2. Create a
    TippingProcessStepParameters
    object to configure the tipping function. The tipping options are percentage choice, tip amount, and total amount.
  3. Create a
    TransactionProcessParameters
    object to add the tipping step.
  4. Retrieve the
    transactionIntent
    variable from the
    mposUi
    object and use the
    startActivity
    method to initiate the transaction flow.
    val transactionParameters = TransactionParameters.Builder()             .charge(BigDecimal("1.00"), Currency.EUR)             .customIdentifier("yourReferenceForTheTransaction")             .build()   //  Use to display three tipping percentage choices val tipStep = TippingProcessStepParameters.Builder()             .askForPercentageChoice()         //  Optional to configure tipping percentages | Default values = 10, 15, 20         //  .percentages(BigDecimal("10"), BigDecimal("20"), BigDecimal("30"))         //  Optional to show confirmation screen         //  .showTotalAmountConfirmationScreen(true)             .build()   //  Use to ask for tip amount //  val tipStep = TippingProcessStepParameters.Builder()         //  .askForTipAmount()         //  Optional to show confirmation screen         //  .showTotalAmountConfirmationScreen(true)         //  .build()   //  Use to ask for total transaction amount including tip         //  val tipStep = TippingProcessStepParameters.Builder()         //  .askForTotalAmount()         //  Optional to show confirmation screen         //  .showTotalAmountConfirmationScreen(true)         //  .build()   val processParameters = TransactionProcessParameters.Builder()     .addStep(tipStep)     .build()   val transactionIntent = mposUi.createTransactionIntent(transactionParameters, processParameters) startActivityForResult(transactionIntent, MposUi.REQUEST_CODE_PAYMENT)
  5. After the transaction is completed and the Summary screen is dismissed,
    onActivityResult
    is 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()             }         }     } }
  6. Get the full transaction object by retrieving the
    latestTransaction
    from the mposUi object.
    val transactionObject = mposUi.latestTransaction