API Serfigas v1
API REST para integracion de comercios con el sistema de Credito Serfigas.
https://serfigas.201.244.32.107.nip.io/api/serfigas/v1
Autenticacion
Todos los endpoints (excepto registro) requieren token Bearer en el header:
Authorization: Bearer {token}
Content-Type
Todas las peticiones deben incluir:
Content-Type: application/json
Codigos de Respuesta HTTP
200 | OK - Solicitud exitosa |
201 | Created - Recurso creado |
400 | Bad Request - Datos invalidos |
401 | Unauthorized - Token invalido/expirado |
403 | Forbidden - Sin permisos |
404 | Not Found - Recurso no existe |
429 | Too Many Requests - Rate limit |
500 | Internal Error - Error servidor |
Ejemplo General con cURL
# Peticion GET con autenticacion
curl -X GET "https://tu-servidor.com/api/serfigas/v1/credits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}"
# Peticion POST con datos
curl -X POST "https://tu-servidor.com/api/serfigas/v1/token/generate" \
-H "Content-Type: application/json" \
-d '{"vat": "1234567890", "contract_number": "GAS-001-2024"}'
Autenticacion
Genera un token de autenticacion para el cliente. Solo requiere documento y contrato de gas.
Parametros (Body JSON)
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
vat | string | Si | Numero de documento del cliente |
contract_number | string | Si | Numero de contrato de gas |
expiration_minutes | integer | No | Minutos de validez (5-60, default: 15) |
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/token/generate" \
-H "Content-Type: application/json" \
-d '{
"vat": "1234567890",
"contract_number": "GAS-001-2024"
}'
Respuesta Exitosa 200 OK
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_at": "2024-12-13T11:30:00",
"expires_in_seconds": 1800,
"message": "Token generado exitosamente"
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "CLIENT_NOT_FOUND",
"error": "Cliente no encontrado"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_MISMATCH",
"error": "Contrato no corresponde al cliente"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_INACTIVE",
"error": "Contrato inactivo"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "VALIDATION_ERROR",
"error": "Faltan datos requeridos: vat, contract_number"
}
// HTTP 429 Too Many Requests
{
"success": false,
"error_code": "CLIENT_BLOCKED_TEMPORARY",
"error": "Cuenta bloqueada por 25 minutos. Intente en 18 minutos.",
"blocked_minutes_remaining": 18,
"block_level": 1
}
Renueva un token antes de que expire.
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/token/refresh" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": "2024-12-13T12:00:00",
"expires_in_seconds": 1800,
"message": "Token renovado exitosamente"
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_INVALID",
"error": "Token invalido"
}
Obtiene informacion del token actual.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/token/info" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"token_type": "bearer",
"expires_at": "2024-12-13T11:30:00",
"remaining_seconds": 1523,
"has_certificate": false,
"partner": {
"id": 123,
"name": "Juan Perez",
"vat": "1234567890"
}
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
Revoca todos los tokens activos del cliente.
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/token/revoke" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"message": "Token revocado exitosamente"
}
Registro (Publico)
Registra una solicitud de nuevo cliente Serfigas.
Parametros (Body JSON)
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
vat | string | Si | Numero de documento |
vat_type | string | No | Tipo: cedula, nit, pasaporte |
name | string | Si | Nombre completo |
email | string | Si | Correo electronico |
phone | string | Si | Telefono de contacto |
contract_number | string | Si | Numero contrato de gas |
birth_date | date | No | Fecha nacimiento (YYYY-MM-DD) |
birth_city | string | No | Ciudad de nacimiento |
address | string | No | Direccion de residencia |
city | string | No | Ciudad |
attachments | array | No | Documentos adjuntos |
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/register" \
-H "Content-Type: application/json" \
-d '{
"vat": "1234567890",
"vat_type": "cedula",
"name": "Juan Perez Garcia",
"email": "juan.perez@email.com",
"phone": "3001234567",
"contract_number": "GAS-001-2024",
"birth_date": "1985-06-15",
"birth_city": "Cartagena",
"address": "Calle 50 #20-30",
"city": "Cartagena"
}'
Respuesta Exitosa 201 Created
{
"success": true,
"message": "Solicitud recibida exitosamente. En unos minutos recibiras respuesta.",
"request_id": 456,
"state": "pending",
"tracking_code": "SFG-2024-00456"
}
Respuestas de Error
// HTTP 400 Bad Request - Solicitud ya existe
{
"success": false,
"error_code": "REQUEST_EXISTS",
"error": "Ya existe una solicitud pendiente para este documento",
"request_id": 123,
"state": "pending"
}
// HTTP 400 Bad Request - Ya es cliente activo
{
"success": false,
"error_code": "CLIENT_EXISTS",
"error": "Ya eres cliente Serfigas activo",
"message": "Puedes usar tu cuenta existente para realizar compras"
}
// HTTP 400 Bad Request - Campos faltantes
{
"success": false,
"error_code": "VALIDATION_ERROR",
"error": "Campos requeridos faltantes: email, phone"
}
// HTTP 404 Not Found - Contrato no existe
{
"success": false,
"error_code": "CONTRACT_NOT_FOUND",
"error": "Contrato no encontrado"
}
// HTTP 500 Internal Server Error
{
"success": false,
"error_code": "PROCESSING_ERROR",
"error": "Error procesando la solicitud"
}
Consulta el estado de una solicitud de registro.
Parametros URL
| Campo | Tipo | Descripcion |
|---|---|---|
tracking_code | string | Codigo de seguimiento (ej: SFG-2024-00456) |
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/register/status/SFG-2024-00456" \
-H "Content-Type: application/json"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"request_id": 456,
"state": "approved",
"state_label": "Aprobado",
"message": "Su solicitud ha sido aprobada. Ya puede usar su credito Serfigas.",
"created_at": "2024-12-13T10:00:00",
"updated_at": "2024-12-13T10:30:00"
}
}
Estados Posibles
pending | Pendiente de revision |
reviewing | En revision |
approved | Aprobado |
rejected | Rechazado |
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "REQUEST_NOT_FOUND",
"error": "Solicitud no encontrada"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "VALIDATION_ERROR",
"error": "Codigo de seguimiento invalido"
}
Valida si un documento y contrato son validos.
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/validate/contract" \
-H "Content-Type: application/json" \
-d '{
"vat": "1234567890",
"contract_number": "GAS-001-2024"
}'
Respuesta Exitosa 200 OK
{
"success": true,
"client": {
"name": "Juan Perez",
"has_credit": true,
"contract_active": true
}
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "CLIENT_NOT_FOUND",
"error": "No se encontro cliente con estos datos"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_INACTIVE",
"error": "El contrato no esta activo"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_MISMATCH",
"error": "Contrato no corresponde al cliente"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "VALIDATION_ERROR",
"error": "Faltan datos requeridos: vat, contract_number"
}
Creditos
Lista todos los creditos del cliente autenticado.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/credits" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"credits": [
{
"id": 1,
"name": "SERFIGAS/SO001",
"amount": 1500000,
"pending_amount": 875000,
"periods": 12,
"rate": 1.99,
"state": "posted",
"start_date": "2024-06-01",
"end_date": "2025-05-31"
}
],
"total_pending": 875000,
"active_count": 1
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_INVALID",
"error": "Token invalido"
}
Detalle de un credito con tabla de amortizacion.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/credits/1" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"credit": {
"id": 1,
"name": "SERFIGAS/SO001",
"amount": 1500000,
"pending_amount": 875000,
"periods": 12,
"rate": 1.99,
"state": "posted",
"start_date": "2024-06-01",
"end_date": "2025-05-31"
},
"amortization": [
{
"sequence": 1,
"date": "2024-07-01",
"payment_amount": 142500,
"principal_amount": 112650,
"interest_amount": 29850,
"pending_principal": 1387350,
"state": "paid"
},
{
"sequence": 2,
"date": "2024-08-01",
"payment_amount": 142500,
"principal_amount": 114893,
"interest_amount": 27607,
"pending_principal": 1272457,
"state": "pending"
}
],
"payments": {
"total_paid": 570000,
"total_pending": 1140000,
"paid_count": 4,
"pending_count": 8
}
}
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "NOT_FOUND",
"error": "Recurso no encontrado"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_INVALID",
"error": "Token invalido"
}
Resumen del cupo y creditos del cliente.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/credits/summary" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"credit_limit": 5000000,
"available": 3325000,
"used": 1675000,
"active_credits": 2,
"total_pending": 1675000,
"contract": {
"number": "GAS-001-2024",
"active": true
}
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
Ventas
Valida datos antes de crear una venta. Retorna pregunta de seguridad y opciones de cuotas.
Parametros (Body JSON)
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
partner_vat | string | Si | Documento del cliente |
contract_number | string | Si | Numero de contrato |
amount | number | Si | Monto de la compra |
installments | integer | No | Cuotas (default: 12) |
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/sale/validate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}" \
-d '{
"partner_vat": "1234567890",
"contract_number": "GAS-001-2024",
"amount": 1500000,
"installments": 12
}'
Respuesta Exitosa 200 OK
{
"success": true,
"validated": true,
"client": {
"id": 123,
"name": "Juan Perez",
"vat": "1234567890",
"contract_number": "GAS-001-2024",
"contract_active": true
},
"cupo": {
"limite": 5000000,
"disponible": 3500000,
"disponible_despues": 2000000
},
"brilla": {
"amount": 1500000,
"installments": 12,
"installment_amount": 142500,
"total_amount": 1710000,
"interest_rate": 1.99,
"installment_options": [
{"installments": 6, "installment_amount": 268500, "total_amount": 1611000},
{"installments": 12, "installment_amount": 142500, "total_amount": 1710000},
{"installments": 24, "installment_amount": 78500, "total_amount": 1884000}
]
},
"security_question": {
"question_id": 3,
"question": "En que ciudad naciste?",
"hint": "Ciudad de Colombia"
},
"require_security": true,
"message": "Validacion exitosa"
}
Respuestas de Error
// HTTP 400 Bad Request
{
"success": false,
"error_code": "INSUFFICIENT_CREDIT",
"error": "Cupo insuficiente",
"cupo": {
"limite": 5000000,
"disponible": 1000000,
"solicitado": 1500000
}
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_MISMATCH",
"error": "Contrato no corresponde al cliente"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "CONTRACT_INACTIVE",
"error": "Contrato inactivo"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "AMOUNT_TOO_LOW",
"error": "Monto menor al minimo"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "AMOUNT_TOO_HIGH",
"error": "Monto mayor al maximo"
}
// HTTP 404 Not Found
{
"success": false,
"error_code": "CLIENT_NOT_FOUND",
"error": "Cliente no encontrado"
}
// HTTP 503 Service Unavailable
{
"success": false,
"error_code": "SERVICE_UNAVAILABLE",
"error": "Servicio Serfigas no disponible"
}
Crea una orden de venta. Requiere pregunta de seguridad.
Parametros (Body JSON)
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
partner_vat | string | Si | Documento del cliente |
contract_number | string | Si | Numero de contrato |
installments | integer | Si | Numero de cuotas |
question_id | integer | Si | ID pregunta seguridad |
answer | string | Si | Respuesta seguridad |
products | array | Si | Lista de productos |
external_reference | string | No | Referencia externa |
notes | string | No | Notas del pedido |
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/sale/create" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}" \
-d '{
"partner_vat": "1234567890",
"contract_number": "GAS-001-2024",
"installments": 12,
"question_id": 3,
"answer": "Cartagena",
"products": [
{"code": "NEV001", "name": "Nevera Samsung", "quantity": 1, "price": 1200000},
{"code": "MIC001", "name": "Microondas LG", "quantity": 1, "price": 300000}
],
"external_reference": "TIENDA-2024-001"
}'
Respuesta Exitosa 200 OK
{
"success": true,
"order": {
"id": 789,
"name": "SO001",
"amount_total": 1500000,
"state": "draft"
},
"client": {
"id": 123,
"name": "Juan Perez",
"contract": "GAS-001-2024"
},
"brilla": {
"installments": 12,
"installment_amount": 142500,
"total_amount": 1710000,
"interest_rate": 1.99
},
"next_step": "Confirme la orden con POST /sale/{order_id}/confirm",
"message": "Orden creada exitosamente"
}
Respuestas de Error
// HTTP 400 Bad Request
{
"success": false,
"error_code": "SECURITY_REQUIRED",
"error": "Respuesta de seguridad requerida",
"security_question": {
"question_id": 3,
"question": "En que ciudad naciste?",
"hint": "Ciudad de Colombia"
}
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "SECURITY_FAILED",
"error": "Respuesta de seguridad incorrecta"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "INSUFFICIENT_CREDIT",
"error": "Cupo insuficiente",
"cupo": {"disponible": 500000, "solicitado": 1500000}
}
// HTTP 500 Internal Server Error
{
"success": false,
"error_code": "PROCESSING_ERROR",
"error": "Error procesando la solicitud"
}
Confirma una orden y procesa el credito. Retorna hash unico para seguimiento.
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/sale/789/confirm" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}" \
-d '{
"installments": 12,
"question_id": 3,
"answer": "Cartagena"
}'
Respuesta Exitosa 200 OK
{
"success": true,
"payment_hash": "A1B2C3D4E5F6G7H8I9J0K1L2",
"order": {
"id": 789,
"name": "SO001",
"state": "sale"
},
"brilla": {
"status": "approved",
"state": "done",
"installments": 12,
"installment_amount": 142500,
"total_amount": 1710000
},
"message": "Credito aprobado exitosamente"
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "ORDER_NOT_FOUND",
"error": "Orden no encontrada"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "ORDER_INVALID_STATE",
"error": "Estado de orden invalido",
"current_state": "sale"
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "SECURITY_REQUIRED",
"error": "Respuesta de seguridad requerida",
"security_question": {
"question_id": 3,
"question": "En que ciudad naciste?",
"hint": "Ciudad"
}
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "SECURITY_FAILED",
"error": "Respuesta de seguridad incorrecta"
}
// HTTP 403 Forbidden
{
"success": false,
"error_code": "FORBIDDEN",
"error": "Acceso denegado"
}
// HTTP 503 Service Unavailable
{
"success": false,
"error_code": "SERVICE_UNAVAILABLE",
"error": "Servicio Serfigas no disponible"
}
// HTTP 500 Internal Server Error
{
"success": false,
"error_code": "PROCESSING_ERROR",
"error": "Error procesando la solicitud"
}
Detalle de una orden de venta.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/sale/789" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"order": {
"id": 789,
"name": "SO001",
"date": "2024-12-13T10:30:00",
"state": "sale",
"amount_total": 1500000,
"external_ref": "TIENDA-2024-001",
"lines": [
{"product": "Nevera Samsung 250L", "quantity": 1, "price_unit": 1200000, "subtotal": 1200000},
{"product": "Microondas LG", "quantity": 1, "price_unit": 300000, "subtotal": 300000}
]
},
"brilla": {
"transaction_id": 456,
"reference": "BRILLA/SO001",
"state": "done",
"installments": 12,
"installment_amount": 142500,
"total_amount": 1710000,
"loan_id": 123
}
}
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "ORDER_NOT_FOUND",
"error": "Orden no encontrada"
}
// HTTP 403 Forbidden
{
"success": false,
"error_code": "FORBIDDEN",
"error": "Acceso denegado"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_INVALID",
"error": "Token invalido"
}
Lista ordenes de venta del cliente.
Parametros Query
| Campo | Tipo | Default | Descripcion |
|---|---|---|---|
state | string | - | Filtrar por estado (draft, sale, done, cancel) |
limit | integer | 20 | Registros por pagina |
offset | integer | 0 | Registros a saltar |
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/sales?state=sale&limit=10" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"sales": [
{
"id": 789,
"name": "SO001",
"date": "2024-12-13T10:30:00",
"state": "sale",
"amount_total": 1500000,
"brilla_state": "done",
"brilla_installments": 12
}
],
"total": 15,
"limit": 20,
"offset": 0
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
Facturas
Lista facturas del cliente.
Parametros Query
| Campo | Tipo | Descripcion |
|---|---|---|
state | string | draft, posted, paid |
type | string | out_invoice, out_refund |
limit | integer | Default: 20 |
offset | integer | Default: 0 |
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/invoices?state=posted&limit=10" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"invoices": [
{
"id": 101,
"name": "INV/2024/0001",
"date": "2024-12-01",
"due_date": "2024-12-31",
"amount_total": 142500,
"amount_residual": 0,
"state": "posted",
"payment_state": "paid",
"is_brilla": true
}
],
"total": 12,
"limit": 20,
"offset": 0
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
Facturas pendientes de pago con resumen de mora.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/invoices/pending" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"invoices": [
{
"id": 102,
"name": "INV/2024/0002",
"date": "2024-11-01",
"due_date": "2024-11-30",
"amount_total": 142500,
"amount_residual": 142500,
"is_overdue": true,
"days_overdue": 13
},
{
"id": 103,
"name": "INV/2024/0003",
"date": "2024-12-01",
"due_date": "2024-12-31",
"amount_total": 142500,
"amount_residual": 142500,
"is_overdue": false,
"days_overdue": 0
}
],
"summary": {
"count": 2,
"total_pending": 285000,
"overdue_count": 1,
"overdue_amount": 142500
}
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
Registra un pago para una factura.
Ejemplo cURL
curl -X POST "https://tu-servidor.com/api/serfigas/v1/invoices/102/pay" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {tu_token}" \
-d '{
"amount": 142500,
"payment_method": "transfer",
"reference": "PAGO-001",
"date": "2024-12-13"
}'
Respuesta Exitosa 200 OK
{
"success": true,
"payment": {
"id": 201,
"name": "PAGO/2024/0001",
"amount": 142500,
"date": "2024-12-13",
"state": "posted"
},
"invoice": {
"id": 102,
"amount_residual": 0,
"payment_state": "paid"
},
"message": "Pago registrado exitosamente"
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "INVOICE_NOT_FOUND",
"error": "Factura no encontrada"
}
// HTTP 400 Bad Request - Factura ya pagada
{
"success": false,
"error_code": "INVOICE_ALREADY_PAID",
"error": "La factura ya esta pagada"
}
// HTTP 400 Bad Request - Monto excede saldo
{
"success": false,
"error_code": "AMOUNT_EXCEEDS_BALANCE",
"error": "Monto excede el saldo pendiente: 142500",
"amount_residual": 142500
}
// HTTP 400 Bad Request
{
"success": false,
"error_code": "VALIDATION_ERROR",
"error": "Faltan datos requeridos: amount"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_INVALID",
"error": "Token invalido"
}
Pagos
Historial de pagos del cliente.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/payments?limit=20&offset=0" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"payments": [
{
"id": 201,
"name": "PAGO/2024/0001",
"date": "2024-12-13",
"amount": 142500,
"ref": "PAGO-001",
"journal": "Banco"
}
],
"total": 10,
"limit": 20,
"offset": 0
}
}
Respuestas de Error
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "TOKEN_EXPIRED",
"error": "Token expirado"
}
Consulta estado de un pago Serfigas por su hash unico.
Ejemplo cURL
curl -X GET "https://tu-servidor.com/api/serfigas/v1/payment/A1B2C3D4E5F6G7H8I9J0K1L2" \
-H "Authorization: Bearer {tu_token}"
Respuesta Exitosa 200 OK
{
"success": true,
"data": {
"payment_hash": "A1B2C3D4E5F6G7H8I9J0K1L2",
"reference": "BRILLA/SO001",
"state": "done",
"amount": 1500000,
"brilla": {
"installments": 12,
"installment_amount": 142500,
"total_amount": 1710000,
"loan_id": 123
},
"created_at": "2024-12-13T10:30:00",
"updated_at": "2024-12-13T10:35:00"
}
}
Respuestas de Error
// HTTP 404 Not Found
{
"success": false,
"error_code": "PAYMENT_NOT_FOUND",
"error": "Pago no encontrado"
}
// HTTP 403 Forbidden
{
"success": false,
"error_code": "FORBIDDEN",
"error": "Acceso denegado"
}
// HTTP 401 Unauthorized
{
"success": false,
"error_code": "AUTH_REQUIRED",
"error": "Autenticacion requerida"
}
Codigos de Error
| Codigo | HTTP | Mensaje | Descripcion |
|---|---|---|---|
| Autenticacion | |||
AUTH_REQUIRED | 401 | Autenticacion requerida | No se envio token |
TOKEN_EXPIRED | 401 | Token expirado | El token ha expirado |
TOKEN_INVALID | 401 | Token invalido | Token mal formado o no existe |
FORBIDDEN | 403 | Acceso denegado | Sin permisos para este recurso |
| Cliente | |||
CLIENT_NOT_FOUND | 404 | Cliente no encontrado | No existe cliente con ese documento |
CONTRACT_NOT_FOUND | 404 | Contrato no encontrado | Numero de contrato no existe |
CONTRACT_MISMATCH | 400 | Contrato no corresponde | El contrato no pertenece al cliente |
CONTRACT_INACTIVE | 400 | Contrato inactivo | El contrato de gas esta suspendido |
| Bloqueos | |||
CLIENT_BLOCKED_TEMPORARY | 429 | Cliente bloqueado | Demasiados intentos fallidos |
CLIENT_REQUIRES_SUPPORT | 403 | Contacte soporte | Cuenta bloqueada permanentemente |
TOO_MANY_ATTEMPTS | 429 | Demasiados intentos | Rate limit excedido |
| Credito | |||
INSUFFICIENT_CREDIT | 400 | Cupo insuficiente | No tiene cupo disponible |
AMOUNT_TOO_LOW | 400 | Monto muy bajo | No alcanza el minimo |
AMOUNT_TOO_HIGH | 400 | Monto muy alto | Excede el maximo permitido |
| Seguridad | |||
SECURITY_REQUIRED | 400 | Seguridad requerida | Debe responder pregunta |
SECURITY_FAILED | 400 | Respuesta incorrecta | La respuesta no coincide |
SECURITY_NOT_CONFIGURED | 400 | Sin preguntas | Cliente sin preguntas configuradas |
| Ordenes | |||
ORDER_NOT_FOUND | 404 | Orden no encontrada | No existe la orden |
ORDER_INVALID_STATE | 400 | Estado invalido | La orden no puede procesarse |
| Sistema | |||
SERVICE_UNAVAILABLE | 503 | Servicio no disponible | Sistema en mantenimiento |
PROCESSING_ERROR | 500 | Error procesando | Error interno del servidor |
Formato de Error
{
"success": false,
"error_code": "INSUFFICIENT_CREDIT",
"error": "Cupo insuficiente",
"cupo": {
"disponible": 500000,
"solicitado": 1500000
}
}
// Con bloqueo temporal
{
"success": false,
"error_code": "CLIENT_BLOCKED_TEMPORARY",
"error": "Cuenta bloqueada por 25 minutos. Intente en 18 minutos.",
"blocked_minutes_remaining": 18,
"block_level": 1
}
Soporte Tecnico
Para obtener credenciales de API o asistencia tecnica:
api@serfigas.com |
605-123-4567
Ultima actualizacion: Diciembre 2024