Generación del token de Culqi
La generación de token lo puedes realizar a través de:
Custom Checkout
Puedes utilizar el Custom Checkout para tener una integración rápida y segura.
Api de tokens
En caso se use el API para generación de token, es responsabilidad del comercio cumplir con la normativa PCI DSS. ESto se debe a que se está manipulando los datos de la tarjeta directamente.
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).
Para iniciar la autenticación 3DS debemos pasar como parámetro un token:
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