Transacciones BCI Pagos

En este capítulo se muestran las transacciones definidas en la aplicación BCI Pagos.

-En esta aplicación, los tópicos usados para publicar y suscribir mensajes son los siguientes:


OperaciónAPP IDCLIENTIDTópico
publicar600045ecr100742ecr-req/600045/ecr100742
suscribir600045ecr100742ecr-res/600045/ecr100742

-Todos los mensajes, ya sea de solicitud o de respuesta, tienen un campo de texto
llamado metadata, que contiene información relevante para el negocio. Toda la información
que se envíe en el campo metadata no será interpretada ni sufrirá alteraciones,
permaneciendo inmutable en el transcurso de la transacción. Uno de los usos posibles es
enviar un string con separadores de campos, un json, etc.

-CashClosing (Cierre)

Esta transacción permite realizar un cierre de operaciones en un terminal de pago.

-A continuación se muestra un ejemplo de un mensaje JSON de solicitud de la
transacción CashClosing y la explicación de sus campos.

{ 
"sdkVersion": 4, 
"appId": "600045", 
"id": "302ec8d7-eb0f-466e-bea4-1387d054a054", 
"eid": "MD2026", 
"sn": "2820171412", 
"time": 1770853192334, 
"type": "com.pax.nebula.message.Payment", 
"jsonData": 
"{\"packageName\":\"cl.bci.bcipagos.dev\",\"category\":\"cl.transformapp.payment.cashClosing\",\"jsonData\":\"{\\\"print\\\":true,\\\"metadata\\\":\\\"\\\"}\"}" 
}

-Los campos de las diferentes capas de esta solicitud de la transacción CashClosing
son:

CampoValorDescripción
sdkVersion4La versión del SDK
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
time1717044602254El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"packageName\":\"cl.bci.bcipagos.dev\", \"category\":\"cl.transformapp.payment.cashClosing\", \"jsonData\":\"{\\\"print\\\":true, \\\"metadata\\\":\\\"\\\"}\"}La capa de control está codificada como
un String en este campo:
  • packageName con el valor
    cl.bci.bcipagos.dev
  • category con el valor cl.transformapp.payment.cashClosign
  • jsonData campos de la capa de párametros

-Los campos de la capa de parámetros en la solicitud de la transacción CashClosing
son los siguientes:

CampoTipoDescripción
printBooleanSi es true, entonces se imprime en el POS.
metadataStringDatos requeridos por el terminal de pago.

-A continuación se muestra el mensaje JSON con la respuesta de la transacción
CashClosing:

{ 
"sdkVersion": 5, 
"appId": "600045", 
"id": "260bb710-c5c7-44ef-8df4-70427efae5d5", 
"eid": "MD2025", 
"sn": "1852370411", 
"retCode": 0, 
"errMsg": "", 
"time": 1759426183232, 
"type": "com.pax.nebula.message.Payment", 
"jsonData": 
"{\"jsonData\":\":{\\\"commerceCode\\\":3,\\\"metadata\\\":\\\"datos\\\",\\\"responseCode\\\":0,\\\"responseMessage\\\":\\\"Success\\\"}\"}" 
}

-Los campos de las diferentes capas de la respuesta de la transacción CashClosing
son:

CampoValorDescripción
sdkVersion5La versión del SDK
appId600045El indentificador de la aplicación
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
retCode0El código de respuesta (0 = Éxito).
errMsgMensaje de error.
time1759426183232El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"jsonData\":\":{\\\"commerceCode\\\":3, \\\"metadata\\\":\\\"datos\\\",\\\"responseCode\\\":0, \\\"responseMessage\\\":\\\"Success\\\"}\"} Campos de respuesta de la transacción.

-Los subcampos del campo jsonData de la respuesta de la transacción CashClosing
son:

CampoTipoDescripción
commerceCodeIntegerCódigo del comercio.
responseCodeIntegerCódigo de respuesta.
responseMessageStringMensaje de respuesta.
metadataStringDatos requeridos por el terminal de pago.

- Return (Devolución)

Esta transacción permite devolver parte o el total de una venta realizada previamente.

-A continuación se muestra un ejemplo de un mensaje JSON de solicitud de la
transacción Return y la explicación de sus campos.

{ 
  "sdkVersion": 4, 
  "appId": "600045", 
  "id": "302ec8d7-eb0f-466e-bea4-1387d054a054", 
  "eid": "MD2026", 
  "sn": "2820171412", 
  "time": 1770853382817, 
  "type": "com.pax.nebula.message.Payment", 
  "jsonData": 
"{\"packageName\":\"cl.bci.bcipagos.dev\",\"category\":\"cl.transformapp.payment.return\",\"jsonData\":\"{\\\"print\\\":true,\\\"returnAmount\\\":0,\\\"authorizationCode\\\":0,\\\"saleAmount\\\":5000,\\\"saleDate\\\":\\\"11-02-2026\\\",\\\"metadata\\\":\\\"\\\"}\"}" 
}

