Saltar al contenido principal

Reembolsos

La API de Reembolsos permite gestionar la devolución de pagos previamente procesados.
Incluye endpoints para:

  • Listar reembolsos
  • Obtener un reembolso específico
  • Crear reembolsos completos
  • Crear reembolsos parciales

Estructura de un Reembolso

Ejemplo de objeto de reembolso:

{
"_id": "string",
"paymentIntentId": "string",
"paymentId": "string",
"userId": "string",
"receiverId": "string",
"refundTo": "string",
"amount": 100,
"status": "PROCESSING",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}

Campos

  • _id: Identificador único del reembolso.
  • paymentIntentId: ID de la intención de pago asociada.
  • paymentId: ID del pago asociado.
  • userId: ID del usuario propietario.
  • receiverId: ID del cliente receptor.
  • refundTo: Dirección donde se enviará el reembolso.
  • amount: Monto del reembolso.
  • status: Estado del reembolso.
  • createdAt: Fecha de creación.
  • updatedAt: Fecha de última actualización.

Endpoints

1. Listar reembolsos

[GET] /refunds

Retorna una lista paginada de reembolsos. Soporta filtrado y paginación.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
pagenumberNoNúmero de página. Default: 1
pageSizenumberNoCantidad de resultados por página. Default: 10
searchstringNoCondiciones de filtrado en formato "campo:valor,campo2:valor2"

Ejemplo de solicitud

const query = {
page: 1,
pageSize: 10,
search: "receiverId:123"
};

Respuesta

{
"refunds": [],
"page": 1,
"pageSize": 10,
"totalPages": 5
}

2. Obtener reembolso por ID

[GET] /refunds/:id

Retorna un reembolso específico.

Parámetros de URL

  • id: Identificador del reembolso.

Respuesta

{
"_id": "string",
"paymentIntentId": "string",
"paymentId": "string",
"userId": "string",
"receiverId": "string",
"refundTo": "string",
"amount": 100,
"status": "PROCESSING",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}

3. Crear reembolso completo

[POST] /refunds

Crea un reembolso total para un pago existente.

Body

{
"paymentId": "string",
"refundTo": "string"
}

Parámetros

  • paymentId: ID del pago a reembolsar.
  • refundTo: Dirección donde se enviará el reembolso.

Respuesta

{
"_id": "string",
"paymentIntentId": "string",
"paymentId": "string",
"userId": "string",
"receiverId": "string",
"refundTo": "string",
"amount": 100,
"status": "PROCESSING",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}

4. Crear reembolso parcial

[POST] /refunds/partial

Crea un reembolso parcial para un pago existente.

Body

{
"paymentId": "string",
"refundTo": "string",
"amount": 50
}

Parámetros

  • paymentId: ID del pago.
  • refundTo: Dirección de destino.
  • amount: Monto a reembolsar.

Respuesta

{
"_id": "string",
"paymentIntentId": "string",
"paymentId": "string",
"userId": "string",
"receiverId": "string",
"refundTo": "string",
"amount": 50,
"status": "PROCESSING",
"createdAt": "timestamp",
"updatedAt": "timestamp"
}

Validaciones

Las siguientes condiciones deben cumplirse:

  • paymentId debe corresponder a un pago confirmado.
  • refundTo debe ser una dirección Ethereum válida:
    • Debe comenzar con 0x
    • Debe tener 42 caracteres
  • El monto no debe exceder el balance disponible.
  • No se pueden procesar reembolsos si el pago fue retirado previamente.

Estados posibles

EstadoDescripción
PROCESSINGEl reembolso está en proceso
COMPLETEDEl reembolso fue completado
ERROREl reembolso falló
REJECTEDEl reembolso fue rechazado

Respuestas de error

CódigoDescripción
400Solicitud inválida o datos incorrectos
401No autenticado
404Reembolso o pago no encontrado
500Error interno del servidor