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:
Campo | Descripción |
---|---|
TransactionType | Tipo de transacción = ANNULMENT/REFUND |
payment_id | Identificador del pago original. |
acquirer_id | Nú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ódigo | Descripción |
---|---|
MESSAGE_PAUSED_ERROR | El merchant o customer que se están usando, están temporalmente pausados. |
MESSAGE_PAUSED_DELETED | El merchant o customer que se están usando, han sido eliminados. |
REJECT | Transacción declinada. |
APPROVED | Transacción aprobada. |
MESSAGE_GENERAL_ERROR | Error default no determinado. |
MESSAGE_NOT_ALLOWED | No tiene permisos para realizar la transacción. |
MESSAGE_EXPIRED_SESSION | El token de sesión ha expirado. |