Skip to main content

Mercantil

Introducción

Este documento proporciona las especificaciones para implementar los métodos de pagos de Mercantil a través del API de Luka.

La URL está especificada en Ambientes.

La autenticación se realiza a través de un token (JWT) que retorna el método de login con las credenciales proporcionadas por Lukapay. Ver documentación.

Métodos de Pago

Auth para pago con tarjeta de débito

Permite obtener la clave de autenticación para pagar con tarjeta de débito a través de BNC.

Request

POST {URL}/api/v1/transaccion/mercantil.auth

Headers

Content-Type: application/json
Authorization: Bearer {token}

Body

Nombre del campoDescripciónTipoObligatorio
TarjetaEl número de tarjetaString
CedulaEl número de cédulaString
ClientIdentifyObjeto con datos de la conexión de clienteObjectNo

Propiedad del objeto ClientIdentify

Nombre del campoDescripciónTipoObligatorio
ipaddressDirección IP de donde se realiza la conexiónString
browser_agentNavegador de donde se realiza la conexiónString

Response

NombreDescripciónTipo
ExitosoIndica si la autenticación fue exitosaBoolean
TipoDeAutorizacionTipo de autorizaciónString
InfoAutorizaciónObjeto con información de la información devuelto por MercantilObject

Ejemplo de uso

Request body

{
"Tarjeta": "501878200066287386",
"Cedula": "18366876",
"ClientIdentify": {
"ipaddress": "127.0.0.1",
"browser_agent": "Chrome 18.1.3"
}
}

Response body

Success
{
"Exitoso": true,
"TipoDeAutorizacion": "opt",
"InfoAutorizacion": {
"procesing_date": null,
"trx_status": "approved",
"trx_type": "solaut",
"payment_method": "tdd",
"twofactor_type": "4tKfujuhjjd89sdjh=="
}
}
Failed
{
"errorauth": "Numero de tarjeta incorrecto"
}

Códigos de Error

CódigoMensaje
401acceso no autorizado
500ocurrió un error inesperado

Tarjeta de débito

Permite realizar pagos con tarjeta de débito.

note

Necesita la autenticación como paso previo, este corresponde al método anterior.

Request

POST {URL}/api/v1/transaccion/mercantil.paytdd

Headers

Content-Type: application/json
Authorization: Bearer {token}

Body

Nombre del campoDescripciónTipoObligatorio
TarjetaEl número de tarjeta vinculado al iniciar la autenticaciónString
CedulaEl número de cédula vinculado al iniciar la autenticaciónString
ClientIdentifyObjeto vinculado al iniciar la autenticaciónObjectNo
NombreTarjetaHabienteNombre del TarjetaHabienteString
TipodeCuentaTipo de CuentaString
ClaveTelefonicaClave TelefónicaString
FechaExpiracionFecha de expiración. Formato requerido mm/yyyyString
CodigoSeguridadCódigo de SeguridadString
MontoMontoNumber
InfoAutorizacionObjeto MercantilAuthtddResponseObject
trazaIdIdentificador único de trazabilidad en la base de datos del comercio. Se recomienda enviar siempre.StringNo

Response

NombreDescripciónTipo
CanalIndica el canal que se está utilizando para aplicar el pago en LukapayNumber
CargosAdicionalesObjeto que contiene cargos adicionales.Object
CuotasObjeto que contiene información sobre cuotas.Object
DescripciónContiene la respuesta de la aplicación del pago, como estatus de la transacción y cualquier información adicionalString
ExitosoIndica si la transacción fue exitosa o no. Se utiliza para validar la respuestaBoolean
FechaOperacionFecha que ocurrió la transacciónString
InfoProcesoObjeto que contiene información más detallada del estatus de la transacciónObject
InfoTarjetaObjeto que contiene información de la tarjeta de crédito utilizada para realizar el pago. Solo aplica para pagos con tarjetaObject
InfoUsuarioPagadorObjeto que devuelve información básica del usuario que realiza el pagoObject
MedioDePagoIndica el método de pago que se utilizóString
MerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoString
MonedaCódigo de la moneda utilizada para realizar el pagoString
MontoIndica el monto del pago realizadoNumber
MontoOriginalObjeto con información del monto original. Se utiliza cuando se debe aplicar una conversión de monedaObject
MontoUsdValor del monto en dólar estadounidense. Se utiliza cuando se especifica el MontoOriginalNumber
TarjetaHabienteObjeto que contiene información del pagador (en caso de haber sido especificado)Object
TransaccionIdReferencia de la transacción en LukapayNumber
TransaccionMerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoNumber
TrazaIdIdentificador interno del comercio. En caso de que el comercio no lo proporcione se genera un código aleatorio.String

Los atributos de los objetos están especificados en Respuesta de transacción.

