Generación del token de Culqi
Este método tokeniza los datos de la tarjeta para la generación del cargo, la cual se envía en el objeto del request en la generación del cargo con el key source_id
.
const response = await Culqi3DS.generateToken();
if (response.token) {
// El token se genero exitosamente
// response.token -> {id: "tkn_live_xxxxxxxxxxxxxxxx", ...}
} else {
// Ocurrió un problema en la generación del token
// response.error -> {user_message: "Mensaje al cliente", ...}
}
Parámetro | Descripción |
---|---|
token object |
Objeto de la generación del token que se realizó con éxito. |
error object |
Objeto del error en la generación del token. |
Generación del deviceFingerPrintId
Este método genera un identificador único el cual sirve para enviar en el objeto antifraud_details
para la generación del cargo con el key device_finger_print_id
.
const devideFingerPrintId = await Culqi3DS.generateDevice();
if (devideFingerPrintId) {
/* '8019959c-fab1-49eb-bbbe-b846d308d8df' */
} else {
/* Error al generar el device */
}
A continuación se muestra un ejemplo del body que se manda al servicio de https://api.culqi.com/v2/charges
para la generación de cargo añadiendo el tokenId
y el deviceId
.
{
"amount": 1000,
"currency_code": "PEN",
"email": "example@yopmail.com",
+ "source_id": "tkn_live_xxxxxxxxxxxxxxxx",
"installments": 3,
"antifraud_details": {
"first_name": "Fernando",
"last_name": "Chullo Mamani",
"phone_number": "956-944-598",
+ "device_finger_print_id": "8019959c-fab1-49eb-bbbe-b846d308d8df"
}
}
Este servicio responderá diferentes HTTP StatusCode:
Status Code | Descripción |
---|---|
201 | Se generó exitosamente el cargo. |
200 | La generación de cargo necesita pasar por una autenticación (Culqi3DS). |
4xx - 5xx | Ocurrió un error en la generación del cargo. |
Iniciar autenticación 3DS
Este método inicia el proceso de autenticación 3DS, el cual consiste en que el usuario ingrese el código de autenticación dentro de un formulario que despliega la librería.
Al finalizar este flujo se obtienen algunos parámetros que se tienen que mandar para la generación de cargos. En caso exista algún error aparecerá un mensaje (ver la configuración si se quiere cambiar).
Existen 2 formas de iniciar la autenticación 3DS:
Sin pasar como parámetro un token
Esto se da cuando se utiliza la misma libreria Culqi3DS para generar el token y no Culqi Checkout
Culqi3DS.initAuthentication();
Pasando como parámetro un token generado sin utilizar culqi3DS
Esto se da cuando se utiliza Culqi Checkout
para generar el token y es enviado para iniciar la autenticación 3DS.
Culqi3DS.initAuthentication("tkn_live_xxxxxxxxxxxxxxxx");
Te mostramos un ejemplo del body que se manda al servicio de https://api.culqi.com/v2/charges por segunda vez para generación del cargo después de pasar por la autenticación 3DS.
{
"amount": 1000,
"currency_code": "PEN",
"email": "example@yopmail.com",
"source_id": "tkn_live_xxxxxxxxxxxxxxxx",
"installments": 3,
"antifraud_details": {
"first_name": "Fernando",
"last_name": "Chullo Mamani",
"phone_number": "956-944-598",
"device_finger_print_id": "8019959c-fab1-49eb-bbbe-b846d308d8df"
},
+ "authentication_3DS": {
+ "eci":"05",
+ "xid":"02010000755f8c81a4db4c848b8c23f6b0196cfd",
+ "cavv":"63617264696e616c636f6d6d6572636561757468",
+ "protocolVersion":"2.1.0",
+ "directoryServerTransactionId":"755f8c81-a4db-4c84-8b8c-23f6b0196cfd"
+ },
}
Reinicio de la sesión
Para cada generación de cargo se tiene que volver a configurar la librería. Esto para evitar volver a mandar la misma información. Es necesario borrar las instancias generadas para un nuevo uso, usando la función reset().
Culqi3DS.reset();
Esto elimina las siguientes instancias:
- Culqi3DS.settings
- El objeto token generado