DESCRIPCIÓN

Como bien su nombre lo indica, son formas de pago que se realizar periódicamente dependiendo las condiciones que se hayan establecido en el momento de la compra. Se manejarán de la misma forma que las transacciones normales.

MÉTODOS DE INTERACCIÓN

Los métodos de interacción que se usan para consumir esta API, son los siguientes:

URL

Base de la URL para consumir los servicios Web.

Desarrollo: https://sandbox.pagofacil.tech

Producción: https://api.pagofacil.tech

1. Registrar una transacción.

Esta petición de API te permite generar un registro de pago de por un monto determinado para ser aplicado de forma recurrente de acuerdo a las condiciones de compra del producto.

MÉTODO URL
POST /Wsrrecurrentes/index/format/json?

Campos de la Petición:

Variable Descripción Valor Obligatorio Tipo Longitud Categoría
method Este dato es muy importante ya que permite distinguir las dos peticiones. En este caso se debe incluir la cadena “transaccion”. Si Varchar PagoFácil
data[nombre] En este campo vendrá el nombre del tarjetahabiente. Si Varchar 50 Tarjeta de Crédito
data[apellidos] En este campo vendrán los apellidos del tarjetahabiente. Si Varchar 50 Tarjeta de Crédito
data[numeroTarjeta] Número del plástico de la tarjeta de crédito sin guiones o espacios. Si Varchar 15 Tarjeta de Crédito
data[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 4 Tarjeta de Crédito
data[cp] Código postal de la dirección dónde vive el tarjetahabiente. Si Varchar 9 Datos Personales Cliente
data[mesExpiracion] El mes en el cual el plástico expira (MM). Si Int 2 Tarjeta de Crédito
data[anyoExpiracion] El año en el cual el plástico expira (YY). Si Int 2 Tarjeta de Crédito
data[monto] El monto del cargo a la tarjeta. Si Decimal (7,2) Establecimiento
data[idSucursal] En caso de contar con varias sucursales se podrá utilizar este identificador para distinguir las transacciones. Si Varhcar 20 Establecimiento
data[idUsuario] Sera el identificador de la empresa ante PagoFácil. Si Varchar 20 Establecimiento
data[idServicio] Este identificador le indica al motor de PagoFácil que servicio será el que se consumirá: 2=Recurrente. Si Int Producto PagoFácil
data[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 Mail 200 Datos Personales Cliente
data[telefono] Se debe incluir el teléfono del tarjetahabiente. Si Varchar 10 Datos Personales Cliente
data[celular] Campo reservado el número de celular del tarjetahabiente. Si Varchar 10 Datos Personales Cliente
data[calleyNumero] Campo para registro de la calle y numero del tarjetahabiente. Si Varchar 45 Datos Personales Cliente
data[colonia] Campo para registrar la colonia dónde vive el tarjetahabiente. Si Varchar 30 Datos Personales Cliente
data[municipio] Campo para registrar el municipio dónde vive el tarjetahabiente. Si Varchar 30 Datos Personales Cliente
data[estado] Campo para registrar el estado dónde vive el tarjetahabiente. Si Varchar 30 Datos Personales Cliente
data[pais] Campo para registrar el país dónde vive el tarjetahabiente. Si Varchar 50 Datos Personales Cliente
data[idCliente] Identificador del contrato donde se autoriza el cargo recurrente por parte del dueño de la tarjeta. No Varchar 10 Datos Establecimiento
data[diaPago] Día en el que se estarán realizando los cobros. No Int 2 Datos Establecimiento
data[fechaIniCobro] Fecha a partir de la cual se empezará a cobrar. Si Date Formato: ‘dd-mm-yyyy’ Datos Establecimiento
data[fechaFinCobro] Fecha en la cual expira el cobro. No Date Formato: ‘dd-mm-yyyy’ Datos Establecimiento
data[httpUserAgent] Identificador de Navegador No Varchar 150 Datos Establecimiento
data[ip] Dirección Ip del servidor el cual envía la petición. No Varhcar 16 Datos Establecimiento
data[cargo] Si se va a registrar un cobro al momento del registro. No Int 1 Datos Establecimiento

Ejemplo de la petición API:

{
"method":"transaccion",
"data": {
	nombre":"Jon",
	"apellidos":"Doe",
	"numeroTarjeta":"5513 5509 9409 2123",
	"cvt":"271",
	"cp":"11540",
	"mesExpiracion":"05",
	"anyoExpiracion":"19",
	"monto":"659.66",
	"idSucursal":"e147ee31531d815e2308d6d",
	"idUsuario":"f541b3f11f0f9b3fb334996",
	"idServicio":"2",
	"email":"[email protected]",
	"telefono":"057557326",
	"celular":"5588204416",
	"calleyNumero":"",
	"colonia":"",
	"municipio":"",
	"estado":"",
	"pais":"",
	"idCliente":"0",
	"diaPago":"11",
	"fechaIniCobro":"16-07-2018",
	"fechaFinCobro":"01-02-2019",
	"httpUserAgent":"Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:"50.0) Gecko/20100101 Firefox/50.0",
	"ip":"127.0.0.1",
	"cargo":"1"
	}
}

Campos de la respuesta:

CAMPO DESCRIPCIÓN
status Valor de tipo entero que devuelve el valor “1” en caso de que la transacción haya sido errónea, de manera contraria, devuelve un valor de tipo entero “0”.
registered Muestra el estatus del cargo recurrente, es decir si se procesa manda un valor “1”, en caso contrario, mostrará el valor “0”.
initial_charge_authorized Se refiere al estatus del cargo recurrente autorizado (“1”) o no (“0”).
message Cadena de texto que nos proporciona un detalle poco más amplio del estatus de la petición.
registered_id Identificador del registro del cargo recurrente.
registrado Muestra el cargo recurrente registrado correctamente.
transaccion Información de la transacción realizada.
autorizacion Este dato se refiere al número de autorización de la transacción realizada.
texto Muestra información complementaria del estatus general de la transacción.
error En caso de ser fallida la transacción, devuelve un arreglo de datos con información de cada error generado al tiempo de la petición. De forma contraria, este campo no muestra alguna información.
empresa Es el nombre de la empresa que está realizando la transacción.
TransIni Muestra el tiempo de inicio de la transacción.
TransFin Devuelve el tiempo de duración de la transacción.
TipoTC Nos indica con qué tipo de tarjeta se generó la compra de cierto producto o servicio.
data Es un dato de tipo array que muestra todos los campos y valores que se usaron en la petición.
dataVal Muestra los datos que se están validando al tiempo de la transacción.

Ejemplo de la respuesta JSON:

{
    "WebServices_Recurrentes": {
        "transaccion": {
            "status": "1",
            "registered": "0",
            "initial_charge_authorized": "0",
            "message": "Error en las Validaciones Validaciones_Strategy_Recurrente_Manual",
            "registered_id": "",
            "registrado": "0",
            "transaccion": "n/a",
            "autorizacion": "n/a",
            "texto": "Error en las Validaciones Validaciones_Strategy_Recurrente_Manual",
            "error": {
                "recordFound": "El contrato ya esta registrado en esta sucursal '0'",
                "calleyNumero": "Falta el campo: 'calleyNumero'",
                "colonia": "Falta el campo: 'colonia'",
                "municipio": "Falta el campo: 'municipio'",
                "estado": "Falta el campo: 'estado'",
                "pais": "Falta el campo: 'pais'"
            },
            "empresa": "Sin determinar",
            "TransIni": "12:48:26 pm 18/09/2018",
            "TransFin": "12:48:26 pm 18/09/2018",
            "TipoTC": "",
            "data": {
                "nombre": "usuario",
                "apellidos": "prueba",
                "numeroTarjeta": "(19) **** **** ****2123",
                "cvt": "(3) ***",
                "cp": "11540",
                "mesExpiracion": "(2) **",
                "anyoExpiracion": "(2) **",
                "monto": "659.66",
                "idSucursal": "e147ee31531d815e2308d6d6",
                "idUsuario": "f541b3f11f0f9b3fb33499684",
                "idServicio": "2",
                "email": "[email protected]",
                "telefono": "057557326",
                "celular": "5588204416",
                "calleyNumero": "",
                "colonia": "",
                "municipio": "",
                "estado": "",
                "pais": "",
                "idCliente": "0",
                "diaPago": "11",
                "fechaIniCobro": "16-07-2018",
                "fechaFinCobro": "01-02-2019",
                "httpUserAgent": "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0",
                "ip": "1.1.1.1",
                "cargo": "1",
                "transFechaHora": "1537292906"
            },
            "dataVal": {
                "idSucursal": "2720",
                "nombre": "usuario",
                "apellidos": "prueba",
                "numeroTarjeta": "(16) **** **** ****2123",
                "cp": "11540",
                "monto": "659.66",
                "mesExpiracion": "(2) **",
                "anyoExpiracion": "(2) **",
                "idUsuario": "2691",
                "idServicio": "2",
                "idCliente": "0",
                "diaPago": "11",
                "fechaIniCobro": "2018-07-16",
                "ip": "172.69.6.42",
                "httpUserAgent": "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0",
                "fechaFinCobro": "2019-02-01",
                "tipoTarjeta": "Master Card",
                "hashKeyCC": "7002cfdf80f18a8de8ac1b8",
                "idEmpresa": "2692",
                "nombre_comercial": "PagoFacil Demo",
                "emailEmpresa": "[email protected]",
                "tipo": "P",
                "transFechaHora": "1537292906",
                "noProcess": "",
                "noMail": "",
                "notaMail": "",
                "cvt": "",
                "https": "No HTTPS"
            }
        }
    }
}

2. Ver una transacción.

Esta petición nos sirve para consultar la generación y el estatus de una transacción de cargo recurrente, previamente creada.

MÉTODO URL
POST /Wsrrecurrentes/index/format/json?

Campos de la petición:

Variable Descripción Obligatorio Tipo Longitud Categoría
method Se debe ingresar la cadena “vercargo” pues es un dato de suma importancia para intentar obtener información de este tipo de petición. Si varchar PagoFacil
data[idRecurrente] El identificador con el que se registró el cargo en PagoFacil. Si varchar 50 Tarjeta de Crédito
data[idSucursal] El Apikey de la sucursal a la que le pertenece el cargo recurrente. Si varchar 20 Tarjeta de Crédito

Ejemplo de la petición API:

{"method":"vercargo",
"data":{
	"idRecurrente":"S-RAPFE2692S2720I1055",
	"idSucursal":"e147ee31531d815e2308d6d6d39929ab599deb98"
	}
}

Campos de la respuesta:

CAMPO DESCRIPCIÓN
registrado Muestra los datos del cargo recurrente registrado.
transaccion Se refiere a la información de la transacción realizada.
autorizacion  Muestra el número de autorización de la transacción que se registró previamente.
texto  Muestra una breve descripción de la petición a esta API, ya sea que haya sido satisfactoria o que haya devuelto algún error.
error  Es un dato de tipo arreglo que muestra la información detallada de los errores que pudieran surgir al momento de hacer la petición. De forma contraria, éste dato se muestra vacío.
TransIni Muestra el momento de inicio de la petición.
TransFin  Este dato devuelve el momento del fin de la petición.
data  Este valor contiene un arreglo de datos con la información que se envió en la petición del API.
dataVal Devuelve un arreglo de datos con los campos que fueron validados por PagoFacil.
status  Muestra en que estado se encuentra la aplicación del cargo correspondiente. “success” indica que la petición se completo.

Ejemplo de la respuesta JSON:

{
    "WebServices_Recurrentes": {
        "vercargo": {
            "registrado": "0",
            "transaccion": "n/a",
            "autorizacion": "n/a",
            "texto": "Errores en las reglas de negocio",
            "error": {
                "idRecurrente": "El cargo: S-RAPFE2692S2720I1055 no se encontro asignado"
            },
            "TransIni": "12:51:41 pm 18/09/2018",
            "TransFin": "12:51:41 pm 18/09/2018",
            "data": {
                "idRecurrente": "S-RAPFE2692S27",
                "idSucursal": "e147ee31531d815e2308d6d6",
                "transFechaHora": "1537293101"
            },
            "dataVal": {
                "idRecurrente": "S-RAPFE2692S27",
                "idSucursal": "e147ee31531d815e2308d6d6",
                "https": "No HTTPS"
            },
            "status": "success"
        }
    }
}

POSTMAN

En el siguiente link lo redirigirá a un ejemplo práctico en diferentes lenguajes de programación mediante la herramienta Postman.