Request to reverse a payment on Clover Android devices

Use the ReversePaymentRequestIntentBuilder class to build an Intent to start an Activity that will guide a user through the payment reversal steps. Payment reversal can be processed as either a void or refund, depending on the requested amount, if any, and the time since the payment was taken. If an amount is specified, the request must be processed as a refund. If the amount is not specified, either a void or full payment refund will be processed based on several factors including how the payment was taken, how much time had passed since the payment was taken, and what amount was being requested. The result Intent contains a field, Intents.REVERSE_PAYMENT_RESULT, that will indicate if the payment was refunded or voided.

📘

NOTE

ReversePayment is also used for voiding/canceling pre-auth payments.

Examples

Example - Full refund

You can build a reverse payment request (full amount) with a few lines of code.

val paymentId = payment.id // should be id from a payment/pre-auth
val context = this

val builder = ReversePaymentRequestIntentBuilder(paymentId)
val intent = builder.build(context)

The Intent can then be used to start the activity to process the reverse payment request.

Example - Partial refund

This is an example of a partial amount refund.

📘

NOTE

A partial refund cannot be processed on a non-finalized payment, that is, a payment awaiting closeout.

val paymentId = payment.id // should be id from a payment/pre-auth
val context = this

val builder = ReversePaymentRequestIntentBuilder(paymentId)
builder.amount(500) // requesting a $5 partial refund
val intent = builder.build(context)

Processing results

when(intent.getStringExtra(Intents.EXTRA_REVERSE_PAYMENT_RESULT)) {
   ReversePaymentResult.REFUNDED.name -> {
       val paymentId = intent.getStringExtra(Intents.EXTRA_PAYMENT_ID)
       val refund = intent.getParcelableExtra<Refund>(Intents.EXTRA_REFUND)
   }
   ReversePaymentResult.VOIDED.name -> {
       val paymentId = intent.getStringExtra(Intents.EXTRA_PAYMENT_ID)
   }
   ReversePaymentResult.FAILED.name -> {
       // request failed
       intent.getStringExtra(Intents.EXTRA_FAILURE_MESSAGE)
   }
}

Did this page help you?