Ejemplo de uso

Request body

{
"Tarjeta": "501878200066287386",
"Cedula": "18366876",
"ClientIdentify": {
"ipaddress": "127.0.0.1",
"browser_agent": "Chrome 18.1.3"
},
"NombreTarjetaHabiente": "Adquiriente",
"TipodeCuenta": "ahorro",
"ClaveTelefonica": "11111111",
"FechaExpiracion": "03/2022",
"CodigoSeguridad": "563",
"Monto": 1,
"InfoAutorizacion": {
"authentication_info": {
"procesing_date": null,
"trx_status": "approved",
"trx_type": "solaut",
"payment_method": "tdd",
"twofactor_type": "4tKooo0HYTEV45jHHJ=="
},
"merchant_identify": {
"integratorId": 200292,
"merchantId": 200292,
"terminalId": "apipayco"
}
}
}

Response body

Success
{
"Monto":1,
"MontoUsd":0,
"InfoProceso":null,
"TarjetaHabiente":{
"Apellido":"Perez",
"LukapayId":null,
"Nombre":"Pedro",
"NumeroIdentificacionPersonal":null,
"NumeroTelefono":null
},
"InfoUsuarioPagador":null,
"Moneda":"VES",
"InfoTarjeta":{
"Bin":"501800",
"CategoriaTarjeta":null,
"Ciudad":null,
"CodigoPostal":null,
"Descripcion":null,
"Direccion":null,
"EstaBoveda":false,
"Estado":null,
"FechaVencimiento":"02/2023",
"Id":0,
"IdStatus":0,
"Moneda":null,
"Pais":null,
"SubTipoTarjeta":null,
"TipoTarjeta":null
},
"TransaccionId":90005,
"TransaccionMerchantId":90005,
"Descripcion":"transacción exitosa",
"TrazaId":"9b2nnn1b-326n-436n-8hnf-0a000oklcf3h9",
"Exitoso":true,
"Canal":"Api",
"MedioDePago":"Débito",
"MontoOriginal":null,
"MerchantId":null,
"FechaOperacion":"2023-04-01 13:36:47.588913+00:00",
"CargosAdicionales":null
}
Failed
{
"Monto":1,
"MontoUsd":0,
"InfoProceso":null,
"TarjetaHabiente":null,
"InfoUsuarioPagador":null,
"Moneda":"VES",
"InfoTarjeta":null,
"TransaccionId":90005,
"TransaccionMerchantId":0,
"Descripcion":"Cliente informado no es titular del medio de pago",
"TrazaId":"9b2nnn1b-326n-436n-8hnf-0a000oklcf3h9",
"Exitoso":false,
"Canal":"Api",
"MedioDePago":"Débito",
"MontoOriginal":null,
"MerchantId":null,
"FechaOperacion":"2023-04-01 13:36:47.588913+00:00",
"CargosAdicionales":null
}

Tarjeta de crédito

Permite procesar pago con la tarjeta de crédito de mercantil.

Request

POST {URL}/api/v1/transaccion/mercantil.paytdc

Headers

Content-Type: application/json
Authorization: Bearer {token}
userIp: {dirección IP del cliente}

Request Body

Nombre del campoDescripciónTipoObligatorio
CedulaDocumento de identificación asociada a la tarjeta de débito a pagarString
TarjetaNúmero de la tarjeta de débitoString
IdTrazaIdentificador único de trazabilidad en la base de datos del comercioString
NombreTarjetaHabienteNombre del pagadorString
FechaExpiracionFecha de expiración de la tarjeta de débito. Formato: “MM/YYYY”String
CodigoSeguridadCódigo de seguridad CVVStringNo
MontoMonto de la operaciónNumber
IdCanalCanal por donde realiza la operación. Posibles valores: 1. Pasarela, 2. API (default), 3. Link de Pago, 4. Android, 5. iOSNumberNo
EmailDirección de correo electrónico del cliente que realiza el pagoString
DireccionIpDirección IP de donde se realiza la conexiónString
CargosAdicionalesObjeto con la información de cargos adicionalesObjectNo

Response

