MPI
Estas son las operaciones que deberán ser consumidas por el partner para la integración
Api para preparar la ruta de redirección, a la cual deberá ir el partner para realizar la validación
Nota: la autenticación aún está en construcción, porque se está trabajando con Niubiz
Request headers
Para el valor del User-Agent, al momento de probar con postman, revisar que no esté mandando User-Agent duplicado con valores extraños propios del programa para evitar errores
Se necesita esta clave con el valor mencionado en el apartado de ejemplos para evitar interferencias con el WAF
Request body
Id generado por el partner en su sistema para la transaccion
Codigo identificador del partner, Vendemás lo proporcionará
Geopagos
Datos de la tarjeta
Marca de tarjeta a validar
Visa
Mastercard
Amex
Diners
Mes de expiración de la tarjeta
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Setiembre
Octubre
Noviembre
Diciembre
Año de expiración
Número de tarjeta. Deberá enviarse encriptado con llave asimetrica y RSA 2048, la llave pública será entregada al partner por Vendemas
Datos de la venta
Correo electrónico del tarjetahabiente.Deberá enviarse encriptado con llave asimetrica y RSA 2048, la llave pública será entregada al partner por Vendemas
Nombres del tarjetahabiente. Deberá enviarse encriptado con llave asimetrica y RSA 2048, la llave pública será entregada al partner por Vendemas
Apellidos del tarjetahabiente. Deberá enviarse encriptado con llave asimetrica y RSA 2048, la llave pública será entregada al partner por Vendemas
Monto de la transacción, con 2 decimales(separador de decimales es “punto”, sin separador de miles
Moneda
Url de servicio web restfull que deberá ser expuesto por partner para notificar el resultado del procesamiento de la transacción
Url de redirección que deberá ser expuesta por el partner, para que Vendemás redireccione y el partner se encargue de mostrar el resultado respectivo
Examples
Ejemplo de trama
{
"transactionId": "112",
"partnerCode": "001",
"card": {
"type": "001",
"expirationMonth": "01",
"expirationYear": "2025",
"number": "lD8faegIIxOJ+WgORvXB3OmguW8M/P7W6fG..."
},
"sale": {
"email": "MAj/wcm98p8gmeOY1CC1qcrwxikTCY9oA31Y...",
"firstName": "JPVFLU44j76aCkdEeFOC/Gn3PnLhcBjKWfC3YDgDFjZSceG....",
"lastName": "ZQ1VtHcUbWDv+0Q7ew5718BQqr6emRaoS565hirC....",
"amount": "10",
"currency": "PEN"
},
"notificationUrl": "https://mpi-partner.qa.vmas.com.pe/geopagos/notification/111",
"redirectUrl": "https://mpi-partner.qa.vmas.com.pe/geopagos/confirm/111"
}
Responses
Respuesta correcta (todos los otros responsecode se considera como errado)
Body
Código de respuesta
Mensaje de respuesta
Objeto de respuesta
Url de redirección
Examples
Ejemplo de respuesta
{
"code": "00",
"message": "Operacion Exitosa",
"data": {
"url": "https://mpi-front.qa.vmas.com.pe/v1/setup/eyJhbGciOiJIUzUxMiJ9.eyJkYXRlIjoiMjAyMjEwMjYwNDM2MDc5NTEiLCJzdWIiOiJuaXViaXoiLCJleHAiOjE2NjY3NTk1NjcsImlhdCI6MTY2Njc1ODk2N30.YCCbPCUFtZTP-2W4ZPmJ_Z6cHDSDmI23VJZpDnx1_jjVTR8Jw5610C9CEmfG8nPDXg4_Ihxqdqhjs4reAs3big"
}
}
Respuesta errada controlada sin error del servidor, con detalles de mensajes
Body
Código de error
Error interno
Error de Cybersource
Error de token JWT
Error en datos enviados del Partner
Request invalido
Mensaje del error
Detalle de los errores en forma de array
["sale.amount: no debe estar vacío","sale.currency: no debe estar vacío"]
Examples
Ejemplo de respuesta de trama incorrecta
{
"code": "11",
"message": "Los campos de la solicitud no son válidos",
"errors": [
"sale.amount: no debe estar vacío",
"sale.currency: no debe estar vacío"
]
}
Respuesta errada pero con error del servidor
Body
Código de error
Error interno
Request invalido
Mensaje del error
Examples
Ejemplo de respuesta de error del servidor
{
"code": "10",
"message": "Error en petición"
}
Las apis listadas en esta sección, deberán ser implementadas del lado del partner para que Vendemás pueda notificar al sistema externo
{notificationId}
{notificationId}
Esta api servirá para comunicar el resultado de la validación en MPI al partner
Consideraciones:
- Siempre el caso correcto de respuesta, será HTTP_STATUS = 200 y “code” = “00” (Transacción autorizada) o HTTP_STATUS = 200 y “code” = “96” (Transacción autorizada)
- La autenticación será con BasicAuth
- Dependiendo de la tarjeta, puede que en algunos casos no vengan los valores de XID,CAVV y ECI. Si alguno de esos valores faltase, entonces no enviar la clave faltante, y si faltasen los 3, no seria necesario enviar el objeto “authenticationRQ” que contiene a estas 3 claves como parte del api de autorizacion de Niubiz
Path variables
Identificador de la transacción enviado en la api de “Preparar Solicitud” en el campo “transactionId”
Request body
Id generado por el partner en su sistema para la transaccion, es el que fue enviado por el partner en “Preparar Solicitud”. Este campo junto con “partnerCode” deberán ser verificados por el partner para ver si la respuesta corresponde a una transacción válida
Codigo identificador del partner, es el que fue enviado por el partner en “Preparar Solicitud”. Este campo junto con “transactionId” deberán ser verificados por el partner para ver si la respuesta corresponde a una transacción válida
Geopagos
Respuesta de entidad externa MPI, solamente se deberá enviar a transaccionar (api de autorización actual de comercio electrónico) si es que el valor es AUTHENTICATION_SUCCESSFUL
Validación correcta
Validación fallida
El usuario no completó el “challenge” del banco
Protocolo de la validacion. Solo si aparece esta entrada, se debe enviar al api de autorización
Valor Directory Server Transaction ID del proceso de Autenticación. El DS de EMV 3DS genera la ID de transacción de DS, durante la transacción de autenticación y es devuelto al comercio con los resultados de la autenticación. Solo si aparece esta entrada, se debe enviar al api de autorización
Valor a usar en la api de autorización de comercio electrónico dentro del campo XID. De no recibir esta entrada, enviar al api de autorizacion el valor “null”
Valor a usar en la api de autorización de comercio electrónico dentro del campo CAVV. De no recibir esta entrada, enviar al api de autorizacion el valor “null”
Valor a usar en la api de autorización de comercio electrónico dentro del campo ECI. De no recibir esta entrada, enviar al api de autorizacion el valor “null”
Objeto con los datos de la tarjeta
Marca de tarjeta a validar
Visa
Mastercard
Amex
Diners
Mes de expiración de la tarjeta
Año de expiración
Número de tarjeta. Deberá enviarse encriptado con llave asimetrica y RSA 2048, la llave pública será entregada por el partner a Vendemas
Examples
Ejemplo de trama de transaccion que si hay que autorizar con Visa
{
"transactionId": "1",
"partnerCode": "001",
"action": "AUTHENTICATION_SUCCESSFUL",
"protocolVersion": "2.2.0",
"directoryServerTransactionId": "9986ce4b-6e8c-4a45-8aac-0883c858679f",
"xid": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=",
"cavv": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=",
"eci":"05"
"card": {
"type": "001",
"expirationMonth": "01",
"expirationYear": "2025",
"number": "lD8faegIIxOJ+WgORvXB3OmguW8M/P7W6fG..."
}
}
Ejemplo de trama de transaccion que si hay que autorizar con Mastercard (no tiene XID)
{
"transactionId": "1",
"partnerCode": "001",
"action": "AUTHENTICATION_SUCCESSFUL",
"protocolVersion": "2.2.0",
"directoryServerTransactionId": "9986ce4b-6e8c-4a45-8aac-0883c858679f",
"cavv": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=",
"eci":"2"
"card": {
"type": "001",
"expirationMonth": "01",
"expirationYear": "2025",
"number": "lD8faegIIxOJ+WgORvXB3OmguW8M/P7W6fG..."
}
}
Ejemplo de validacion fallida, por lo tanto no debe autorizarse
{
"transactionId": "1",
"partnerCode": "001",
"action": "AUTHENTICATION_FAILED",
"card": {
"type": "001",
"expirationMonth": "01",
"expirationYear": "2025",
"number": "lD8faegIIxOJ+WgORvXB3OmguW8M/P7W6fG..."
}
}
Ejemplo de validacion con TIMEOUT
{
"transactionId": "1",
"partnerCode": "001",
"action": "TIMEOUT",
"card": {
"type": "001",
"expirationMonth": "01",
"expirationYear": "2025",
"number": "lD8faegIIxOJ+WgORvXB3OmguW8M/P7W6fG..."
}
}
Responses
Estructura de la respuesta en caso de que la transacción se autorizó
Body
Código de la respuesta
Transacción autorizada
Transaccion denegada
Mensaje de detalle de la respuesta
Metadata de la respuesta del partner (queda a discreción del partner los valores extra informativos a colocar aqui)
Texto con detalle del resultado
Examples
Ejemplo en transacción autorizada
{
"code": "00",
"message": "Transacción autorizada",
"data": {
"result": "Success"
}
}
Ejemplo de transacción denegada
{
"code": "96",
"message": "Transacción denegada",
"data": {
"result": "Failed"
}
}
Estructura de la respuesta en caso de error
Body
Código de la respuesta
Request inválido
Mensaje de detalle de la respuesta
Mensaje de detalle de la respuesta
[
"Error en longitud de caracteres","Valor de XID no debe estar vacío"
]
Examples
Ejemplo de respuesta con trama errada
{
"code": "11",
"message": "Error en registro",
"errors": [
"Error en longitud de caracteres",
"Valor de XID no debe estar vacío"
]
}
Error en el servidor
Body
Código de la respuesta
Error interno del servidor
Descripción del mensaje del servidor
Examples
Ejemplo de respuesta con error del servidor
{
"code": "10",
"message": "Error interno"
}