Devolver un pago
Esta guía explica cómo devolver (o cancelar) un pago aprobado previamente con la operación Refund del TPV Integrado.
¿Qué es una devolución?
La operación Refund revierte una venta completada, de forma total o parcial. Puedes ejecutarla el mismo día de la venta original o dentro de un plazo de hasta 365 días. Si no envías algún parámetro, el TPV muestra las pantallas de entrada correspondientes. El manual usa el término “Cancellation” para este comando.
Antes de comenzar
Antes de emitir una devolución:
- Debes crear un Connector y validarlo con
Polling - El Modo TPV Integrado debe estar activo
- La transacción original debe ser elegible para la devolución
Paso 1: Ejecuta la devolución
Para realizar una devolución, llama a la operación Refund con los datos de la transacción original. La mayoría de los parámetros son opcionales: si faltan, el TPV los solicita en pantalla. Enviarlos hace que el flujo de automatización sea más fluido.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
AuthorizationCode | String | No | Código de autorización de la transacción original (por ejemplo, el “AUT” del recibo o el de la respuesta de Sale). |
OriginTransDate | Date | No | Fecha de la transacción original, en formato ISO8601 con zona horaria. No puede ser posterior a la fecha actual. |
Amount | Long | No | Importe de la devolución en moneda local. Si se omite, se devuelve el importe total (se admiten devoluciones parciales). |
SkipConfirmation | Bool | No | Omite la pantalla de confirmación. |
SkipReceipt | Bool | No | No imprime el recibo del cliente. |
PrintOnPos | Bool | No | Imprime en el TPV o devuelve el contenido del recibo. Consulta el Capítulo 4 Responsabilidad de impresión. |
RefundType | Enum | No | Qué parte de una venta se devuelve: SaleWithdrawal (venta y retiro), Sale (solo la venta) o Withdrawal (solo el retiro). |
Si omites información obligatoria, el TPV la solicita en pantalla. El TPV y el adquirente aplican las reglas de elegibilidad y de devolución parcial. Puedes emitir varias devoluciones sobre la misma transacción original hasta que la suma de sus importes alcance el total original.
El siguiente ejemplo muestra cómo iniciar una devolución de una venta aprobada previamente. La fecha de la transacción (OriginTransDate) no puede ser posterior a la fecha actual; la fecha que devuelve la venta original es un valor válido.
var refundRequest = new RefundRequest
{
AuthorizationCode = "551437",
OriginTransDate = originalSale.AccountingDate,
Amount = 10000
};
var refundResult = await connector.RefundAsync(refundRequest);Paso 2: Gestiona la respuesta
Cuando el procesamiento es exitoso, el TPV devuelve una respuesta estructurada con el resultado de la reversión. Los siguientes campos siempre están presentes en una respuesta de devolución exitosa:
{
"Code": 0,
"Message": "APPROVED",
"CommerceCode": "1234567890",
"TerminalId": "GET00123",
"AuthorizationCode": "654321",
"NsuLastSuccessfulMessage": "123456789",
"ReceiptContent": null
}Donde:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
Code | Int | Sí | Código de respuesta. 0 indica éxito. |
Message | String | Sí | Mensaje de resultado (por ejemplo, APPROVED). |
CommerceCode | String | Sí | Código de sucursal aprobado por Getnet para procesar transacciones. |
TerminalId | String | Sí | Código del terminal TPV. |
AuthorizationCode | String | Sí | Código de autorización de la transacción de devolución. |
NsuLastSuccessfulMessage | String | Sí | Último mensaje NSU. |
ReceiptContent | Dict | No | Contenido estructurado del recibo. Es null cuando PrintOnPos es true. Consulta Responsabilidad de impresión. |
ReceiptContent es null cuando la solicitud define PrintOnPos como true: el terminal imprime el recibo en lugar de devolverlo.
Verifica siempre los campos Code y Message antes de confirmar la devolución en tu sistema.
Siguientes pasos
- Para saber cómo procesar ventas que generan códigos de autorización, consulta la guía Pago en un solo paso.
- Para controlar la impresión de recibos y obtener el contenido del recibo, consulta la guía Responsabilidad de impresión.
- Para una referencia completa de los parámetros y valores de retorno de Refund, consulta la Referencia de métodos y parámetros.