REQUISITOS

Si en esta página no encuentra una librería para el lenguaje de programación de su proyecto. Puede usar librerías externas que cumplan el método de cifrado de AES-128.

Solicitar la llave de cifrado al equipo de PagoFácil.net por medio de un correo a ayuda@pagofacil.net con el tema Solicitud llave 3D secure.

INTRODUCCIÓN

¿Qué significa 3DSecure?

3DSecure es llamado “Verified by Visa” en Visa, y “SecureCode” en Mastercard.

Este sistema evita los fraudes de tipo CNP (Card No Present), es decir los pagos fraudulentos con tarjeta de crédito sin presencia real de la tarjeta (por ejemplo, número de tarjetas robadas).

El objetivo es:

  • Disminuir las estafas a las tiendas en línea.
  • Dar seguridad a los clientes en sus pagos.

Por lo general un pago en línea con tarjeta de crédito/débito necesita:

  • El número de la tarjeta de crédito/débito.
  • La fecha de caducidad.
  • El criptograma visual (número de seguridad).

Con 3DSecure, se nos solicitará información suplementaria para validar el pago, aun teniendo el plástico de alguien ajeno, está protegida la operación validando información del titular.

MÉTODOS DE INTEGRACIÓN

FORMULARIO Y URL

1. Insertar en tu página el Script (JavaScript) de Pago Fácil, el cual se encuentra en:

https://pagofacil.net/ws/public/jscripts/pagofacil-3dsecure.js

De la siguiente forma:

<script src=”https://pagofacil.net/ws/public/jscripts/pagofacil-3dsecure.js” type=”text/javascript”></script>

2. Crear un formulario web con los siguientes campos:

Campos de la petición:

CAMPO DESCRIPCIÓN OBLIGATORIO TIPO LONGITUD
nombre En este campo vendrá el nombre del tarjetahabiente. Si varchar 50
apellidos En este campo vendrán los apellidos del tarjetahabiente. Si varchar 50
numeroTarjeta Número del plástico de la tarjeta de crédito sin guiones o espacios. Si varchar 16
mesExpiracion El mes en el cual el plástico expira MM Si int 2
anyoExpiracion El año en el cual el plástico expira YY Si int 2
cvt Código de verificación de tarjeta, usualmente impreso en el área de firma de la tarjeta, utilizado para validar que la tarjeta usada en la compra pertenezca a la persona que generó la orden Si int 3
email En este campo vendrá el correo de la persona a la que se le enviará el correo con el resumen de la transacción Si varchar 20
calleyNumero Campo para registro de la calle y numero del tarjetahabiente Si varchar 45
cp Código postal de la dirección donde vive el tarjetahabiente Si varchar 9
colonia Campo para registro de la colonia del tarjetahabiente Si varchar 30
municipio Campo para registro del municipio del tarjetahabiente Si varchar 30
estado Campo para registro del estado del tarjetahabiente Si varchar 45
pais Campo para registro del país del tarjetahabiente Si varchar 50
telefono Campo para registro del teléfono del tarjetahabiente Si varchar 10
celular Campo para registro del celular del tarjetahabiente Si varchar 10
monto El monto (MXP) del cargo a la tarjeta Si decimal
idServicio Este identificador le indica al motor de PagoFácil que servicio será el que se consumirá: 3=ThirdParty (ssl) Si int 1
idSucursal En caso de contar con varias sucursales se podrá utilizar este identificador para distinguir las transacciones Si varchar 60
idUsuario Sera el identificador de la empresa ante Pago Fácil Si varchar 60
httpUserAgent Identificador de Browser Si varchar 150
idPedido Campo para que el establecimiento pueda ligar la transacción con algún identificador de su producto o servicio. Nota: Es importante que sea único este identificador. No varchar (alfanumérico sin espacios) 60
Param1, param2, param3 Variable opcional para uso interno del comercio No varchar 60

Para indicar si la transacción usa meses sin intereses:

plan MSI => Meses sin intereses

NOR => Normal

No varchar 3
mensualidades Indica el número de mensualidades en formato de 2 caracteres numéricos, ejemplo, 03, 06, 09, 12 No varchar 2

3. Incluir un Javascript que ejecute la siguiente función enviarPagoFacil3dSecure para el correcto funcionamiento de nuestro formulario. Esto se realizará con el objeto de tipo formulario que tenga los datos a enviar

<script type=”text/javascript”>

