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.

Recuerda que el Custom Checkout cumple con la normativa PCI DSS 3.2, dado que la información de la tarjeta nunca toca tu servidor.

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.

Recuerda que cuando interactúas directamente con el API necesitas cumplir la normativa de PCI DSS 3.2. Por ello, te pedimos que llenes el formulario SAQ-D y lo envíes al buzón de riesgos Culqi.

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 CodeDescripció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"
+   },
}

Tanto el campo device_finger_print_id como el source_id deben tener los mismos valores que se enviaron para la generación del cargo en la primera vez.

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