Procesar un pago
Esta guía detalla cómo implementar el flujo de pago estándar (Venta). En este flujo, envía una única petición a la API, y el terminal gestiona la interacción con el titular de la tarjeta.
Debido a que las interacciones con el terminal físico requieren tiempo, este proceso es asíncrono. Iniciarás el pago mediante una llamada directa a la API y recibirás el resultado final a través de una notificación de webhook.
El ciclo de vida de la transacción
- Petición: Tu servidor envía una petición
POSTal endpoint/pago. - Acuse de recibo: La API devuelve un
200 OKsíncrono indicando que el terminal ha recibido el comando. - Interacción: El terminal solicita al cliente que inserte su tarjeta y que introduzca su PIN.
- Notificación: Una vez que la transacción concluye (Aprobada, Denegada o Cancelada), la API envía un payload JSON a tu
urlNotificacion.
Paso 1: Enviar la petición de pago
Para iniciar una venta, envía una petición POST al endpoint /pago.
- Endpoint de Test:
https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/pago - Endpoint de Producción:
https://tpvpc.redsys.es/TPV_PC/services/rest/tpvpcwss/v1/pago
Payload de la petición
El payload debe incluir el importe, tu referencia interna de factura y la URL de notificación donde quieres recibir el resultado final.
{
"info": {
"comercio": "777888991",
"terminal": 1,
"timestamp": "20250428 111217",
"notificacion": {
"urlNotificacion": "https://your-server.com/api/webhooks/payment-results",
"correoNotificacion": "[email protected]"
},
"datosOperacion": {
"importe": "25.50",
"factura": "ORD-2025-001"
}
},
"signature": "YOUR_CALCULATED_SIGNATURE"
}Asegúrate de que el importe esté formateado como XXXXXXXXX.XX (p. ej., 25.50 o 0.01). No utilices comas.
Paso 2: Gestionar la respuesta síncrona
Inmediatamente después de enviar la petición, la API devolverá una respuesta.
Respuesta esperada:
{
"info": {
"resultado": {
"codigo": "0"
}
},
"signature": "SERVER_SIGNATURE"
}codigo: "0": Éxito. El terminal está ahora procesando el pago.- Cualquier otro código: La petición ha fallado (p. ej., error de validación, terminal desconectado). Consulta la referencia del Catálogo de códigos de error y denegación.
NO entregues los bienes o servicios todavía. Un código de 0 aquí solo significa “Petición aceptada”. No significa que el pago haya sido pagado o autorizado.
Paso 3: Recibir la notificación asíncrona
Cuando el cliente finaliza (o cancela) la transacción, API Cloud envía una petición POST a tu urlNotificacion.
Ejemplo de notificación de éxito
{
"info": {
"comercio": "777888991",
"terminal": 1,
"timestamp": "20250428 111500",
"datosRespuesta": {
"tipoPago": "PAGO",
"importe": "25.50",
"moneda": "978",
"factura": "ORD-2025-001",
"resultado": "Autorizada",
"codigoRespuesta": "998877",
"estado": "F",
"tarjetaClienteRecibo": "************1234",
"marcaTarjeta": "1"
}
},
"signature": "SERVER_SIGNATURE"
}Campos clave a validar
Debes inspeccionar campos específicos en datosRespuesta para confirmar el estado del pago:
| Campo | Valor para éxito | Descripción |
|---|---|---|
resultado | Autorizada | Indica explícitamente que la transacción fue aprobada. |
estado | F | Indica que la operación está “Finalizada” (Finalized). |
codigoRespuesta | (Código de autorización) | El código de autorización del banco. Si la transacción fue denegada, contendrá un código de denegación (p. ej., 101, 117). |
importe | (Su importe) | Verifica que el importe autorizado coincide con el importe que solicitaste. |
Gestión de denegaciones y errores
Si el pago falla, la notificación reflejará el fallo:
resultado:DenegadacodigoRespuesta: Un código de denegación (p. ej.,117para PIN incorrecto).estado: Podría serG(Denegada),A(Cancelada) oT(Fallo técnico).
Próximos pasos
- Configurar Webhooks y notificaciones: Guía detallada sobre cómo procesar y validar el payload de notificación.
- Especificaciones de impresión de recibos: Utiliza los datos de la notificación (
tarjetaClienteRecibo,marcaTarjeta) para imprimir el recibo obligatorio conforme a la normativa.