Nequi

Integración Nequi SDK. 

El integración permite una integración optima y la mejor experiencia de usuario. Con este tipo de integración, su página podrá invocar un servicio a través de JS para el procesamientoa través de la plataforma de monedero virtual Nequi permitiendo que usted cree la experiencia de usuario completa. Con este método, mantendrá siempre al usuario dentro de su sitio y controlara todas las respuestas en pantalla.

 

Prerrequisitos:

  1. Obtener las llaves de conexión de parte de Paguelofacil CCLW, Id, Nombre Legal y Nombre comercial registrados en la plataforma.
  2. TLS ó su antecesor SSL son protocolos criptográficos que proporcionan comunicaciones seguras por una red.

 

URL de Conexión:

1. En el html de tu web

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Checkout</title>
    <!-- AGREGA LOS SCRIPT DE TU SDK-->
</head>
<body>
<div id="container-form">
</div>
<div id="dataR"></div>
<script>
  /*COLOCA A AQUI EL CÓDIGO PARA CONFIGURAR TU SDK*/
</script>
</body>
</html>

2. Agrega .js para agregar los compones del SDK.

<head >
...
<script src="http://dev.paguelofacil.com/HostedFields/vendor/scripts/NEQ/PFScript.js"></script>
<script src="http://dev.paguelofacil.com/HostedFields/vendor/qr-code/qrcode.js"></script>
...
<head >

3. Configura tu SDK de nequi.

<script>
//Pasa la variable true para procesar ennuestra platafirma de pruebas
    pfNequi.useAsSandbox(true);

    var mockTest = false;
    if (mockTest) {
        var forceTest = new pfNequi.hostedFields();
        forceTest.dataMerchant.merchant = {
            id: 2,
            name: "Paguelo Facil S.A", //Nombre Comercial registrado en su cuenta.
            legalName: "Paguelo Facil S.A" //Nombre legal registrado en su cuenta.
        };
        forceTest.dataMerchant.service = {
            id: 2, //Credencial Provisto por Paguelofacil
            code: "HFD" //Constante por el tipo de integración
        };

        startMerchantForm(forceTest);
    } else {
        var api_key = "D59B98EA9B33773AFACFBE1D8FD9785631FC48F1A549E05F9BA4397F9D6166B22FB9D6182A1CF64B63154B2B9DD37C92";
        var cclw = "15224BE0CBB8EAAC33B53850FF71EAE732253AFC4AB224938A491D0B3E9D3F7B"
        pfNequi.openService(api_key, cclw)
            .then(function (merchantSetup) {
                startMerchantForm(merchantSetup);
            }, function (error) {
                console.log(error);
            });
    }

    function startMerchantForm(merchantSetup) {
        var paymentInfo = {
            amount: 1.0,
            description: "Test SDK Nequi",
            email: "alambrito@correo.com",
            phone: "+50767890540"
        };

        var sdk = merchantSetup.init(merchantSetup.dataMerchant, paymentInfo);
        var useQR = true;
        if (useQR) {
            setTimeout(function () {
                sdk.generateQR().then(function (qr) {
                    console.log("qr", qr);
                    //Puede realizar su qr con una libreria propia o usar el JS (qrcode.js) y llamando a la funcion printQR
                    sdk.printQR("container-form");
                }, function (error) {
                    console.log("error", error);
                });
            }, 2000);
        } else {
            setTimeout(function () {
                sdk.sendPush("67890540").then(function (data) {
                    console.log("pushSend", data);
                }, function (error) {
                    console.log("error", error);
                });
            }, 2000);
        }

        //Valida el pago recursivamente y registra la TX
        var validPayment = function () {
            sdk.validPayment().then(function (data) {
                if (data) {
                    if (data.validated) {
                        if (data.txSuccess) {

                            //Debes obtener las variables de data.txSuccess y completar su pago
                            console.log("Registro de Pago existoso", data.txSuccess);
                        } else {

                            //Informe el usuario del error e indique volver a intentarlo
                            console.log("Pago Declinado", data.txError);
                        }
                    } else {
                        console.log("Reenvia", data);
                        setTimeout(function () {
                            validPayment();
                        }, 1000);
                    }
                }
            }, function (error) {
                console.log("error valid", error);
            });
        };


        setTimeout(function () {
            validPayment();
        }, 5000);
    }
</script>

4. Valida la respuesta de la transacción.

Para validar correctamente la transacción debes utilizar:

if(data.txSuccess.status == 1) en tu script de implementación de nequi

5. Respuesta completa de transacción aprobada.

txtSuccess: 
{
authStatus: "00"
codOper: "SANDBOX_ND-ASX6ANK7ZUQ3" . //Valor De referencia de la transacción en nuestra plataforma
date: "2018-12-07T16:57:19"
email: "alambrito@correo.com"
idtx: 496638
messageSys: "VER UNAVAILBLE"
operationType: "AUTH_CAPTURE"
requestPayAmount: 1
returnUrl: "https://sandbox.paguelofacil.com/PF/#/default-receipt/SANDBOX_ND-ASX6ANK7ZUQ3"
status: 1
totalPay: "1.0"
type: "NEQUI"
}

6. Como debe verse tu integración de nequi.

  • Debes decidir si utilizar ambas formas (push y QR), o solo unas de ellas dependiendo de si tu web recibe mayor visita por dispositivos móviles o web.
  • Debes informar al usuario en cada proceso.
  • Coloca una ayuda en caso  de dudas.

Acá algunas imágenes ejemplo de método de pago implementado:

 

Método de Pago en el Checkout

En esperando que el usuario confirme el pago