$(“#3ds-form”).enviarPagoFacil3dSecure();

</script>

Nota: La llamada de ejemplo descrita anteriormente está hecha para el ambiente de testing, una vez que se desea pasar a producción es necesario agregar el argumento “producción” a la función enviarPagoFacil3dSecure, quedando de la siguiente forma:

$(“#3ds-form”).enviarPagoFacil3dSecure(“produccion”);

Ejemplo de formulario HTML

<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript' ></script>
<script src='https://pagofacil.net/ws/public/jscripts/pagofacil-3dsecure.js' type='text/javascript' ></script>


<form method="POST" id="3ds-form" name="3ds-form">
<input name="idSucursal" type="hidden" value="ApiKeySucursal" />
<input name="idUsuario" type="hidden" value="ApiKeyUsuario" />
<input name="idPedido" type="hidden" value="X" />
<input name="idServicio" type="hidden" value="3" />

Nombre: <input id="nombre" name="nombre" type="text" value="" />
Apellidos: <input id="apellidos" name="apellidos" type="text" value="" />
Email: <input id="email" name="email" type="text" value="" />
Calle y Num.: <input id="calleyNumero" name="calleyNumero" type="text" value="" />
CP: <input id="cp" name="cp" type="text" value="" />
Colonia: <input id="colonia" name="colonia" type="text" value="" />
Municipio: <input id="municipio" name="municipio" type="text" value="" />
Estado: <input id="estado" name="estado" type="text" value="" />
Pais: <input id="pais" name="pais" type="text" value="" />
Telefono: <input id="telefono" name="telefono" type="text" value="" />
Celular: <input id="celular" name="celular" type="text" value="" />
No. Tarjeta: <input id="numeroTarjeta" name="numeroTarjeta" type="text" value="" />
Mes Exp. <input id="mesExpiracion" name="mesExpiracion" type="text" value="" />
Año Exp. <input id="anyoExpiracion" name="anyoExpiracion" type="text" value="" />
CVV: <input id="cvt" name="cvt" type="text" value="" />
Monto: <input id="monto" name="monto" type="text" value="" />
Plan: <input id="plan" name="plan" type="text" value="" />
Menualidades: <input id="mensualidades" name="mensualidades" type="text" value="" />
Param1: <input id="param1" name="param1" type="hidden" value="" />
Param2: <input id="param2" name="param2" type="hidden" value="" />
Param3: <input id="param3" name="param3" type="hidden" value="" />

<input type="hidden" name="httpUserAgent" value="" />

<input type="submit" name="Enviar" />
</form>

<script type="text/javascript">
        $("#3ds-form").enviarPagoFacil3dSecure("sandbox");//Metodo contenido en el archivo -pagofacil3ds.js-
</script>
  1. Cuando se envía el formulario este lo redirigirá al portal de Pago Fácil en el cual validaremos la información de la transacción.

2.- Una vez validada la información por parte de Pago Fácil, se redirecciona al portal bancario emisor de la tarjeta en el cual se llevará a cabo el proceso de autenticación, en caso de ser necesario, se solicitará algún dato que permita autenticar al tarjetahabiente.

3.- Una vez que se autenticó la tarjeta, el banco redirige a los servidores de Pago Fácil para generar la transacción bancaria.

4.- Finalmente, en los servidores de Pago Fácil se solicita procesar la transacción al banco y una vez obtenido el resultado, se tienen 2 opciones:

a) PagoFácil muestra el resultado de la transacción.

b) El cliente proporciona a PagoFácil una URL a la cual se le envía por POST la respuesta completa encriptada. Ejemplo:

array(1) { ["response"]=> string(1112) "+I9LgWvnoZ7YAjtYfTSRuUXHOvlIKv4/ff93Iupas5MJxmwcj/BCV6C8oU9Jrd4he2Y7Quw175CHqFNiYgKn4/9yrqIcYWKv+nJ2VS+Tk/WPC7xXDIQjArU9lKjfE8MOcA+ShysyDYymwl/0prFZ4NZ/5WsYWqAM1aEMPjhplxRt+QCp2BmMeq9hcWYtQDofQ2kzJeY/LQUAg3O0hpQPuABKWPNJNM4KC6vE43zUdIGxZ/Hi9qvWUkMdm37fzE0/aj8sIb4/bsosINhdDcl1JuUHHORU/QolMA62PqkBjlZ9akrD5LJT1QzEorIJ8sSdLzAHp4iQXRJRzS82+imTwDoUGpqdA7rdWs2/x7Rf67HL0w65PwAwKVfG/uun8dT2ZxYs3ePrVuIAOUF2uA3r0u41t1Z1cUJ0Wj22n0g4dFTrDqU1Zs7QEiK5+ciQDnVclyYbs9CRdaCS5BsgN1CGO7JNrs2jk29THw+hGbg8arwL2IPo8aQtrOwDjQmia804bnQ0lHTjqTUcvyXmBfPnKImUPkv552JkkmKN9egxxg0N1njJg+jZ90yCDRi/4l5gvXKpWM/EgA6/Q3ffLJTsFOnkY/cG80lUxYFxX+du3EeppE6yfz9D5iunlLWVkkzHW0lFoGSVo7kit+JAoU49NJh2Llfb8EODLmyc3MD4STaxXd/KNjv2g==" } 

