Devolver un pago
Las operaciones de devolución (DEVOLUCION) permiten a los comercios devolver fondos a un titular de tarjeta tras un pago exitoso. Get Central soporta múltiples flujos de devolución dependiendo de si la transacción original, la tarjeta física, o ambas, están disponibles en el momento de la devolución.
Esta guía se aplica a TpvpcImplantado.
Una devolución siempre supone una reversión financiera de un pago previamente autorizado y capturado.
Requisitos
Antes de iniciar una devolución, asegúrate de que se cumplen las siguientes condiciones:
-
Get Central (TPVPC) inicializado y operativo
-
Capacidad de devolución habilitada para el comercio y el terminal
-
Al menos uno de los siguientes disponibles:
- Tarjeta física utilizada en la transacción original, o
- Identificadores de la transacción original
Las devoluciones pueden ser totales o parciales, dependiendo de la configuración y las reglas del emisor.
Modelos de devolución
Get Central soporta los siguientes escenarios de devolución:
- Devolución con tarjeta presente – la tarjeta original se lee de nuevo en el PIN pad
- Devolución con referencia original – la devolución se ejecuta utilizando los datos de la transacción original
- Devolución sin original – la devolución se ejecuta sin los datos de la transacción original (si está habilitado)
Todos los modelos de devolución utilizan el mismo tipo de operación: DEVOLUCION.
Proceso de devolución
Una devolución se realiza mediante la invocación de la función correspondiente del TPVPC con los parámetros requeridos. El TPVPC devuelve una respuesta XML que debes validar para determinar si la devolución fue autorizada.
Paso 1: Llamar a la función que corresponde al flujo
Cada flujo de devolución tiene su propia función. Ninguna de ellas es fnDllOperPinPad, que solo atiende pagos y preautorizaciones.
| Flujo | Función | Parámetros |
|---|---|---|
| Con tarjeta presente | fnDllComContableTrj | cImporte, cFactura, cNumPedido, cRTSOriginal, cXMLResp, iTamMaxResp |
| Referenciada | fnDllOperComContable | cNumPedido, cRTSOriginal, cImporte, cFactura, cTipoOper, cXMLResp, iTamMaxResp |
| Sin original | fnDllDevSinOrigTrj | cImporte, cFactura, cXMLResp, iTamMaxResp |
Solo fnDllOperComContable lleva cTipoOper, porque sirve tanto a la devolución como a la confirmación: ponlo en DEVOLUCION para devolver, o en CONFIRMACION para capturar una preautorización. Las otras dos funciones llevan la operación en su propio nombre.
| Parámetro | Tipo | Descripción |
|---|---|---|
cImporte | String | Importe que se quiere devolver o confirmar, en formato XXXXXXXXX.XX. Valor obligatorio en modo Transparente. |
cFactura | String | Campo suministrado por el comercio para asociar una descripción o valor a la operación. El TPVPC no realiza ninguna validación sobre él. |
cNumPedido | String | Número de pedido de la operación original. El campo pedido se encuentra en todas las respuestas de peticiones realizadas al TPVPC. Valor obligatorio en modo Transparente. |
cRTSOriginal | String | Identificador RTS de la transacción original. El campo identificadorRTS se encuentra en todas las respuestas de peticiones realizadas al TPVPC. Valor opcional; en modo Transparente se recomienda su uso. |
cTipoOper | String | DEVOLUCION o CONFIRMACION. Solo en fnDllOperComContable. |
cXMLResp | Buffer | Buffer que recibe el resultado XML. |
iTamMaxResp | Integer | Tamaño máximo del buffer de respuesta. |
El importe de la devolución debe ser menor o igual al importe original capturado.
Este es un ejemplo de devolución referenciada:
StringBuilder xmlResponse = new StringBuilder(8192);
int result = fnDllOperComContable(
"123456", // cNumPedido — original order
"", // cRTSOriginal — recommended when available
"5.00", // cImporte
"REF-2024-001", // cFactura
"DEVOLUCION", // cTipoOper
xmlResponse,
xmlResponse.Capacity
);Un valor de retorno de 0 indica que la operación fue procesada. No confirma la autorización.
Paso 2: Validar el resultado de la devolución
Tras la ejecución, el TPVPC devuelve una respuesta XML. Una devolución debe considerarse AUTORIZADA solo si la respuesta contiene:
<estado>F</estado>
<resultado>Autorizada</resultado>Cualquier otra combinación debe tratarse como DENEGADA.
A continuación se muestra un ejemplo de una devolución autorizada:
<resultadoOperacion>
<tipoPago>DEVOLUCION</tipoPago>
<importe>5.00</importe>
<moneda>978</moneda>
<pedido>REF-2024-001</pedido>
<estado>F</estado>
<resultado>Autorizada</resultado>
</resultadoOperacion>Requisitos de persistencia
Para fines de conciliación y auditoría, almacena al menos:
- Referencia de la devolución (
factura) - Referencia de la transacción original (
pedido) - Resultado de la autorización y códigos de respuesta
Próximos pasos
Después de procesar una devolución, puedes continuar con tareas adicionales de conciliación y gestión:
- Para obtener detalles sobre cómo generar e imprimir recibos conformes para el titular de la tarjeta, consulta la documentación Generar e imprimir recibos.
- Para saber más sobre los pagos estándar en el punto de venta, consulta la guía Crear un pago en un paso único.
- Para obtener un catálogo completo de los estados de las transacciones y los códigos de error del host, consulta la documentación de Códigos de resultado y errores.