NombreDescripciónTipo
CanalIndica el canal que se está utilizando para aplicar el pago en LukapayNumber
CargosAdicionalesObjeto que contiene cargos adicionales.Object
CuotasObjeto que contiene información sobre cuotas.Object
DescripciónContiene la respuesta de la aplicación del pago, como estatus de la transacción y cualquier información adicionalString
ExitosoIndica si la transacción fue exitosa o no. Se utiliza para validar la respuestaBoolean
FechaOperacionFecha que ocurrió la transacciónString
InfoProcesoObjeto que contiene información más detallada del estatus de la transacciónObject
InfoTarjetaObjeto que contiene información de la tarjeta de crédito utilizada para realizar el pago. Solo aplica para pagos con tarjetaObject
InfoUsuarioPagadorObjeto que devuelve información básica del usuario que realiza el pagoObject
MedioDePagoIndica el método de pago que se utilizóString
MerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoString
MonedaCódigo de la moneda utilizada para realizar el pagoString
MontoIndica el monto del pago realizadoNumber
MontoOriginalObjeto con información del monto original. Se utiliza cuando se debe aplicar una conversión de monedaObject
MontoUsdValor del monto en dólar estadounidense. Se utiliza cuando se especifica el MontoOriginalNumber
TarjetaHabienteObjeto que contiene información del pagador (en caso de haber sido especificado)Object
TransaccionIdReferencia de la transacción en LukapayNumber
TransaccionMerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoNumber
TrazaIdIdentificador interno del comercio. En caso de que el comercio no lo proporcione se genera un código aleatorio.String

Los atributos de los objetos están especificados en Respuesta de transacción.

Ejemplos de uso

Request body

{
"IdTraza": "dc12c15d2cbe",
"Tarjeta": "4850123456789010",
"Cedula": "V12345678",
"NombreTarjetaHabiente": "Pedro Perez",
"FechaExpiracion": "12/2024",
"CodigoSeguridad": "123",
"Monto": 10.0,
"DireccionIp": "10.0.0.0",
"IdCanal": 2,
"MontoOriginal": null,
"Link": null,
"Email": "demo@example.com",
"BrowserAgent": "Chrome",
"Referencia": null,
"CargosAdicionales": {
"Comision": 0.0,
"OtrosCargos": [
{
"Concepto": "IVA",
"Monto": 1.6
}
],
"TotalCargos": 1.6,
"MonedaCargos": "VES"
}
}

Response body

{
"Monto": 10.0,
"MontoUsd": 0.0,
"InfoProceso": null,
"TarjetaHabiente": {
"Nombre": "Pedro Perez",
"Apellido": "",
"NumeroIdentificacionPersonal": null,
"NumeroTelefono": null,
"LukapayId": null
},
"InfoUsuarioPagador": null,
"Moneda": "VES",
"InfoTarjeta": {
"Id": 0,
"UltimosCuatroDigitos": "9010",
"SubTipoTarjeta": null,
"TipoTarjeta": null,
"CategoriaTarjeta": null,
"Bin": "485012",
"FechaVencimiento": "12/2024",
"Pais": null,
"EstaBoveda": false,
"Direccion": null,
"Descripcion": null,
"IdStatus": 0,
"Moneda": null,
"Ciudad": null,
"Estado": null,
"CodigoPostal": null
},
"TransaccionId": 82025,
"TransaccionMerchantId": 442528,
"Descripcion": "transacción exitosa",
"TrazaId": "dc12c15d2cbe",
"Exitoso": true,
"Canal": "API",
"MedioDePago": "Crédito",
"MontoOriginal": null,
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": {
"Comision": 0.0,
"OtrosCargos": [
{
"Concepto": "IVA",
"Monto": 1.6
}
],
"TotalCargos": 1.6,
"MonedaCargos": "VES"
}
}

Pago C2P

Permite realizar pago a través de la modalidad C2P

Request

POST {URL}/api/v1/transaccion/mercantil.payc2p

Headers

Content-Type: application/json
Authorization: Bearer {token}
userIp: {dirección IP del cliente}

Request Body

Nombre del campoDescripciónTipoObligatorio
TelefonoDestinoTeléfono del cliente pagadorString
CodigoBancoDestinoCódigo del Banco PagadorString
IdTrazaIdentificador único de trazabilidad en la base de datos del comercioString
NumeroCedulaCedula del cliente pagadorString
NombrePagadorNombre del cliente pagadorStringNo
MontoMonto de la operaciónNumber
IdCanalCanal por donde realiza la operación. Posibles valores: 1: Pasarela, 2: API (default), 3: Link de Pago, 4: Android, 5: iOSNumberNo
EmailDirección de correo electrónico del cliente que realiza el pagoString
ReferenciaIdentificación del cliente final en caso de que se requieraStringNo
ClavePagoCódigo OTPString
DireccionIpDirección IP de donde se realiza la conexiónString

Response

