Skip to content

Recargas Claro

El modulo de recargas Claro en NoviSuite permite ejecutar recargas de pines y datos contra el SPR de Claro Ecuador a traves del microservicio ms-recargas. Este microservicio actua como mediador entre el dashboard, el ERP MBA3 y el protocolo MOVILPOS v7.0.

  • Ejecutar recargas de pines y datos desde el dashboard.
  • Consultar el estado de una recarga procesada.
  • Verificar el inventario disponible en tiempo real.
  • Listar y filtrar transacciones registradas.
  • Operar con datos extraidos automaticamente de facturas MBA3.

El acceso a las funciones del modulo depende de los permisos asignados al usuario:

PermisoAcciones habilitadas
create_recargasEjecutar recargas.
view_recargasConsultar transacciones, estado de recarga e inventario.

Si un usuario no tiene el permiso correspondiente, recibira un rechazo 403 Forbidden.

Todos los endpoints requieren autenticacion JWT (Authorization: Bearer <token>) y usan application/json.

MetodoRutaPermisoDescripcion
POST/api/v1/recargas/rechargecreate_recargasEjecuta una recarga.
GET/api/v1/recargas/transactionsview_recargasLista transacciones paginada.
GET/api/v1/recargas/transactions/:idview_recargasDetalle de una transaccion por UUID.
POST/api/v1/recargas/query-rechargeview_recargasConsulta estado real en Claro por TX externa.
GET/api/v1/recargas/inventoryview_recargasConsulta stock disponible en el SPR.

El flujo principal conecta la factura generada en MBA3 con la recarga en Claro:

  1. El operador genera una factura en MBA3.
  2. Desde el dashboard busca la factura por numero o codigo.
  3. El sistema consulta la factura en 4D y extrae el telefono del cliente (CLNT_Ficha_Principal.TELEFONO).
  4. Si el numero cumple el formato Claro Ecuador (593 + 8 o 9 + 8 digitos), se auto-rellena en el formulario.
  5. El operador selecciona el producto del inventario y la cantidad.
  6. Confirma la operacion y el sistema ejecuta la recarga.

POST /api/v1/recargas/recharge

{
"subscriber_id": "593986686257",
"offer_id": "150",
"quantity": 1,
"external_operation": "RECARGA_DATOS",
"canton": "0101"
}
CampoTipoRegla
subscriber_idstring12 digitos, formato ^593[89]\d{8}$.
offer_idstringIdentificador del producto Claro. Ej: 150 (datos), 30/31/151 (pines).
quantitynumberEntero mayor o igual a 1.
external_operationenumRECARGA_DATOS o RECARGA_PINES.
cantonstringCodigo INEC de 4 digitos (ej: 0101).
{
"success": true,
"transaction_id": "f2c0a4d8-...-uuid",
"external_transaction_id": "17451234567890123",
"status": "success",
"claro_id_recarga": "447435057",
"claro_id_codigo": "0",
"message": "Se realizó con éxito la recarga"
}

Cuando Claro rechaza la transaccion, el HTTP status es 200 pero success es false:

{
"success": false,
"transaction_id": "f2c0a4d8-...-uuid",
"external_transaction_id": "17451234567890123",
"status": "error",
"error": "El número no pertenece a Claro o no está activo",
"message": "ERROR"
}

GET /api/v1/recargas/transactions

ParametroTipoDefaultDescripcion
pagenumber1Pagina actual.
per_pagenumber20Registros por pagina.
subscriber_idstringFiltra por numero exacto.
statusenumpending, success o error.

Respuesta:

{
"data": [],
"meta": {
"total": 142,
"page": 1,
"per_page": 20,
"total_pages": 8
}
}

GET /api/v1/recargas/transactions/:id

Devuelve el objeto completo de la transaccion, incluyendo raw_request_xml y raw_response_xml para auditoria.

Util cuando una recarga quedo en pending o se sospecha desincronizacion.

POST /api/v1/recargas/query-recharge

{
"external_transaction_id": "17451234567890123",
"offer_id": "150"
}

Respuesta:

{
"success": true,
"external_transaction_id": "17451234567890123",
"status": "SUCCESS",
"message": "Transacción exitosa",
"result_code": 0
}

GET /api/v1/recargas/inventory

Respuesta:

{
"success": true,
"products": [
{ "name": "Pines PVIR MOVIL POS", "offer_id": "30", "status": "DISPONIBLE", "balance": "985750" },
{ "name": "Pines 100", "offer_id": "151", "status": "DISPONIBLE", "balance": "999345.5" }
],
"raw_message": ";Pines PVIR MOVIL POS - 985750;Pines 100 - 999345.5"
}

Cada recarga pasa por los siguientes estados:

EstadoSignificado
pendingLa transaccion fue registrada y esta en proceso.
successClaro confirmo la recarga exitosamente.
errorLa recarga fue rechazada o fallo por timeout, SOAP Fault u otro error.

Una transaccion en error puede pasar a success si al usar query-recharge se confirma que Claro si la proceso (reconciliacion).

El flujo tiene multiples puntos de validacion. Si cualquiera falla, se muestra un mensaje especifico:

GateCapaMensaje al usuario
JWT invalido o expiradoAuthGuardSesion expirada, vuelve a iniciar sesion.
Falta permiso create_recargasPermissionsGuardNo tienes permiso para ejecutar recargas.
Factura no existe en 4Dms-mbaFactura no encontrada en MBA3.
Cliente sin telefonoms-mbaLa factura no tiene numero telefonico asociado.
Telefono no Claro / formato invalidoFrontendEl numero no es Claro Ecuador valido.
Producto no disponibleFrontendProducto no disponible en inventario.
DTO invalidoValidationPipeDatos del formulario invalidos.
EXTERNALTRANSACTIONID duplicadoDB / ClaroImposible realizar la recarga. Intente nuevamente.
SOAP Fault del SPRClaroClientServiceError de comunicacion con Claro.
Timeout mayor a 30 sClaroClientServiceClaro no respondio a tiempo.
STATUS=ERROR de ClaroRecargasServiceSe muestra el mensaje crudo de Claro.
Excepcion inesperadaAllExceptionsFilterError inesperado, contacta soporte.
CodigoSignificado
200Operacion procesada (verificar success en el body).
400Datos del request invalidos.
401JWT invalido o expirado.
403Permiso insuficiente.
502El SPR respondio con SOAP Fault o status HTTP no exitoso.
504El SPR no respondio en 30 segundos.

Cada recarga se persiste en base de datos con los siguientes campos relevantes:

CampoDescripcion
idUUID local de la transaccion.
external_transaction_idIdentificador unico generado por el servidor (usado ante Claro).
external_operationRECARGA_DATOS o RECARGA_PINES.
subscriber_idNumero del suscriptor (12 digitos).
offer_idProducto Claro.
quantityCantidad solicitada.
statuspending, success o error.
claro_id_recargaID secuencial de Claro al confirmar.
claro_id_codigo0 = exito, distinto de 0 = error.
claro_system_messageMensaje legible devuelto por Claro.
requested_by_user_idUUID del usuario que ejecuto la recarga.
requested_by_usernameEmail del solicitante.
raw_request_xmlXML enviado al SPR (auditoria).
raw_response_xmlRespuesta cruda del SPR (auditoria).
created_atFecha y hora de creacion.

Para trabajar sin conectividad VPN al SPR de Claro, se puede activar el modo mock con la variable CLARO_MOCK_MODE=true. En este modo, todas las llamadas se redirigen a un servicio simulado que retorna respuestas predefinidas.