Realizar una anulación o devolución

Realizar una anulación o devolución

Antes de llevar a cabo una anulación o devolución, es necesario realizar una consulta de transacciones, ya que se necesitan datos específicos obtenidos durante esta consulta para llevar a cabo dichas operaciones.

Requisitos

  • Identificador de la transacción original: payment_id
  • Identificador de la adquirencia: acquirer_id

Paso a paso

Son los mismos pasos que se aplican para realizar un pago, la diferencia está en la instancia del objeto OperationFlow(), en este caso se agregan los siguientes campos:

CampoDescripción
TransactionTypeTipo de transacción = ANNULMENT/REFUND
payment_idIdentificador del pago original.
acquirer_idNúmero de referencia del pago original. Retornado en el campo de respuesta operation.acquirer_id
  • Además, es necesario establecer la marca de la tarjeta, el tipo y el indicador de nacional/internacional con los valores retornados en la consulta:

Ejemplo de implementación

if (isToday(transaction.operation.datetime)) {
        operationFlow.transactionType = OperationType.ANNULMENT
    } else {
        operationFlow.transactionType = OperationType.REFUND
    }
    //Se agregan identificadores del pago original
    operationFlow.acquirer_id = transaction.operation.acquirer_id
    operationFlow.payment_id = transaction.operation.id
}
 
//Set datos originales de la tarjeta
operationFlow.capture?.card?.brand = transaction.card.brand
operationFlow.capture?.card?.type = transaction.card.type
operationFlow.capture?.card?.isInternational =
    transaction.card.is_international
operationFlow.installments =
    transaction.installment.number.toString().padStart(2, '0')
ℹ️

En México 🇲🇽 solo aplica el concepto de REFUND. En Argentina 🇦🇷, una anulación se realiza el mismo día del pago y la devolución, en días posteriores.

Códigos de respuesta

El resultado de la transacción se recibe mediante el objeto Adquirer. En la siguiente tabla se muestran los diferentes códigos de error, estos se recuperan desde Adquirer.status.code

CódigoDescripción
MESSAGE_PAUSED_ERROREl merchant o customer que se están usando, están temporalmente pausados.
MESSAGE_PAUSED_DELETEDEl merchant o customer que se están usando, han sido eliminados.
REJECTTransacción declinada.
APPROVEDTransacción aprobada.
MESSAGE_GENERAL_ERRORError default no determinado.
MESSAGE_NOT_ALLOWEDNo tiene permisos para realizar la transacción.
MESSAGE_EXPIRED_SESSIONEl token de sesión ha expirado.