NombreDescripciónTipo
CanalIndica el canal que se está utilizando para aplicar el pago en LukapayNumber
CargosAdicionalesObjeto que contiene cargos adicionales.Object
CuotasObjeto que contiene información sobre cuotas.Object
DescripciónContiene la respuesta de la aplicación del pago, como estatus de la transacción y cualquier información adicionalString
ExitosoIndica si la transacción fue exitosa o no. Se utiliza para validar la respuestaBoolean
FechaOperacionFecha que ocurrió la transacciónString
InfoProcesoObjeto que contiene información más detallada del estatus de la transacciónObject
InfoTarjetaObjeto que contiene información de la tarjeta de crédito utilizada para realizar el pago. Solo aplica para pagos con tarjetaObject
InfoUsuarioPagadorObjeto que devuelve información básica del usuario que realiza el pagoObject
MedioDePagoIndica el método de pago que se utilizóString
MerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoString
MonedaCódigo de la moneda utilizada para realizar el pagoString
MontoIndica el monto del pago realizadoNumber
MontoOriginalObjeto con información del monto original. Se utiliza cuando se debe aplicar una conversión de monedaObject
MontoUsdValor del monto en dólar estadounidense. Se utiliza cuando se especifica el MontoOriginalNumber
TarjetaHabienteObjeto que contiene información del pagador (en caso de haber sido especificado)Object
TransaccionIdReferencia de la transacción en LukapayNumber
TransaccionMerchantIdReferencia de la transacción del merchant utilizado para aplicar el pagoNumber
TrazaIdIdentificador interno del comercio. En caso de que el comercio no lo proporcione se genera un código aleatorio.String

Los atributos de los objetos están especificados en Respuesta de transacción.

Ejemplo de uso

Request Body

{
"Email": "demo@example.com",
"DireccionIp": "1.1.1.1",
"ClavePago": "12345678",
"Monto": 10,
"CodigoBancoDestino": "0123",
"NumeroCedula": "V123456789",
"TelefonoDestino": "584121234567",
"Link": null,
"Referencia": null,
"IdTraza": "2a5da8b19622",
"IdCanal": 2,
"NombrePagador": "Pedro Perez",
"MontoOriginal": null,
"CargosAdicionales": null
}

Response Body

{
"Monto": 10.0,
"MontoUsd": 0.0,
"InfoProceso": null,
"TarjetaHabiente": null,
"InfoUsuarioPagador": {
"Nombre": "Pedro",
"Apellido": "Perez",
"NumeroIdentidad": "V123456789",
"NumeroTelefono": "584121234567",
"Email": "demo@example.com"
},
"Moneda": "VES",
"InfoTarjeta": null,
"TransaccionId": 102638,
"TransaccionMerchantId": 102638,
"Descripcion": "transacción exitosa",
"TrazaId": "2a5da8b19622",
"Exitoso": true,
"Canal": "Api",
"MedioDePago": "C2P",
"MontoOriginal": null,
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": null,
"Cuotas": null
}

Vuelto

Permite realizar una transacción P2P desde el banco Mercantil.

Request

POST {URL}/api/v1/transaccion/mercantil.payp2p.token

Headers

Content-Type: application/json
Authorization: Bearer {token}

Query Params

Los siguientes parámetros se envían a través del querystring del a consulta

NombreTipoDescripción
userIpStringDirección IP de donde se realiza la conexión
idUsuarioStringIdentificador único del usuario.
emailStringDirección de correo electrónico del usuario

Body

Array de objetos con la siguiente estructura:

Nombre del campoDescripciónTipoObligatorio
NumeroCedulaDocumento de identificación asociada al teléfono destinoString
TelefonoDestinoTeléfono destino de los fondosString
MontoMonto de la operaciónNumber
CodigoBancoDestinoCódigo del banco destinoString
DescripcionDescripción agregada por el usuarioString

Response

En caso de ser exitosa la respuesta, tendrá un status code de 202. Además, se le enviará un correo electrónico al usuario que hizo la operación con el resultado del proceso.

Ejemplos de uso

Request

{URL}/api/v1/transaccion/mercantil.payp2p.token?userIp=1.1.1.1&idUsuario=123&email=demo@lukapay.io

Request body

[
{
"NumeroCedula": "V6888473",
"TelefonoDestino": "584166227839",
"Monto": 12.00,
"CodigoBancoDestino": "0105",
"Descripcion": "Prueba P2P V1"
},
{
"NumeroCedula": "V6888473",
"TelefonoDestino": "584166227839",
"Monto": 50.99,
"CodigoBancoDestino": "0105",
"Descripcion": "Prueba P2P V2"
}
]

Webhooks para pagos diferidos

Nuestra plataforma valida en línea la referencia de pago registrada por el usuario. Si no se encuentra automáticamente, la transacción se marca como "Pendiente por revisión" y se reintenta hasta 5 veces cada 2 minutos. Si aún no se encuentra, se revisa manualmente. En estos casos, el usuario es notificado por correo. En la integración, el campo Exitoso será true, pero se debe verificar InfoProceso.EstatusProcesamiento para conocer el estatus real del pago: success (exitoso) o pending (pendiente). El estatus final se envía a través de un webhook.

Ver más sobre webhooks.