-Los campos de las diferentes capas de esta solicitud de la transacción Return son:

CampoValorDescripción
sdkVersion4La versión del SDK.
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-7042
7efae5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
time1717044602254El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.Pay
ment
El tipo de mensaje.
jsonData{\"packageName\":\"cl.bci.bcipagos.dev\", \"category\":\"cl.transformapp.payment.return\", \"jsonData\":\"{\\\"print\\\":true,\\\"returnAmount\\\":0, \\\"authorizationCode\\\":0,\\\"saleAmount\\\":5000, \\\"saleDate\\\":\\\"11-02-2026\\\",\\\"metadata\\\":\\\"\\\"}\"} La capa de control está codificada como
un String en este campo:
  • packageName con el valor de cl.bci.bcipagos.dev
  • category con el valor cl.transformapp.payment.return
  • jsonData con el valor cl.transformapp.payment.return

-Los campos de la capa de parámetros en la solicitud de la transacción Return son los
siguientes:

CampoTipoDescripción
printBooleanSi es true, entonces se imprime en el POS.
returnAmountIntegerMonto a anular. Debe ser menor o igual que el monto de la venta (saleAmount).
authorizationCodeIntegerCódigo de autorización de la venta a devolver.
saleAmountIntegerMonto de la venta original.
saleDateStringFecha de la venta a devolver en formato DD-MM-AAAA.
metadataStringDatos requeridos por el terminal de pago.
operationNumberStringNúmero de operación
serialNumberStringNúmero de serial POS

-A continuación se muestra el mensaje JSON con la respuesta de la transacción
Return:

{ 
"sdkVersion": 4, 
"appId": "600045", 
"id": "260bb710-c5c7-44ef-8df4-70427efae5d5", 
"eid": "MD2025", 
"sn": "1852370411", 
"retCode": 0, 
"errMsg": "", 
"time": 1759426183232, 
"type": "com.pax.nebula.message.Payment", 
"jsonData": 
"{\"jsonData\":\":{\\\"commerceCode\\\":3,\\\"responseCode\\\":0,\\\"responseMessage\\\":\\\"Success\\\",\\\"serialNumber\\\":9876543210,\\\"tid\\\":\\\"P101\\\",\\\"authorizationCode\\\":987654,\\\"metadata\\\":\\\"datos\\\"}\"}" 
} 

-Los campos de las diferentes capas de la respuesta de la transacción Return son:

CampoValorDescripción
sdkVersion4La versión del SDK.
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-704
27efae5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
retCode0El código de respuesta (0 = Éxito).
errMsgMensaje de error.
time1759426183232El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.Pay
ment
El tipo de mensaje
jsonData{\"jsonData\":\":{\\\"commerceCode\\\":3, \\\"responseCode\\\":0, \\\"responseMessage\\\":\\\"Success\\\", \\\"serialNumber\\\":9876543210,\\\"tid\\\":\\\"P101\\\", \\\"authorizationCode\\\":987654, \\\"metadata\\\":\\\"datos\\\"}\"}Campos de respuesta de la transacción.

-Los subcampos del campo jsonData de la respuesta de la transacción Return son:

CampoTipoDescripción
commerceCodeIntegerCódigo del comercio.
responseCodeIntegerCódigo de respuesta.
responseMessageStringMensaje de respuesta.
serialNumberIntegerSerial Number del POS
tidStringIdentificación del terminal.
authorizationCodeIntegerCódigo de autorización de la anulación.
metadataStringDatos requeridos por el terminal de pago.

-Sale (Venta)

Esta transacción permite realizar una venta en un terminal de pago.

-A continuación se muestra un ejemplo de un mensaje JSON de solicitud de la
transacción Sale y la explicación de sus campos.

{ 
  "sdkVersion": 4, 
  "appId": "600045", 
  "id": "302ec8d7-eb0f-466e-bea4-1387d054a054", 
  "eid": "MD2026", 
  "sn": "2820171412", 
  "time": 1770853529913, 
  "type": "com.pax.nebula.message.Payment", 
  "jsonData": 
"{\"packageName\":\"cl.bci.bcipagos.dev\",\"category\":\"cl.transformapp.payment.sale\",\"jsonData\":\"{\\\"saleAmount\\\":5000,\\\"ticket\\\":\\\"123\\\",\\\"print\\\":true,\\\"saleType\\\":0,\\\"tipAmount\\\":500,\\\"installmentsNumber\\\":0,\\\"metadata\\\":\\\"\\\"}\"}" 
}

-Los campos de las diferentes capas de esta solicitud de la transacción Sale son:

CampoValorDescripción
sdkVersion4La versión del SDK.
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
time1717044602254El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"packageName\":\"cl.bci.bcipagos.dev\", \"category\":\"cl.transformapp.payment.sale\", \"jsonData\":\"{\\\"saleAmount\\\":5000, \\\"ticket\\\":\\\"123\\\",\\\"print\\\":true, \\\"saleType\\\":0,\\\"tipAmount\\\":500, \\\"installmentsNumber\\\":0, \\\"metadata\\\":\\\"\\\"}\"}La capa de control está codificada como
un String en este campo:
  • packageName con el valor
    cl.bci.bcipagos.devpackageName con el valor
    cl.bci.bcipagos.dev
  • category con el valor
    cl.transformapp.payment.sale
  • jsonData campos de la capa de
    parámetros.

-Los campos de la capa de parámetros en la solicitud de la transacción Sale son los
siguientes:

CampoTipoDescripción
printBooleanSi es true, entonces se imprime en el POS.
saleAmountIntegerMonto de la venta.
ticketStringNúmero del ticket.
saleTypeIntegerTipo de la venta (0=AFECTA/ 1= EXENTA).
saleTipIntegerMonto de la propina.
installmentsNumberIntegerCantidad de cuotas.
metadataStringDatos requeridos por el terminal de pago.

-A continuación se muestra el mensaje JSON con la respuesta de la transacción Sale:

{ 
  "sdkVersion": 4, 
  "appId": "600045", 
  "id": "260bb710-c5c7-44ef-8df4-70427efae5d5", 
  "eid": "MD2025", 
  "sn": "1852370411", 
  "retCode": 0, 
  "errMsg": "", 
  "time": 1759426183232, 
  "type": "com.pax.nebula.message.Payment", 
  "jsonData": 
"{\"jsonData\":\":{\\\"commerceCode\\\":3,\\\"responseCode\\\":0,\\\"responseMessage\\\":\\\"Success\\\", \\\"serialNumber\\\":9876543210,\\\"ticketValue\\\":\\\"\\\",\\\"saleAmount\\\":10000, \\\"sharesNumber\\\":0,\\\"saleBIN\\\":444455,\\\"operationId\\\":123,\\\"cardType\\\":\\\"C\\\", \\\"saleTip\\\":1000,\\\"tid\\\":\\\"P101\\\",\\\"authorizationCode\\\":765432,\\\"accountingData\\\":\\\"03-10-2025 15:12:40\\\",\\\"saleType\\\":\\\"AFECTA\\\", \\\"metadata\\\":\\\"datos\\\"}\"}" 
} 

-Los campos de las diferentes capas de la respuesta de la transacción Sale son:

CampoValorDescripción
sdkVersion4La versión del SDK
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
retCode0El código de respuesta (0 = Éxito).
time1759426183232El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"jsonData\":\":{\\\"commerceCode\\\":3, \\\"responseCode\\\":0, \\\"responseMessage\\\":\\\"Success\\\", \\\"serialNumber\\\":9876543210, \\\"ticketValue\\\":\\\"\\\",\\\"saleAmount\\\":10000, \\\"sharesNumber\\\":0, \\\"saleBIN\\\":444455,\\\"operationId\\\":123, \\\"cardType\\\":\\\"C\\\", \\\"saleTip\\\":1000,\\\"tid\\\":\\\"P101\\\", \\\"authorizationCode\\\":765432, \\\"accountingData\\\":\\\"03-10-2025 15:12:40\\\",\\\"saleType\\\":\\\"AFECTA\\\", \\\"metadata\\\":\\\"datos\\\"}\"}Campos de respuesta de la transacción.

-Los subcampos del campo jsonData de la respuesta de la transacción Sale son:

CampoTipoDescripción
commerceCodeIntegerCódigo del comercio.
responseCodeIntegerCódigo de respuesta.
responseMessageStringMensaje de respuesta.
serialNumberIntegerNúmero de serie del terminal
ticketValueStringNúmero del ticket (reservado para uso futuro).
saleAmountIntegerMonto de la venta.
sharesNumberIntegerNúmero de cuotas.
saleBINIntegerContiene el BIN (6 primeros dígitos de la tarjeta).
operationIdIntegerIdentificador de la operación.
cardTypeStringTipo de la tarjeta.
saleTipIntegerMonto de la propina.
tidStringIdentificación del terminal.
authorizationCodeIntegerCódigo de autorización de la anulación.
accountingDataStringFecha y hora de la transacción.
saleTypeStringTipo de la venta.
metadataStringDatos requeridos por el terminal de pago.

-Void (Cancelación)

Esta transacción permite cancelar una venta previa en un terminal de pago. A continuación
se muestra un ejemplo de un mensaje JSON de solicitud de la transacción Void y la
explicación de sus campos

{ 
"sdkVersion": 4, 
"appId": "600045", 
"id": "302ec8d7-eb0f-466e-bea4-1387d054a054", 
"eid": "MD2026", 
"sn": "2820171412", 
"time": 1770853586363, 
"type": "com.pax.nebula.message.Payment", 
"jsonData": 
"{\"packageName\":\"cl.bci.bcipagos.dev\",\"category\":\"cl.transformapp.payment.void\",\"jsonData\":\"{\\\"print\\\":true,\\\"operationId\\\":0,\\\"authorizationCode\\\":0,\\\"metadata\\\":\\\"\\\"}\"}" 
}

-Los campos de las diferentes capas de esta solicitud de la transacción Void son:

CampoValorDescripción
sdkVersion4La versión del SDK.
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
time1717044602254El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"packageName\":\"cl.bci.bcipagos.dev\", \"category\":\"cl.transformapp.payment.void\", \"jsonData\":\"{\\\"print\\\":true, \\\"operationId\\\":0, \\\"authorizationCode\\\":0, \\\"metadata\\\":\\\"\\\"}\"}La capa de control está codificada como
un String en este campo:
  • packageName con el valor
    cl.bci.bcipagos.dev
  • category con
    el
    cl.transformapp.payment.void
  • jsonData campos de la capa de
    parámetros.

-Los campos de la capa de parámetros en la solicitud de la transacción Void son los
siguientes:

CampoTipoDescripción
printBooleanSi es true, entonces se imprime en el POS.
operationIdIntegerIdentificador de la operación.
authorizationCodeIntegerCódigo de autorización de la venta a cancelar.
metadataStringDatos requeridos por el terminal de pago.

-A continuación se muestra el mensaje JSON con la respuesta de la transacción Void:

{ 
"sdkVersion": 5, 
"appId": "600045", 
"id": "260bb710-c5c7-44ef-8df4-70427efae5d5", 
"eid": "MD2025", 
"sn": "1852370411", 
"retCode": 0, 
"errMsg": "", 
"time": 1759426183232, 
"type": "com.pax.nebula.message.Payment", 
"jsonData": 
"{\"jsonData\":\":{\\\"commerceCode\\\":3,\\\"responseCode\\\":0,\\\"responseMessage\\\":\\\"Success\\\", \\\"serialNumber\\\":9876543210,\\\"tid\\\":101,\\\"authorizationCode\\\":123456, \\\"operationId\\\":1234,\\\"metadata\\\":\\\"datos\\\"}\"}" 
}

-Los campos de las diferentes capas de la respuesta de la transacción Void son:

CampoValorDescripción
sdkVersion5La versión del SDK.
appId600045El identificador de la aplicación.
id260bb710-c5c7-44ef-8df4-70427efa
e5d5
El identificador de la transacción es el
UUID.
eidMD2025El identificador del EPOS.
sn1852370411El número de serie del terminal de pago.
retCode0El código de respuesta (0 = Éxito).
errMsgMensaje de error.
time1759426183232El timestamp en milisegundos de cuando
el mensaje fue enviado.
typecom.pax.nebula.message.PaymentEl tipo de mensaje.
jsonData{\"jsonData\":\":{\\\"commerceCode\\\":3, \\\"responseCode\\\":0, \\\"responseMessage\\\":\\\"Success\\\", \\\"serialNumber\\\":9876543210,\\\"tid\\\":101, \\\"authorizationCode\\\":123456,\\\"operationId\\\":1234, \\\"metadata\\\":\\\"datos\\\"}\"}Campos de respuesta de la transacción.

-Los subcampos del campo jsonData de la respuesta de la transacción Void son:

CampoTipoDescripción
commerceCodeIntegerCódigo del comercio.
responseCodeIntegerCódigo de respuesta.
responseMessageStringMensaje de respuesta.
serialNumberIntegerNúmero de serie del terminal
tidStringIdentificación del terminal.
authorizationCodeIntegerCódigo de autorización de la transacción.
operationIdIntegerIdentificador de la operación
metadataStringDatos requeridos por el terminal de pago.