Nota: Esta configuración se debe realizar desde el sistema de Manager, por tal motivo es uno de los requisitos. La siguiente imagen muestra el módulo dónde se debe configurar dicha opción:

Solicitar por email a ayuda@pagofacil.net la configuración de URL de redireccionamiento y llave de cifrado.

  1. Para esta segunda opción, es necesario descifrar la respuesta enviada, utilizando la librería y la llave de cifrado proporcionada por el equipo de PagoFácil.net, una vez descifrada la respuesta solo resta realizar una decodificación JSON. Haciendo la decodificación:
{
        "transaccion": {
            "autorizado": "0",
            "transaccion": "n/a",
            "autorizacion": "n/a",
            "texto": "Error Reglas de Negocio",
            "error": {
                "ModalidadPagoNoPermitida": "Para esta Modalidad de Pago [18 MSI], el monto minimo es de [$1800.00]. Estas intentando realizar una transaccion por [$200]"
            },
            "empresa": "Sin determinar",
            "TransIni": "16:38:49 pm 30/11/2018",
            "TransFin": "16:38:50 pm 30/11/2018",
            "param1": "",
            "param2": "",
            "param3": "",
            "param4": "",
            "param5": "",
            "TipoTC": "",
            "data": {
                "idSucursal": "32e3d2ab24db2863c81541b27a3edde99e6bad23",
                "idUsuario": "b2a0bbf2bbd56a6c7395c5536f69c50223f7d8ba",
                "idServicio": "3",
                "nombre": "Omar",
                "apellidos": "Alvarez",
                "numeroTarjeta": "",
                "cvt": "",
                "mesExpiracion": "",
                "anyoExpiracion": "",
                "monto": "200",
                "email": "ohmalvarez@gmail.com",
                "telefono": "5513372748",
                "celular": "5513374890",
                "calleyNumero": "atole france 311",
                "colonia": "polanco",
                "cp": "11560",
                "municipio": "miguel hidalgo",
                "estado": "distrito  federal",
                "pais": "mexico",
                "idPedido": "TEST_TX",
                "httpUserAgent": "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0",
                "ip": "127.0.0.1",
                "transFechaHora": "1543617529",
                "plan": "MSI",
                "mensualidades": "18",
                "bin": "375457"
            }
        }
}

RESPUESTA DE LA TRANSACCIÓN

En el Url designada por el cliente se devolverán los siguientes datos los cuales dan respuesta a la transacción realizada:

CAMPO DESCRIPCIÓN TIPO LONGITUD
autorizado Este campo nos indicara si la transacción fue exitosa (1) o declinada (0) bool 1
autorizacion Contendrá el no de autorización del banco int 1
transaccion Identificador de PagoFacil para la transacción realizada varchar 50
texto Describe si una transacción tuvo un error o fue exitosa varchar 100
error Campo opcional, se muestra cuando un error ocurre, contiene un array con los errores en formato ‘campo’=>’error’ array
empresa Nos indica el identificador de la empresa que se está transaccionando. varchar 40
transIni Indica la hora en que la transacción se llevó acabo datetime 2
transFin Indica la hora en que la transacción termino datetime 2
param1, param2, param3, param4, param5 Variable opcional para uso interno del comercio varchar 60
tipoTC Indica el tipo de tarjeta con el que se está realizando la transacción varchar 30
data Arreglo de datos que contiene los datos enviados en la petición Array

EJEMPLO DE FORMULARIO

Nombre: CP:
Apellidos: Colonia:
No. Tarjeta: Municipio:
Mes Exp. Estado:
Año Exp. Pais:
CVV: Pedido:
Email: Telefono:
Calle y Num. Celular: