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:

Campo

Valor

Descripción

sdkVersion

4

La versión del SDK

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

time

1717044602254

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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:

Campo

Tipo

Descripción

print

Boolean

Si es true, entonces se imprime en el POS.

metadata

String

Datos 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:

Campo

Valor

Descripción

sdkVersion

5

La versión del SDK

appId

600045

El indentificador de la aplicación

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

retCode

0

El código de respuesta (0 = Éxito).

errMsg

Mensaje de error.

time

1759426183232

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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:

Campo

Tipo

Descripción

commerceCode

Integer

Código del comercio.

responseCode

Integer

Código de respuesta.

responseMessage

String

Mensaje de respuesta.

metadata

String

Datos 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:


Campo

Valor

Descripción

sdkVersion

4

La versión del SDK.

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-7042 7efae5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

time

1717044602254

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.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:

Campo

Tipo

Descripción

print

Boolean

Si es true, entonces se imprime en el POS.

returnAmount

Integer

Monto a anular. Debe ser menor o igual que el monto de la venta (saleAmount).

authorizationCode

Integer

Código de autorización de la venta a devolver.

saleAmount

Integer

Monto de la venta original.

saleDate

String

Fecha de la venta a devolver en formato DD-MM-AAAA.

metadata

String

Datos requeridos por el terminal de pago.


-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:

Campo

Valor

Descripción

sdkVersion

4

La versión del SDK.

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-704 27efae5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

retCode

0

El código de respuesta (0 = Éxito).

errMsg

Mensaje de error.

time

1759426183232

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.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:

Campo

Tipo

Descripción

commerceCode

Integer

Código del comercio.

responseCode

Integer

Código de respuesta.

responseMessage

String

Mensaje de respuesta.

serialNumber

Integer

Serial Number del POS

tid

String

Identificación del terminal.

authorizationCode

Integer

Código de autorización de la anulación.

metadata

String

Datos 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:

Campo

Valor

Descripción

sdkVersion

4

La versión del SDK.

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

time

1717044602254

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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:

Campo

Tipo

Descripción

print

Boolean

Si es true, entonces se imprime en el POS.

saleAmount

Integer

Monto de la venta.

ticket

String

Número del ticket.

saleType

Integer

Tipo de la venta (0=AFECTA/ 1= EXENTA).

saleTip

Integer

Monto de la propina.

installmentsNumber

Integer

Cantidad de cuotas.

metadata

String

Datos 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:

Campo

Valor

Descripción

sdkVersion

4

La versión del SDK

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

retCode

0

El código de respuesta (0 = Éxito).

time

1759426183232

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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:

Campo

Valor

Descripción

sdkVersion

4

La versión del SDK.

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

time

1717044602254

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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:

Campo

Valor

Descripción

sdkVersion

5

La versión del SDK.

appId

600045

El identificador de la aplicación.

id

260bb710-c5c7-44ef-8df4-70427efa e5d5

El identificador de la transacción es el UUID.

eid

MD2025

El identificador del EPOS.

sn

1852370411

El número de serie del terminal de pago.

retCode

0

El código de respuesta (0 = Éxito).

errMsg

Mensaje de error.

time

1759426183232

El timestamp en milisegundos de cuando el mensaje fue enviado.

type

com.pax.nebula.message.Payment

El 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.