Sandbox. UTP mantiene un sandbox que permite a los desarrolladores probar el API utilizando datos simulados. Tener en cuenta que la lista de productos no está sincronizada con producción.
Para realizar solicitudes al entorno sandbox, utilice la siguiente URL: https://dev.jsonapi.utelecard.com
Producción. Una vez que haya completado todas las pruebas necesarias en el sandbox, contáctenos para recibir sus claves de producción.
Para realizar solicitudes al entorno de producción, utilice la siguiente URL: https://jsonapi.utelecard.com
Para realizar los requests, los encabezados HTTP utilizados deben ser:
- Content-Type: application/json
- Accept: application/json
Para realizar solicitudes a nuestros endpoints, debe utilizar el protocolo HTTPS, independientemente del entorno que esté utilizando.
Nota: Por razones de seguridad, nuestra API solo admite TLS v1.2 o posterior.
El API tiene una forma especial de autenticación, que se basa en la ruta y los encabezados HTTP de cada solicitud que se realiza. Cada solicitud debe contener los siguientes encabezados:
Accept el tipo MIME que sea aceptable para la respuesta.
Para todas sus solicitudes, siempre enviará application/json
Content-Type Indica el tipo MIME del cuerpo de la entidad enviado al destinatario.
Ejemplo application/json
Date Representa la fecha y la hora en que se originó el mensaje. Este formato de encabezado se especifica en RFC 822 Sección 5.
Por ejemplo: Wed, 12 Jan 2022 15:04:09 GMT
Authorization Credenciales de autenticación, este encabezado tiene la siguiente forma:
APIKey <usuario>:<llave-secreta>
Como lo indica su descripción, el encabezado de autenticación es la forma de autenticarse en el API, está compuesto por el siguiente par: su usuario API y su llave secreta.
Nota: al crear un URL con parámetros, no olvide codificarla (consulte RFC1738 Sección 2.2). Las llaves y los valores deben estar codificados en formato MIME application/json.
El endpoint /v1/account/balance mostrará el balance actual de su cuenta. Es una excelente manera de aprender a realizar solicitudes. Para este ejemplo, vamos a utilizar la herramienta curl.
1. Envíe su solicitud al entorno deseado. Reemplace <usuario> y <llava-secreata> con los proporcionados.
curl -X GET "https://dev.jsonapi.utelecard.com/v1/account/balance" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Date: $CURRENT_DATE" \
-H "Authorization: APIKey <usuario>:<llave-secreta>"
2. Ejecute el script. El servidor responderá con un objeto JSON. Utilice esta información de acuerdo a sus necesidades.
{
"payload": "868254.89"
}
Nota: tome en cuenta como se envían las credenciales en el header Authorization.
Todas las respuestas contienen la cabecera X-Runtime, la cual permite saber el tiempo que tomó la solicitud.
X-Runtime: 248.184375ms
GET /v1/account/balance - balance actualNinguno
{
"payload": "868254.89"
}
param type desc payload decimal Balance de la Cuenta
GET /v1/response-codes - lista códigos de respuestaNinguno
{
"payload": [
{
"code": "DB27",
"message": "UTP TRANSACTION REJECTED, PHONE RATE LIMIT EXCEEDED",
},
{
"code": "132",
"message": "INVALID TRANSACTION DATE TIME",
},
{
"code": "133",
"message": "INVALID USERNAME OR PASSWORD"
},
{
"code": "086",
"message": "INSUFFICIENT FUNDS FOR RECHARGE"
},
{
"code": "087",
"message": "INVALID ACCOUNT NUMBER OR INCORRECT BILLER"
},
...
]
}
param type desc payload array Diccionario de códigos y descripción payload.code string Código de la respuesta payload.message string Descripción de la respuesta
GET /v1/products - lista productos asignadosNinguno
{
"payload": [
{
"amount": "50",
"carrierId": 9,
"countryId": "332",
"currencyId": "DOP",
"id": 121,
"maxAmount": "1500",
"name": "HAITI DIGICEL$ $50-1500",
"typeId": 1
},
{
"amount": "50",
"carrierId": 255,
"countryId": "332",
"currencyId": "DOP",
"id": 182,
"maxAmount": "1500",
"name": "HAITI NATCOM$ $50-1500",
"typeId": 1
},
{
"amount": "25",
"carrierId": 1,
"countryId": "214",
"currencyId": "DOP",
"id": 357,
"maxAmount": "1500",
"name": "DOMINICAN REPUBLIC CLARO$ $25-1500",
"typeId": 1
},
{
"amount": "30",
"carrierId": 10,
"countryId": "214",
"currencyId": "DOP",
"id": 3149,
"maxAmount": "2000",
"name": "DATA PACKAGE CLARORD",
"typeId": 14
},
...
]
}
param type desc payload array Lista de Productos asignados payload.amount dedimal Monto mínimo del producto payload.carrierId int ID de Compañía portadora del servicio payload.countryId string ISO-3166-1 númerico del país al que pertenece el producto payload.currencyId string ISO-4217 numérico de la moneda del producto payload.maxAmount decimal Monto máximo del producto payload.name string Nombre del producto payload.typId int ID del tipo de producto
GET /v1/products/groups - lista grupos de productoNinguno
{
"payload": [
{
"id": 17,
"name": "UTILITIES"
},
{
"id": 1,
"name": "POSTPAGO"
},
{
"id": 2,
"name": "TELEFONIA FIJA"
},
{
"id": 3,
"name": "ELECTRICIDAD"
},
{
"id": 4,
"name": "ACUEDUCTO"
},
{
"id": 5,
"name": "TELECABLE"
},
{
"id": 6,
"name": "SEGUROS"
},
...
]
}
param type desc payload array Lista de Grupos de Producto payload.id int Id del grupo payload.name string Nombre del grupo
GET /v1/products/types - lista tipos de productoNinguno
{
"payload": [
{
"id": 7,
"name": "BILL PAYMENT"
},
{
"id": 14,
"name": "DATA PACKAGE"
},
{
"id": 6,
"name": "LOCAL PIN"
},
{
"id": 1,
"name": "RECHARGE"
},
...
]
}
param type desc payload array Lista de Tipos de Producto payload.id int Id del tipo payload.name string Nombre del tipo
GET /v1/carriers - lista portadores asignadosNinguno
{
"payload": [
{
"id": 255,
"name": "Natcom"
},
{
"id": 1,
"name": "Claro"
},
{
"id": 9,
"name": "Digicel"
},
{
"id": 10,
"name": "Clarord"
},
{
"id": 11,
"name": "Orangerd"
},
{
"id": 37,
"name": "Viva"
}
...
]
}
param type desc payload array Lista de Carriers (portadores) asignados payload.id int ID de Compañía portadora del servicio payload.name string Nombre del Carrier
GET /v1/query - consulta info
param component type data type desc productId query required int ID del Producto a consultar accountNumber query required string Tel/Contrato/Número de Cuenta a consultar
/v1/query?productId=3149&accountNumber=8095551212
{
"payload": [
{
"description": "150MB CHAT Y REDES - 1 DIA",
"detail": "150MB - 7 DIAS - CHAT&REDES",
"duration": "1 DIA",
"id": "10169",
"price": "40",
"type": "CHAT Y REDES"
},
{
"description": "LIBRE+ 1 DIA",
"detail": "LIBRE 2 GB",
"duration": "1 DIA",
"id": "11215",
"price": "65",
"type": "PAQUETES LIBRES PLUS"
},
{
"description": "40MB - 3 HORAS",
"detail": "40MB - 3 HORAS",
"duration": "3 HORAS",
"id": "10160",
"price": "20",
"type": "NAV. HORAS"
},
{
"description": "100MB - 7 HORAS",
"detail": "100MB - 7 HORAS",
"duration": "7 HORAS",
"id": "10161",
"price": "30",
"type": "NAV. HORAS"
}
...
]
}
/v1/query?productId=2023&accountNumber=5010345
{
"payload": {
"holderName": "PEREZ MARTINEZ, PEDRO MANUEL",
"invoiceAmount": "1144.99",
"invoiceDate": "2024-08-19",
"minAmount": "1144.99",
"txnId": "582821456"
}
}
param type desc payload objeto Respuesta de la consulta dependiendo del tipo de producto
POST /v1/buy - compra de producto
param component type data type desc reference json required string referencia del consumidor API accountNumber json required string Tel/Contrato/Número de Cuenta a pagar productId json required int ID del producto a comprar packageId json optional string ID del paquete de datos a comprar amount json required decimal Monto a pagar
Compra de un TOPUP:
{
"reference":"7035922672877862680",
"accountNumber":"8095551212",
"productId":357,
"amount":200,
"merchant": "21234"
}
{
"payload": {
"authNumber": "644208",
"txnDatetime": "7/28/2024 10:25:04 AM",
"txnId": "583307823"
}
}
Compra de un PIN:
{
"reference":"7035922659791649500",
"productId":201,
"amount":100,
"merchant": "21234"
}
{
"payload": {
"authNumber": "1316582",
"txnDatetime": "7/28/2024 10:25:04 AM",
"txnId": "583307818",
"pin": "395614126912",
"serial": "000005703956227",
}
}
Compra de Paquete de Datos:
{
"reference":"1721827596810",
"accountNumber":"8292685939",
"productId":3149,
"packageId":"10611",
"amount":50
}
{
"payload": {
"authNumber": "082208",
"txnDatetime": "20240724092421",
"txnId": "784877850"
}
}
Compra de Recarga de Energía:
{
"reference":"1721828310130",
"accountNumber":"6643418",
"productId":3503,
"amount":5
}
{
"payload": {
"authNumber": "144984",
"data": {
"blk1des": "(0~200kwh)...6.05RD$/kwh",
"blk1val": "8.3kwh",
"blk2des": "(201~300kwh)...8.59RD$/kwh",
"blk2val": "0kwh",
"blk3des": "(301~700kwh)...12.89RD$/kwh",
"blk3val": "0kwh",
"blk4des": "(701~701kwh)...1951.09RD$/kwh",
"blk4val": "0kwh",
"blk5des": "(702~...kwh)...13.09RD$/kwh",
"blk5val": "0kwh",
"codTarifa": "BTS1",
"comercio": "UNION TELECARD DOMINICANA",
"contrato": "6643418",
"fecha": "2024-07-24 09:36:06.956272905 -0400 BOT m=+85411.293938367",
"lote": "144984",
"mode": "Efectivo",
"monto": "5",
"montoUnidadRec": "8.3",
"msg": "Gracias por su recarga",
"serialMedidor": "014290163493",
"sumMes": "33.2",
"titular": "JUAN FRANCISCO CELESTINO DE LA CRUZ",
"token": "2163-8573-9682-3801-3660",
"unidadRec": "kWh"
},
"txnDatetime": "2024-07-24 09:36:06.956267735 -0400 BOT m=+85411.293933197",
"txnId": "814246941"
}
}
param type desc payload array Datos de la respuesta payload.authNumber string Número de autorización del proveedor del servicio payload.txnDatetime string Fecha de la transacción payload.txnId string ID generado de la transacción payload.data object Información adicional con detalles de la compra
POST /v1/txns/cancel - cancelar compra de producto
param component type data type desc oldReference json required string referencia de la compra newReference json required string referencia de cancelación del consumidor API
{
"newReference":"1721677185425",
"oldReference":"1721677154624"
}
{
"payload": "Success",
}
param type desc payload string Código de respuesta
GET /v1/txns - consulta transacciones
param component type data type desc reference query optional int referencia de la transacción a consultar accountNumber query optional string Tel/Contrato/Número de Cuenta a consultar
/v1/txns?reference=7017982692562088225
/v1/txns?accountNumber=8095551212
{
"payload": [
{
"amount": "60",
"authNumber": "793931",
"code": "00",
"id": 1722344155380855,
"merchant": 45345,
"phone": "8095551212",
"productId": 357,
"productTypeId": 14,
"reference": "1722344155031",
"txnDate": "2024-07-30T16:55:55Z",
"txnType": "BUY PRODUCT",
"txnTypeId": 1
}
]
}
{
"payload": [
{
"amount": "-60",
"authNumber": "",
"code": "00",
"id": 582629474,
"merchant": 0,
"phone": "8095551212",
"productId": 357,
"productTypeId": 1,
"reference": "1721677185425",
"txnDate": "2024-07-30T16:55:55Z",
"txnType": "VOID TRASNSACTION",
"txnTypeId": 2
},
{
"amount": "60",
"authNumber": "255896",
"code": "00",
"id": 582629434,
"merchant": 0,
"phone": "8095551212",
"productId": 357,
"productTypeId": 1,
"reference": "1721677154624",
"txnDate": "2024-07-30T16:55:55Z",
"txnType": "BUY PRODUCT",
"txnTypeId": 1
},
...
]
}
param type desc payload objeto Respuesta de la consulta dependiendo del tipo de producto payload.amount decimal Monto de la transacción payload.authNumber string Número de autorización del proveedor del producto payload.code string Código de respuesta de la transacción payload.id int ID unico de la transacción payload.merchant string ID del punto de venta en que se realizó la transacción payload.phone string Número de cuenta de la transacción (tel/contrato/...) payload.productId int ID del producto payload.productTypeId int ID del tipo de producto payload.reference string referencia del consumidor API payload.txnDate string Fecha y Hora de la transacción payload.txnType string Tipo de transacción payload.txnTypeId int ID del tipo de transacción
El sistema usa los códigos de status HTTP para indicar si un request fue exitoso. Si el código HTTP de respuesta es 200, todo funcionó bien. Los siguientes códigos representan otros resultados:
HTTP Code Meaning 200 OK 400 Bad Request, method not supported. 401 Unauthorized, user doesn't have rights. 405 Method not allowed by API. For example, some elements are read-only and cannot accept POST requests. 406 Not acceptable, missing parameters or bad parameters. This is the most common error code when field validation fails for any reason. 409 Conflict, thrown when an API request throws a WARNING and the request was made in strict mode. When not in "strict" mode a WARNING will return a 200. See: Using Extras for Fine-Tuning API Usage for more on strict mode. 422 Unprocessable Entity, thrown when a request couldn't be satisfied. 429 Rate limiting, thrown when an excessive number of requests are made in a short amount of time. Rate limiting is currently applied to the Report Queue and Authentication endpoints. 500 Internal server error, generally problem with the database or system setup.
Estos son casos de prueba espécificos creados para mostrar resultados esperados.
No todos los casos se cubren.
CONSULTA DE DATA PACKAGE
Acción Producto ID No de Cuenta Resultado query ANY 8095550022 022 - Provider Error query ANY 8095551313 002 - Cliente NO Tiene Paquetes Disponibles query ANY 8095559999 NOK - Cliente no encontrado query ANY 8095558888 TR - UTP TIMEOUT REJECTED query ANY 8[024]9XXXXXXX 00 - Success
CONSULTA DE FACTURAS
Acción TIPO ID No de Cuenta Resultado query POST 2023 5010696 00 - Success - 1144.99 - MARTXXX ALCAXXX, MARCOS AUREXXX query POST 2021 7367899 00 - Success - 543.81 - MILIENNE HILAIRE query PRE 3503 6643418 00 - Success - 0 - JUAN FRANCISCO CELESTINO DE LA CRUZ query PRE 3503 6648438 00 - Success - 0 - ISIDRO TRAVIESO NUÑEZ query PRE 3503 6703389 00 - Success - 0 - MACARRULLA, MARIA MAGDALENA query ANY ANY XXXXXXX 01 - NIC NO VALIDO
COMPRA DE DATA PACKAGE
Acción ID No de Cuenta Resultado buy ANY 8095552121 023 - TELEFONO TIENE PRESTAMO PENDIENTE buy 3149 8095552323 DB2 - UTP INVALID PRODUCT OR AMOUNT FOR THIS ACCOUNT buy ANY 8095552222 349 - Error en Proveedora consultando Número de Telefono buy ANY 8[024]9XXXXXXX 00 - Success
PAGO DE FACTURAS
Acción TIPO ID No de Cuenta Resultado buy POST 2023 5010696 00 - Success buy POST 2021 7367899 00 - Success buy PRE 3503 6643418 00 - Success buy PRE 3503 6648438 00 - Success buy PRE 3503 6703389 00 - Success buy PRE 3503 6236683 RP006 - TRANSACCION NO PERMITIDA. (Transaccion repetida) buy ANY ANY XXXXXXX CP003 - CONTRATO O MEDIDOR NO ENCONTRADO EN EL SISTEMA
COMPRA DE RECARGAS (TOPUP)
Acción ID No de Cuenta Resultado buy ANY 8095552121 023 - TELEFONO TIENE PRESTAMO PENDIENTE buy ANY 8095552222 349 - Error en Proveedora consultando número de teléfono buy ANY 8095552323 DB2 - UTP INVALID PRODUCT OR AMOUNT FOR THIS ACCOUNT buy ANY 8095552424 020 - Provider Error buy ANY 8095552525 DB27 - UTP TRANSACTION REJECTED, PHONE RATE LIMIT EXCEEDED
COMPRA DE PINES
Acción ID No de Cuenta Resultado buy ANY 00 - Success
CANCELACIÓN
Acción oldReference newReference Resultado cancel xxxxxx 1234567890 1 - Error en Prepago reversando bolsillo:0 Balance Disponible 14.06