Libreria Js

1. Introducción

¿Qué es PaymentGateway.js?

PaymentGateway.js es una librería Javascript diseñada para facilitar la creación una url de que tiene como destino un formulario de pago para tarjetas de crédito y débito desde una página web sin la necesidad que la información sensible pase por el servidor origen (El servidor del comercio). De esta manera no tendrá que preocuparse por la seguridad de los datos y el pago, de eso se encarga PaymentGateway.js

2. Integración

Para iniciar la integración debe agregar la librería PaymentGateway.js a su página web

Producción

<script type="text/javascript" src="https://dashboard.afinia.site/gatewaycdn/V1.1/AfiniaPayment.min.js"></script>

Sandbox

<script type="text/javascript" src="https://dashboard.afinia.site/gatewaycdn/V1.1/AfiniaPaymentsandbox.min.js"></script>

3. Boton de Pago

El botón de pago es la manera más fácil de integrar el módulo de pago en su web, con una simple instrucción agrega al botón "Pagar" de tu página web una llamada a nuestro formulario de pago y obtén seguridad y confianza en las transacciones. A continuación se muestra la instrucción Javascript que debes implementar.

$("#Button1").click(function () {
    $.fn.AFINIA_PaymentGateway.setup.Apikey = 'PUBLIC_API_KEY';
    $.fn.AFINIA_PaymentGateway.setup.Email = 'EMAIL_USER' //valor opcional;
    $.fn.AFINIA_PaymentGateway.setup.Currency = 'CURRENCY';
    $.fn.AFINIA_PaymentGateway.setup.Totalamount = 'AMOUNT_TRANSACTION';
    $.fn.AFINIA_PaymentGateway.setup.Reference = 'REFERENCE_TRANSACTION UNIQUE';
    $.fn.AFINIA_PaymentGateway.setup.Reference2 = 'REFERENCE2_TRANSACTION';
    $.fn.AFINIA_PaymentGateway.setup.JsonData = JSON.stringify({ campo1: "campo1", campo2: "campo2", 
    campo3: "campo3", campo4: "campo4"});//Valor opcional para enviar datos dinamicamente ;
    $.fn.AFINIA_PaymentGateway(function (Result) {
    var error = Result[0].Error;

    var Url = Result[0].Url;
     var Token = Result[0].Token;
    window.location.replace(Url);
    });
    });

Cuando el resultado de la petición es satisfactoria la función regresara dos valores: 1) Result[0].Url, este valor indica la url donde se encuentra el formulario de pago, el cual ya contiene un token único por cada transacción solicitada. 2)Result[0].Token otorga únicamente el token de la transacción, si lo desea puede almacenarlo para llevar control.

Si la petición realizada contiene errores estos estarán contenidos en el valor Result[0].Error, de lo contrario estará en blanco.

Los datos que necesita para realizar la petición de pago los puede encontrar en el módulo de "Mi cuenta"

el resto de los datos son propios de la transacción que desea procesar.

Los casos de error que podrían presentarse son los siguientes:

4. Botón continuar formulario

Se detallan cada uno de los campos que se deben enviar para procesar el pago.

Dentro de nuestro formulario existe un botón llamado "Continuar", este puede ser configurado para que realice una redirección a su página web dependiendo del resultado de la transacción

Para realizar la configuración del redireccionamiento debe ingresar al módulo de Configuración/Formulario y podrá colocar url independientes para realizar la redirección según el resultado de la transacción "Aprobada" o "Rechazada".

Un ejemplo sencillo de la url que podría configurar para el caso de aprobación sería https://www.afiniastore.com/success

Si desea que el token de la transacción se mantenga como variable GET dentro de su url para que luego pueda hacer un Request de ella, en la configuración de las url del resultado de la transacción puede colocar cualquier variable con el valor {{{tokenid}}} de esta manera el sistema se encargará de reemplazar la etiqueta por su token.

Ejemplo: https://www.afiniastore.com/success?var={{{tokenid}}}

5. Obtener resultado de la transacción

