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. |