Mensajería JSON - Especificación completa

-Convenciones Generales

  • Codificación: UTF-8

  • Formato: JSON estándar

  • Tipos numéricos: long para montos

  • Campos requeridos: Marcados con (*)

  • Valores especiales:

  • saleTip = 0 (sin propina)

  • sharesNumber = 1 (contado)

-Transacción de Venta (Sale)

Request: SaleRequest

{
	"transactionType": "SALE",  // (*) Tipo fijo             
  	"mid": "123456789012345",   // (*) Merchant ID           
  	"saleAmount": 10000,        // (*) Monto en unidades mínimas             
  	"ticketValue": "TKT001234", // (*) Número de ticket/boleta            
  	"printOnPos": true,         // Imprimir en terminal            
  	"saleType": "AFECTA",       // (*) "AFECTA" o "EXENTA"             
  	"saleTip": 1000,            // Propina (0 si no hay)            
  	"sharesNumber": 3,          // (*) Número de cuotas           
  	"metadata": "Cliente preferencial"// Texto adicional      
}

Response: SaleResponse

{
  "responseCode": -1, // -1=aprobado, otros=error
  "responseMessage": "Transacción aprobada exitosamente",
  "commerceCode": 123456789, // Código comercio
  "ticketValue": "TKT001234", // Ticket original
  "authorizationCode": "144385", // Código de autorización
  "saleAmount": 10000, // Monto aprobado
  "sharesNumber": 3, // Cuotas aprobadas
  "saleBIN": "2876", // BIN de tarjeta
  "operationId": 579597, // ID único de operación
  "serialNumber": "", // Número serial terminal
  "tid": "TID123", // Terminal ID
  "cardType": "CREDIT", // Tipo tarjeta
  "saleTip": 1000, // Propina aprobada
  "accountingData": "", // Datos contables
  "saleType": "AFECTA", // Tipo de venta
  "metadata": "Cliente preferencial" // Metadata original
}

-Anulación (Return)

Request: ReturnRequest

{
  "transactionType": "RETURN", // (*) Tipo fijo
  "mid": "123456789012345", // (*) Merchant ID
  "printOnPos": true, // Imprimir comprobante
  "metadata": "Devolución por falla", // Motivo
  "returnAmount": 5000, // (*) Monto a anular
  "saleAmount": 10000, // (*) Monto original
  "authorizationCode": "144385", // (*) Código auth original
  "saleDate": "15-01-2024" // (*) Fecha formato dd-MM-yyyy
  "inputNumOperacion" // (*) Numero operacion
  "inputSerie" // (*) Número de Serie del POS
}

Response: ReturnResponse

{
  "serialNumber": 987654, // Número serial
  "tid": "TID123", // Terminal ID
  "responseCode": -1, // Código respuesta
  "responseMessage": "Anulación exitosa",
  "commerceCode": 123456789, // Código comercio
  "authorizationCode": 144385, // Código auth anulación
  "operationId": 579598, // Nueva operación ID
  "metadata": "Devolución por falla" // Metadata original
}

-Cancelación (Cancellation)

Request: CancellationRequest

{
  "transactionType": "CANCELLATION", // (*) Tipo fijo
  "mid": "123456789012345", // (*) Merchant ID
  "operationId": 579597, // (*) ID operación a cancelar
  "printOnPos": true, // Imprimir comprobante
  "metadata": "Error en precio", // Motivo
  "authorizationCode": "144385" // (*) Código auth original
}

Response: CancellationResponse

{
  "responseCode": -1,
  "responseMessage": "Cancelación exitosa",
  "commerceCode": 123456789,
  "serialNumber": 987654,
  "tid": "TID123",
  "authorizationCode": "144385",
  "operationId": 579597,
  "metadata": "Error en precio"
}

-Cierre (Closure)

Request: ClosureRequest

{
  "transactionType": "CLOSURE", // (*) Tipo fijo
  "mid": "123456789012345", // (*) Merchant ID
  "printOnPos": true, // Imprimir reporte
  "metadata": "Cierre turno tarde" // Observaciones
}

Response: ClosureResponse

