Getnet DocsGetnet Docs

Crear un pago preautorizado

Las operaciones de preautorización (PREAUTORIZACION) permiten a los comercios reservar fondos en la tarjeta de un cliente sin capturarlos inmediatamente. Este modelo de dos fases se utiliza cuando el importe final solo se conoce tras la finalización del servicio (por ejemplo, hoteles, alquiler de coches o gasolineras).

Esta guía se aplica a Slim Pack.

Una preautorización nunca captura fondos por sí sola. Debe ir seguida de una confirmación (CONFIRMACION), que captura todo o parte del importe reservado. Si no la confirmas, los fondos reservados se liberan automáticamente al vencer el período de caducidad, o puedes liberarlos antes mediante una devolución — consulta la guía Devolver un pago.

Requisitos

Antes de comenzar, asegúrate de cumplir con los siguientes requisitos previos:

  • Get Central (TPVPC) instalado e inicializado con éxito a través de fnDllIniTpvpcLatente
  • Capacidad de preautorización habilitada para tu comercio por la entidad
  • PIN pad físico conectado y disponible para el paso inicial con tarjeta presente

Las preautorizaciones están sujetas a un período de caducidad definido por la marca de la tarjeta y el emisor. Si no se confirman dentro de este período, los fondos reservados se liberan automáticamente.

Visión general del proceso de preautorización

El flujo completo consta de dos operaciones obligatorias:

  1. PREAUTORIZACION – Operación con tarjeta presente que reserva fondos
  2. CONFIRMACION – Operación posterior que captura el importe reservado

Paso 1: Ejecutar una preautorización

La preautorización es una operación con tarjeta presente. El TPVPC activa el PIN pad, guía la interacción del titular de la tarjeta y solicita una reserva de fondos.

Para iniciar la reserva, invoca la operación estándar del PIN pad con el tipo de operación establecido en PREAUTORIZACION. Se requieren los siguientes parámetros:

ParámetroTipoRequeridoDescripción
cImporteStringSíImporte a reservar, formato XXXXXXXXX.XX (por ejemplo, 100.00).
cFacturaStringSíReferencia del comercio que identifica la preautorización.
cTipoOperStringSíDebe establecerse en PREAUTORIZACION.
cXMLRespBufferSíBuffer de salida que recibirá la respuesta XML.
iTamMaxRespIntegerSíTamaño máximo del buffer de respuesta (mínimo recomendado: 8192).

A continuación se muestra un ejemplo en C#:

StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperPinPad(
    "100.00",           // cImporte
    "STAY-2023-001",    // cFactura
    "PREAUTORIZACION",  // cTipoOper
    xmlResponse,
    xmlResponse.Capacity
);

Paso 2: Validar el resultado de la preautorización

Tras la ejecución, el TPVPC devuelve un documento XML que describe el resultado de la reserva.

La preautorización debe considerarse AUTORIZADA solo si el XML contiene ambos elementos:

<estado>F</estado>
<resultado>Autorizada</resultado>

Si falta alguno de los elementos o tiene un valor diferente, la preautorización debe tratarse como DENEGADA, y no debe intentarse ninguna confirmación.

Conserva la referencia del comercio (cFactura) y los datos de respuesta relevantes, ya que son obligatorios para el paso de confirmación.

Paso 3: Capturar la preautorización

Una vez que se conoce el importe final, los fondos reservados deben capturarse ejecutando una operación CONFIRMACION. Esta operación no requiere que la tarjeta física esté presente.

La confirmación se ejecuta con fnDllOperComContable, la misma función que la devolución referenciada, cambiando cTipoOper. Debes referenciar la preautorización original por su pedido:

ParámetroTipoRequeridoDescripción
cNumPedidoStringSíNúmero de pedido de la preautorización original, del campo pedido de su respuesta.
cRTSOriginalStringNoIdentificador RTS de la preautorización original. Se recomienda su uso.
cImporteStringSíImporte final a capturar, formato XXXXXXXXX.XX.
cFacturaStringSíReferencia de compra para esta confirmación. El TPVPC no la valida.
cTipoOperStringSíDebe establecerse en CONFIRMACION.
cXMLRespBufferSíBuffer de salida que recibirá la respuesta XML.
iTamMaxRespIntegerSíTamaño máximo del buffer de respuesta (mínimo recomendado: 8192).

A continuación se muestra un ejemplo en C#:

StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperComContable(
    "916548",            // cNumPedido — the pre-authorization's pedido
    "",                  // cRTSOriginal
    "85.00",             // cImporte
    "STAY-2023-001-FIN", // cFactura
    "CONFIRMACION",      // cTipoOper
    xmlResponse,
    xmlResponse.Capacity
);

if (result != 0)
{
    // Technical execution error
}

Paso 4: Validar el resultado de la confirmación

La confirmación es exitosa solo si la respuesta XML contiene:

<estado>F</estado>
<resultado>Autorizada</resultado>

Solo después de esta validación la transacción debe considerarse totalmente capturada y finalizada.

Próximos pasos

Después de completar un ciclo de preautorización y confirmación, puedes continuar con tareas operativas adicionales:

  • Para revertir una transacción confirmada o liberar fondos reservados, consulta la guía Devolver un pago.
  • Para obtener detalles sobre cómo generar e imprimir recibos, consulta la documentación Generar e imprimir recibos.