Skip to main content
POST
Este endpoint solo funciona con cobros de prueba (is_test: true), creados con una llave sk_test_. Si intentas resolver un cobro de producción, recibirás un error 403.
Simula el resultado del pago de un cobro sin abrir el link ni pagar en el checkout. Sirve para probar cómo reacciona tu integración cuando un cobro se aprueba o se rechaza, incluidos los webhooks payment.approved y payment.rejected.

¿Cómo funciona?

El cobro recorre el mismo camino que un pago real:
  1. Si el cliente ya empezó a pagar (por ejemplo, un PSE que quedó en processing), se resuelve ese intento.
  2. Si nadie ha intentado pagar, OnePay crea un intento de prueba (método Sandbox) por el valor del cobro y lo resuelve.
  3. El cobro cambia de estado y OnePay envía el webhook correspondiente:
El intento queda registrado y lo puedes consultar en Intentos de pago.
La respuesta trae el intento ya resuelto. El cobro cambia de estado unos segundos después, de forma asíncrona, igual que con un pago real. Confirma el resultado con el webhook o con Ver cobro.
Un cobro con phone vuelve a pending después del rechazo. Cuando un cobro se rechaza, OnePay le reenvía la solicitud de pago al cliente para que lo intente de nuevo, y el cobro regresa a pending sin enviar otro webhook. El webhook payment.rejected sí se envía. Si quieres que el cobro se quede en declined durante la prueba, créalo sin phone.

Estados que se pueden resolver

Solo los cobros en pending, in_progress o declined. Resolver un cobro en declined simula que el cliente reintentó el pago: con approve el cobro pasa a approved.
string
required
ID del cobro a resolver. Crear cobro.

Body

string
required
Resultado que quieres simular. Valores válidos:
  • approve: el cliente pagó. El cobro pasa a approved.
  • reject: el banco o el procesador rechazó el pago. El cobro pasa a declined.
string
Motivo del rechazo. Requerido cuando action es reject.Acepta los mismos códigos de los escenarios de prueba, por ejemplo:
  • INSUFFICIENT_FUNDS: fondos insuficientes
  • TRANSACTION_REJECTED: rechazado por el banco
  • RISK_CONTROL: bloqueado por control de riesgo
  • CARD_EXPIRED: tarjeta expirada
El motivo queda en remarks del intento y del cobro.

Aprobar un cobro

Escenario: rechazo y reintento exitoso

Para probar de punta a punta el camino de un cobro rechazado:
  1. Crea un cobro de prueba sin phone con Crear cobro.
  2. Recházalo con "action": "reject" y un remarks. El cobro queda en declined y, si tienes un webhook suscrito, recibes payment.rejected.
  3. Apruébalo con "action": "approve", como si el cliente hubiera reintentado. El cobro queda en approved y recibes payment.approved.
  4. Consulta los dos intentos en Intentos de pago.

Respuesta

Devuelve el intento resuelto, con el mismo formato de Intentos de pago.
string
ID del intento de pago resuelto.
string
Estado del intento: paid si se aprobó, failed si se rechazó.
object | null
Motivo del rechazo, con code, description, customer_description y retry. Es null cuando se aprueba.
string
Sandbox si OnePay creó el intento, o el método que eligió el cliente si ya había empezado a pagar.
string | null
Fecha de pago del intento. Es null cuando se rechaza.