pagos

Confirmar el pago del botón de Payphone tras el redirect y activar el plan

Verifica estado y monto contra POST /api/button/V2/Confirm de Payphone (única fuente de verdad; el botón no tiene webhook) y activa el plan en la misma transacción de BD. OJO: V2/Confirm es el endpoint del BOTÓN, distinto del confirm de la Cajita embebida, que no se usa. Payphone REVERSA la transacción si no se confirma en 5 minutos, así que el dashboard llama aquí en cuanto aterriza en /pago/resultado. Idempotente: una transacción ya aprobada devuelve el resultado guardado. Las pendientes de más de 24 h expiran. Responde pendiente sin tocar la fila (y se puede reintentar) cuando Payphone no eco-devuelve el mismo clientTransactionId o cuando el transactionId confirmado ya está asociado a otra transacción: son barreras fail-closed y no marcan rechazado, que es definitivo. PÚBLICO: se identifica por id + clientTransactionId del redirect (el segundo lo generó el servidor) y se valida contra el monto esperado, sin JWT. La PII del comprador que devuelve Payphone (email, teléfono, documento, titular, BIN, últimos dígitos) se redacta antes de persistir y nunca viaja al navegador.

post/pagos/payphone/confirmar

Request

  • Base URL: https://contadeo.com/api
  • URL: https://contadeo.com/api/pagos/payphone/confirmar
  • Auth: none required

Request body

idinteger required

Query param id del redirect de Payphone

clientTransactionIdstring required

Query param clientTransactionId del redirect

ctokenstring

Token de la tarjeta con el que vuelve Payphone en la query (ctoken). Va en el cuerpo, nunca en una URL; solo se usa si el checkout pidió la renovación automática y el pago se aprueba. Se guarda cifrado y no se registra.

clavesUrlstring[]

Nombres de los parámetros de la URL de vuelta, sin valores. Se guardan con la confirmación para saber qué mandó Payphone.

ctokenEnUrlboolean

Si la URL de vuelta traía ctoken

Response

Resultado de la confirmación

estado'aprobado' | 'rechazado' | 'expirado' | 'pendiente'
planstring
planExpiraAtstring date nullable
ciclo'mensual' | 'anual'
renovacionAutomaticaboolean

Lo que se pidió en el checkout

tarjetaGuardadaboolean

La tarjeta quedó guardada y la renovación automática, activa

complementosstring[]

Complementos que pagó este cobro

tipo'alta' | 'renovacion' | 'mejora' | 'complemento' nullable

Qué se cobró; null en los pagos anteriores a los complementos.

Changes

No recorded changes to this operation across all 2 revisions of this API.