Tokenizar Tarjeta con o sin formulario propio

Formulario para tokenization creado por NetPay

Para poder tokenizar una tarjeta puedes utilizar nuestro archivo NetpayJS que se puede cargar desde un CDN o se puede utilizar directamente desde un archivo JS que guardes en tu proyecto.
Lo que nuestro NetpayJS hará será hacer el proceso necesario para poder encriptar los datos bancarios de tu cliente mandarlos a nuestros servidores y nosotros te devolveremos un token con el cual este cliente podrá transaccionar en nuestra API.

Ejemplo NetpayJS

CDN: https://docs.netpay.mx/cdn/v1.3/netpay.min.js

<!DOCTYPE html>
<html>
<head>
  <title>NetPay.js</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <script type="text/javascript" src="https://docs.netpay.mx/cdn/js/dev/netpay.154.js"></script>
  
</head>
  <body style="padding: 50px;">
        <div id="netpay-form"></div>
        <script>  
            NetPay.setApiKey("pk_netpay_ryDNhWywMbMjqXbLzMUEeTMfW");
            NetPay.setSandboxMode(true);
        
            function success(e) {
                console.log("Token created successfully");
                console.log(e); 
            }
        
            function error(e) {
                console.log("Something went wrong!");
                console.log(e);
            }
        
            NetPay.form.generate("netpay-form", success, error, { title: "", submitText: "" });
            
        </script>
  </body> 
</html>

Anatomía NetpayJS

Inicialización

Netpay.setApiKey("PUBLIC_API_KEY");

Modo Sandbox
NetpayJS opera en dos ambientes, producción y sandbox, para indicar el modo
sandbox es necesario indicarlo de la siguiente manera.

NetPay.setSandboxMode(true);

Manejo de respuestas

NetpayJS regresa los resultados de la operación por medio de funciones de
respuesta ( callbacks ), estas funciones reciben objetos con la respuesta.

Las funciones de respuesta se pasan como argumentos al momento de inicializar un
formulario o al momento de llamar la función NetPay.form.generate();

NetPay.form.generate("netpay-form", success, error, { title: "Pago con tarjeta", submitText: "Pagar" });

La operación de tokenización puede concluir de dos maneras, satisfactoriamente o con
error, para ambos casos se declara una función que recibe la respuesta.

🚧

Importante

Al momento de tokenizar una tarjeta con NetpayJS el token que te devolverá hasta este punto solo será de un solo uso y se invalidara para un segundo uso si no se le asigna un cliente antes de procesar otro pago con este token de la tarjeta.

Formulario para tokenizacion creado por el comercio.

NetPay.js cuenta con herramientas para generar un token de una tarjeta sin necesidad de
utilizar el formulario auto-generado por la librería. Solo se requiere invocar la función
NetPay.token.create()

❗️

Importante

Al utilizar esta función se tendrá que validar que en el código no se guarde ninguna información bancaria sin tokenizar por parte del comercio solo se deberá usar en variables temporales para que lleguen a nuestra función y poder obtener el token de transacción validando esto la certificación es segura. NetPay tendrá registro de esta certificación, en dado caso que se realice algún cambio al código que afecta el flujo de pago sera necesario agendar una nueva certificación.

Código de ejemplo

<html>

<head>
    <script type="text/javascript" src="https://docs.netpay.mx/cdn/v1.3/netpay.min.js"></script>
</head>

<body style="padding: 50px;">
    <script>
        let deviceFingerPrint;
        NetPay.setSandboxMode(true); // Esta línea se debe de llamar antes de la generación del device fingerprint

        //La generación del device fingerprint debe de estar al momento en que se visualiza el formulario de pago
        function generateDevice(callback) {
            deviceFingerPrint = NetPay.form.generateDeviceFingerPrint();
            callback();
        }
        
        generateDevice(function() { 
            console.log(deviceFingerPrint);
            let cardInformation = {
                cardNumber: "4000000000000002",
                expMonth: "04",     
                expYear: "25",
                cvv2: "999",
                deviceFingerPrint : deviceFingerPrint
            };
            NetPay.setApiKey("pk_netpay_JGFtQNUFIENMlhkoBXdgiozmQ");

            var validateNumber = NetPay.card.validateNumber(cardInformation.cardNumber);
            var validateExpiry = NetPay.card.validateExpiry(cardInformation.expMonth, cardInformation.expYear);
            var validateCVV = NetPay.card.validateCVV(cardInformation.cvv2, cardInformation.cardNumber);
            var validateNumberLength = NetPay.card.validateNumberLength(cardInformation.cardNumber);

            if (!validateNumberLength || !validateNumber 
                || !validateExpiry || !validateCVV) {
                alert("Por favor, verifica los datos de tu tarjeta");
                return false;
            }
            NetPay.token.create(cardInformation, success, error);

            function success(e) {
                console.log("Token created successfully");
                console.log(e.message.data);
            }

            function error(e) {
                console.log("Something went wrong!");
                console.log(e);
            }
        });
    </script>
</body>

</html>

Manejo de respuesta

NetPay.js regresa los resultados de la operación por medio de funciones de
respuesta ( callbacks ), estas funciones reciben objetos con la respuesta.

Las funciones de respuesta se pasan como argumentos al momento de inicializar un
formulario o al momento de llamar la función NetPay.token.create().

Validaciones

NetPay.js cuenta con funciones que ayudan validar los datos utilizados para la tokenización
de una tarjeta. Las validaciones de la tarjeta se hacen a través del objeto NetPay.card, este
objeto cuenta con las siguiente funciones de validación:

validateCVV

Esta función ayuda a validar si el CVV es válido en función al número de tarjeta de la tarjeta
a tokenizar. La función regresa true o false según la validación.

ParámetroDescripciónTipo de dato
CVVValor del cvv de la tarjeta a tokenizarString
cardNumberNumero de la tarjeta a tokenizarString

Ejemplo de uso

NetPay.card.validateCVV("123","400000000000002");

validateExpiry

Esta función ayuda a validar la fecha de expiración, tanto el formato mm/aa así
como si la fecha ingresada no está expirada. La función regresa true o false según la
validación.

ParámetroDescripciónTipo de dato
monthRecibe el mes en formato de 2 dígitosString
yearRecibe el año en formato de 2 dígitosString

Ejemplo de uso

NetPay.card.validateExpiry("01","25");