Reembolsos

Esta API proporciona endpoints para gestionar los reembolsos relacionados con pagos. Incluye la capacidad de crear, recuperar y listar reembolsos.

1. Listar Reembolsos

[GET] /refunds

Retorna una lista de reembolsos basados en los parámetros de consulta. Soporta filtrado, paginación y ordenación.

Solicitud:

const query = {
  page: number,  // Número de página para paginación
  limit: number, // Número de elementos por página
  query: object  // Condiciones de filtrado opcionales
};

Parámetros de Consulta:

  • page: El número de página para paginación (opcional, por defecto es 1).

  • limit: El número de reembolsos para recuperar por página (opcional, por defecto es 10).

  • query: Una lista separada por comas de pares clave-valor para filtrar resultados. Las claves serán los campos de reembolso y los valores se utilizarán para hacer coincidir los campos correspondientes (opcional).

Respuesta:

{
  "refunds": [ /* Array de objetos de reembolsos */ ],
  "page": 1,
  "pageSize": 10,
  "totalPages": 5
}

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"
}

2. Obtener reembolso por ID

[GET] /refunds/:id

Retorna un reembolso específico por su ID.

Solicitud:

  • Parámetro de URL:

    • id: El ID 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

[POST] /refunds

Crea un nuevo reembolso para un pago existente.

Solicitud:

{
  "paymentId": "string", // El ID del pago a reembolsar
  "refundTo": "string" // La dirección a la que se enviará el reembolso (debe ser una dirección válida)
}

Respuesta:

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

Validación:

  • La solicitud debe incluir un paymentId y una dirección refundTo válidos.

  • El paymentId debe corresponder a un pago confirmado.

  • La dirección refundTo debe ser una dirección Ethereum válida (comienza con "0x" y tiene una longitud de 42 caracteres).

  • El monto del reembolso no debe exceder los fondos disponibles en la cuenta del receptor.

  • No se pueden procesar reembolsos si el pago ha sido retirado.

Respuestas de Error:

  • 400 Bad Request: Campos requeridos faltantes o datos inválidos (por ejemplo, dirección inválida, fondos insuficientes).

  • 401 Unauthorized: Si el usuario no está autenticado.

  • 404 Not Found: Si el pago o el reembolso no existen.

  • 500 Internal Server Error: Si ocurre un error inesperado.

4. Crear reembolso parcial

[POST] /refunds/partial

Crea un nuevo reembolso parcial para un pago existente.

Solicitud:

{
  "paymentId": "string",// El ID del pago a reembolsar
  "refundTo": "string",// La dirección a la que se enviará el reembolso (debe ser una dirección válida)
  "amount": "number" // La cantidad solicitada en el reembolso
}

Respuesta:

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

Validación:

  • La solicitud debe incluir un paymentId y una dirección refundTo válidos.

  • El paymentId debe corresponder a un pago confirmado.

  • La dirección refundTo debe ser una dirección Ethereum válida (comienza con "0x" y tiene una longitud de 42 caracteres).

  • El monto del reembolso no debe exceder los fondos disponibles en la cuenta del receptor.

  • No se pueden procesar reembolsos si el pago ha sido retirado.

Respuestas de Error:

  • 400 Bad Request: Campos requeridos faltantes o datos inválidos (por ejemplo, dirección inválida, fondos insuficientes).

  • 401 Unauthorized: Si el usuario no está autenticado.

  • 404 Not Found: Si el pago o el reembolso no existen.

  • 500 Internal Server Error: Si ocurre un error inesperado.

Última actualización