{
  "responseCode": -1,
  "responseMessage": "Cierre exitoso",
  "commerceCode": 123456789,
  "metadata": "Cierre turno tarde"
}

-Reimpresión (Reprint)

Request: RePrintRequest

{
  "transactionType": "REPRINT", // (*) Tipo fijo
  "mid": "123456789012345", // (*) Merchant ID
  "operationId": 579597, // (*) ID operación
  "printOnPos": true, // Imprimir en terminal
  "metadata": "Cliente perdió voucher" // Motivo
}

Response: RePrintResponse

{
  "responseCode": -1,
  "responseMessage": "Reimpresión exitosa",
  "commerceCode": 123456789,
  "metadata": "Cliente perdió voucher"
}

-Reportes (Reporte)

Request: ReportRequest

{
  "transactionType": "REPORTE", // (*) Tipo fijo
  "mid": "123456789012345", // (*) Merchant ID
  "reportType": "DETALLE", // (*) "TOTAL" o "DETALLE"
  "reportDay": "ULTIMO", // (*) "ULTIMO" o "PENULTIMO"
  "printOnPos": true, // Imprimir en terminal
  "metadata": "Auditoría mensual" // Observaciones
}

Response para TOTAL: ReportResponseTotal

{
  "responseCode": -1,
  "responseMessage": "Reporte generado exitosamente",
  "data": "Resumen consolidado...",
  "metadata": "Auditoría mensual"
}

Reponse para DETALLE: ReporteReponseDetalle

{
  "CommerceCode": 123456789,
  "Metadata": "Auditoría mensual",
  "ResponseCode": -1,
  "ResponseMessage": "Reporte detalle generado",
  "ResponseReportCommerce": {
    "NombreFantasia": "Mi Tienda S.A.",
    "RazonSocial": "Mi Tienda Sociedad Anónima",
    "Rut": "12.345.678-9",
    "Direccion": "Av. Principal 123",
    "Region": "Metropolitana",
    "Comuna": "Santiago",
    "Ciudad": "Santiago",
    "Comercio": "Tienda Central",
    "Terminal": "POS-001",
    "Version": "2.1.0",
    "FechaContable": "15-01-2024"
},
"ResponseReportDetail": {
  "MontoTotalVentaAfecta": 1500000,
  "MontoTotalVentaExenta": 500000,
  "MontoTotalVentaPropinas": 150000,
  "MontoTotalVentaCancelaciones": 200000,
  "MontoTotalVentaAnulaciones": 100000,
  "MontoTotalVentaConsumo": 0,
  "MontoTotalVenta": 1850000,
  "CantidadTotalVentaAfecta": 45,
  "CantidadTotalVentaExenta": 15,
  "CantidadTotalVentaPropinas": 12,
  "CantidadTotalVentaCancelaciones": 3,
  "CantidadTotalVentaAnulaciones": 2,
  "CantidadTotalVentaConsumo": 0,
  "CantidadTotalVenta": 77,
  "Transacciones": [
    {
      "DetalleVentaTransaccion": "VENTA",
      "DetalleVentaOperacion": "579597",
      "DetalleVentaAuthCode": "144385",
      "DetalleVentaLast4Digits": "2876",
      "DetalleVentaPropina": "1000",
      "DetalleVentaMonto": "10000",
      "DetalleVentaHoraTrx": "10:30:15"
		}
	]
},
  "ResponseReportTitle": "REPORTE DETALLADO DE VENTAS"
}

-Pruebas (Echotest/Coinntest)

Request: EchoTestRequest

{
 "transactionType": "ECHOTEST", // O "CONNTEST"
 "mid": "123456789012345" // (*) Merchant ID
}

Response: EchoTestResponse

{
 "responseCode": -1,
 "responseMessage": "Conexión exitosa con autorizador"
}

-Renovación de llaves (Keysrenewal)

Request: KeysRenewalRequest

{
 "transactionType": "KEYSRENEWAL", // (*) Tipo fijo
 "mid": "123456789012345" // (*) Merchant ID
}

Response: KeysRenewalResponse

{
 "responseCode": -1,
 "responseMessage": "Llaves renovadas exitosamente"
}