Para obtener el resultado de la transacción debe utilizar una función de nuestra librería PaymentGateway.js llamada AFINIA_PaymentGatewayResult. Para realizar la petición debe colocar la siguiente instrucción.

Únicamente debe enviar en la función AFINIA_PaymentGatewayResult el parámetro Token, este valor es el mismo otorgado en la petición de pago en la función AFINIA_PaymentGateway

Cuando el resultado de la petición es satisfactoria otogará dos valores 1)Result[0].ReferenceCode;,indica el valor único por transacción; se puede utilizar como identificador. 2) Result[0].ResultCode otorga el estatus de la transacción, si fue aprobada o rechazada, cuando la transacciones es aprobada el valor será 00, de lo contrario será -99. El valor Result[0].TotalAmount indica el monto realmente pagado, de manera que se pueda validar que la orden generada por la página web corresponda con el monto pagado.

$.fn.AFINIA_PaymentGatewayResult.setup.Token ='TOKEN';

        $.fn.AFINIA_PaymentGatewayResult(function (Result) {
        var ReferenceCode = Result[0].ReferenceCode;
        var ResultCode = Result[0].ResultCode;
        var TotalAmount = Result[0].TotalAmount;
         var error = Result[0].Error;
        });

Nota: si la transacción es aprobada el ResultCode será “00”. Cualquier otro valor el resultado es rechazado

6. Tarjetas para procesar en Ambiente Sandbox

Las trajetas para simular las transacciones de pago son las siguientes (tenga en cuenta que las siguientes tarjetas no son válias en ambiente productivo):

Result[0].ResultCode=00
Result[0].ResultCode=Valor negativo ejemplo -1,-99

6. Notificación automatica de resultado

La pasarela de pago tiene la posibilidad de notificar al integrador el resultado de la transaccipon de una manera detallada y esto lo hace haciendo llamadas POST hacia un Webhook desarrollado por el integrador. Esta funcion puede ser activada desde la sección de “Mi Cuenta”

El integrador deberá desarrollar un endpoint que tenga la capacidad de recibir un POST. Esto datos seran enviados en el body del request.

Content-Type: application/json

Request:


{
        "ApprovedCode": "278105",  //Códgo de Aprobación
        "CardNumber": "4815*******0087", //Número de Trajeta Enmascarada
        "CountryCard": "MX", //País de la Tarjeta
        "DescriptionCurrency": "MXN", //Moneda
        "Email": "ejemplo@gmail.com", //Email del cliente final
        "Ip": "189.128.88.83", //Ip del cliente final
        "IpCountry": "MX", //Pais de la ip del cliente final
        "ReferenceOrig": "9036", //Referencia enviada por el comercio (integrador) al momento de generar el pago
        "ReferenceCode": "730005158427", //Referencia de pago
        "ResultCode": "00", //Resultado de la transacción Si es 00 la transacción fue aprobada cualquier otro valor es rechazada
        "ResultDescrip": "Approved", //Descripción del resultado
        "RiskscoreAction": 4, //Accion del riskscore
        "RiskscoreLevel": "Medio",  //Nivel del riskcore
        "RiskscoreValue": 50.0, //Valor del riskscore obtenido
        "TotalAmount": 1.00, //monto de la transacción
        "Transdate": "2023/07/25 22:59:07", //fecha
        "TransactionsType": "Compra Online", //tipo de transacción
        "Tokenid": "RMMJH37789", //token único para el pago. Se originó al momento de crear el pago
        "AdditionalInfo": "" // Valor opcional si es enviado en el request de la creación del pago JsonData 

    }

Adicionalmente el integrador debe esperar una autenticación en el header un parametro llamado

Global-KEY y el valor debe ser cargado en el sistema en la sección de “Mi cuenta”

El POST realizado por la pasarela esperará una respuesta con Status 200 y un string en el body indicando EVENT_RECEIVED, si esto no es recibido el sistema realizrá 5 intentos, si en esa cantidad de intentos no recibe lo esperado descartará las peticiones.