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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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.