NAV

python php javascript

API PayCode

Introducción

Bienvenido a PayCode! Podras usar los endpoints de la API de PayCode para poder generar cobros de manera rápida y sencilla.

¡Tenemos enlaces de lenguaje en Python, PHP y JavaScript! Puede ver ejemplos de código en el área oscura a la derecha y puede cambiar el lenguaje de programación de los ejemplos con las pestañas en la parte superior derecha.

Base URL

URL base
https://plataforma.paycode.com.mx

V1

Autenticación

El módulo de autenticación de la API de PayCode nos permite obtener un token el cual nos permite autenticar cada una de las peticiones futuras

La API de PayCode utiliza una autenticación basada en token para aceptar peticiones.

Si se raliza un peteción sin el token asignado simplemente fallara.

Login

import requests

url = "https://plataforma.paycode.com.mx/Api/v1/auth/loginApi"

payload = "" headers = { 'Authorization': '[API Key]' }

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/auth/loginApi', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: [API Key]' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = '';

var config = { method: 'get', url: 'https://plataforma.paycode.com.mx/Api/v1/auth/loginApi', headers: { 'Authorization': '[API Key]' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "access_token": "[token]",
    "token_type": "bearer",
    "expires_in": 300
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

Recupera un token tipo bearer, que permite autenticar una petición

Información de petición
Categoria Valor
Método HTTP GET
EndPoint /Api/v1/auth/loginApi
Headers
Tipo Valor
Authorization [API Key]
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
access_token String Token de autenticación
token_type String Tipo de token
expires_in Int Tiempo de vida del token (Segundos)
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Actualizar token

import requests

url = "https://plataforma.paycode.com.mx/Api/v1/token/actualizar_token"

payload = {} headers = { 'Authorization': 'Bearer [token]' }

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => "https://plataforma.paycode.com.mx/Api/v1/token/actualizar_token", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => array( "Authorization: Bearer [token]" ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = '';

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/token/actualizar_token', headers: { 'Authorization': 'Bearer [token]' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "access_token": "[token]",
    "token_type": "bearer",
    "expires_in": 300
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

Recupera un token nuevo usando el token actual, siempre y cuando no haya expirado.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v1/token/actualizar_token
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
access_token String Token de autenticación
token_type String Tipo de token
expires_in Int Tiempo de vida del token (Segundos)
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Logout

import requests

url = "https://plataforma.paycode.com.mx/Api/v1/auth/logoutApi"

payload = {} headers = { 'Authorization': 'Bearer [token]' }

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => "https://plataforma.paycode.com.mx/Api/v1/auth/logoutApi", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => array( "Authorization: Bearer [token]" ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = '';

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/auth/logoutApi', headers: { 'Authorization': 'Bearer [token]' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "message": "Successfully logged out"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

El token recuperado es mandado a un lista negra imposibilitándolo para generar nuevas peticiones.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v1/auth/logoutApi
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
message String Mensaje de salida
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Cobros

Las siguientes URL nos permiten hacer cobros de manera única, recurrente y masiva de manera rápida y sencilla

Pago único

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/pagos/pago_unico"

payload = json.dumps({ "numero_tel": 5555555555, "name": "XXXXXXX", "lastname_pa": "XXXXX", "lastname_mo": "XXXXXX", "mont": 1, "concept": "XXXXXX", "limit_da": "2021-10-21 16:10:10" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/pagos/pago_unico', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "numero_tel": 5555555555, "name": "XXXXXXX", "lastname_pa": "XXXXX", "lastname_mo": "XXXXXX", "mont": 1, "concept" : "XXXXXX", "limit_da": "2021-10-21 16:10:10" } ', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;

var axios = require('axios');
var data = JSON.Stringify({
  "numero_tel": 5555555555,
  "name": "XXXXXXX",
  "lastname_pa": "XXXXX",
  "lastname_mo": "XXXXXX",
  "mont": 1,
  "concept": "XXXXXX",
  "limit_da": "2021-10-21 16:10:10"
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/pagos/pago_unico', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.Stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{ 
  "success": true,
    "data": {
        "telefono": "XXXXXXXXXX",
        "concepto": "XXXXXX",
        "codigo_rastreo": "XXXXXXXX"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un pago con un cargo único con el cual el cliente podrá aceptar, posponer o rechazar a través de CoDi, El número telefónico debe estar previamente registrado ante CoDi.

Informacion de peticion
Categoria Valor
Método HTTP POST
EndPoint /Api/v1/pagos/pago_unico
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe estar en formato JSON.

Campo Tipo de dato Requerido Definición
numero_tel Integer True Número telefónico del cliente (debe de estar dado de alta en CoDi)
name String True Nombre del cliente
lastname_pa String True Apellido paterno del cliente
lastname_mo String True Apellido materno del cliente
mont Float True Monto del cargo
concept String True Concepto del cobro menor a 40 caracteres
limit_da String True Fecha límite del pago, minimo 3 minutos, maximo 30 días
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
success Boolean Respuesta de la petición
data Object Objeto con Información del cobro
data.telefono String Telefóno al que se genero el cobro
data.concepto String Concepto por el que se realizó el cobro
data.codigo_rastreo String Identificador del cobro, el cual no servira para rastrear el estatus del mismo
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Pago recurrente

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/pagos/pago_recurrente"

payload = json.dumps({ "numero_tel": 5555555555, "name": "XXXXXXXXX", "lastname_pa": "XXXXXXXXX", "lastname_mo": "XXXXXXXXX", "mont": 1, "concept": "XXXXXXXXX", "limit_da": "2021-10-16 16:10:10", "date_pay": "Mensual" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/pagos/pago_recurrente', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "numero_tel": 5555555555, "name": "XXXXXXXXX", "lastname_pa": "XXXXXXXXX", "lastname_mo": "XXXXXXXXX", "mont": 1, "concept" : "XXXXXXXXX", "limit_da": "2021-10-16 16:10:10", "date_pay": "Mensual" }

', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;

var axios = require('axios');
var data = JSON.Stringify({
  "numero_tel": 5555555555,
  "name": "XXXXXXXXX",
  "lastname_pa": "XXXXXXXXX",
  "lastname_mo": "XXXXXXXXX",
  "mont": 1,
  "concept": "XXXXXXXXX",
  "limit_da": "2021-10-16 16:10:10",
  "date_pay": "Mensual"
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/pagos/pago_recurrente', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.Stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "status": "exitoso"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un pago con un cargo recurrente con el cual el cliente podra aceptar, posponer o rechazar a traves de CoDi.

Informacion de peticion
Categoria Valor
Método HTTP POST
EndPoint Api/v1/pagos/pago_recurrente
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe estar en formato JSON.

Campo Tipo de dato Requerido Definición
numero_tel Integer True Número telefónico del cliente (debe de estar dado de alta en CoDi)
name String True Nombre del cliente
lastname_pa String True Apellido paterno del cliente
lastname_mo String True Apellido materno del cliente
mont Float True Monto del cargo
concept String True Concepto del cobro menor a 40 caracteres
limit_da String True Fecha límite del pago, minimo 3 minutos, maximo 30 días
date_pay String True Recurrencia del pago [Anual,Bimestral,Cuatrimestral,Horas,Mensual,Quincenal,Semanal,Semestral,Trimestral,Unico]
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
success Boolean Respuesta de la petición
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Pagos masivos

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/pagos/pagos_masivos"

payload = json.dumps({ "data": [ { "numero_tel": 5555555555, "name": "XXXXXXXXXXXXXXX", "lastname_pa": "XXXXXXXXXXXXXXX ", "lastname_mo": "XXXXXXXXXXXXXXX", "mont": 1, "concept": "XXXXXXXXXXXXXXX ", "limit_da": "2022-10-20 16:10:10" }, { "numero_tel": 5555555555, "name": "XXXXXXXXXXXXXXX", "lastname_pa": "XXXXXXXXXXXXXXX ", "lastname_mo": "XXXXXXXXXXXXXXX", "mont": 1, "concept": "XXXXXXXXXXXXXXX ", "limit_da": "2022-10-20 16:10:10" } ] }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/pagos/pagos_masivos', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "data":[ { "numero_tel": 5555555555, "name": "XXXXXXXXXXXXXXX", "lastname_pa": "XXXXXXXXXXXXXXX ", "lastname_mo": "XXXXXXXXXXXXXXX", "mont": 1, "concept" : "XXXXXXXXXXXXXXX ", "limit_da": "2022-10-20 16:10:10" }, { "numero_tel": 5555555555, "name": "XXXXXXXXXXXXXXX", "lastname_pa": "XXXXXXXXXXXXXXX ", "lastname_mo": "XXXXXXXXXXXXXXX", "mont": 1, "concept" : "XXXXXXXXXXXXXXX ", "limit_da": "2022-10-20 16:10:10" }
] } '
, CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;

var axios = require('axios');
var data = JSON.Stringify({
  "data": [
    {
      "numero_tel": 5555555555,
      "name": "XXXXXXXXXXXXXXX",
      "lastname_pa": "XXXXXXXXXXXXXXX ",
      "lastname_mo": "XXXXXXXXXXXXXXX",
      "mont": 1,
      "concept": "XXXXXXXXXXXXXXX ",
      "limit_da": "2022-10-20 16:10:10"
    },
    {
      "numero_tel": 5555555555,
      "name": "XXXXXXXXXXXXXXX",
      "lastname_pa": "XXXXXXXXXXXXXXX ",
      "lastname_mo": "XXXXXXXXXXXXXXX",
      "mont": 1,
      "concept": "XXXXXXXXXXXXXXX ",
      "limit_da": "2022-10-20 16:10:10"
    }
  ]
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/pagos/pagos_masivos', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.Stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "estatus": [
        {
            "success": true,
            "data": [
                {
                    "success": true,
                    "data": {
                        "telefono": "5555555555",
                        "concepto": "XXXXXXXXX",
                        "codigo_rastreo": "XXXXXXXXX"
                    }
                }
            ]
        },
        {
            "success": true,
            "data": [
                {
                    "success": true,
                    "data": {
                        "telefono": "5555555555",
                        "concepto": "XXXXXXXXX",
                        "codigo_rastreo": "XXXXXXXXX"
                    }
                }
            ]
        }
    ]
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un objeto de cobros para generar múltiples cobros, los clientes podrán aceptar, posponer o rechazar a través de CoDi.

Informacion de peticion
Categoria Valor
Método HTTP POST
EndPoint /Api/v1/pagos/pagos_masivos
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe estar en formato JSON.

Campo Tipo de dato Requerido Definición
data Array True Arreglo que contendra la infromación de los clientes a los que se genera el cobro
data.x.numero_tel Integer True Número telefónico del cliente (debe de estar dado de alta en CoDi)
data.x.name String True Nombre del cliente
data.x.lastname_pa String True Apellido paterno del cliente
data.x.lastname_mo String True Apellido materno del cliente
data.x.mont Float True Monto del cargo
data.x.concept Integer True Concepto del cobro menor a 40 caracteres
data.x.limit_da Integer True Fecha límite del pago, minimo 3 minutos, maximo 30 días
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
success Boolean Respuesta de la peteción
estatus Array Arreglo con las respuestas de cada cobro
estatus.x.success Boolean Respuesta del cobro
estatus.x.data.success Boolean Respuesta del cobro
estatus.x.data.data Boolean Respuesta del cobro
estatus.x.data.data.telefono String Telefóno al que se genero el cobro
estatus.x.data.data.concepto String Concepto por el que se realizó el cobro
estatus.x.data.data.codigo_rastreo String Identificador del cobro, el cual no servira para rastrear el estatus del mismo
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Consulta de estatus de cobro

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/pagos/consultar_estatus"

payload = json.dumps({ "codigoRastreo": 'XXXXXXXX' }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/pagos/consultar_estatus', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "codigoRastreo":'XXXXXXXX' }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.Stringify({
  "codigoRastreo": 'XXXXXXXX'
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/pagos/consultar_estatus', headers: { 'Authorization': '[token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.Stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": {
        "estatus": "Rechazado",
        "ultima_actualizacion": "2021-02-12 09:52:35"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un objeto de rastreo para generar un consulta de estatus de cobro, los clientes podrán consultar el estatus del cobro enviado a traves de un código de rastreo.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v1/pagos/consultar_estatus
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
clave_rastreo String True Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
data Object Objeto con que contiene el estatus actual del objeto y su ultima fecha de actulización
data.estatus Strig Estado actual del del cobro push
data.ultima_actualizacion Strig Fecha con de la ultima transacción del cobro push
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Cobros por codigo QR

El módulo de códigos QR nos permite integrar códigos QR de manera sencilla.

Crear codigo QR

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/qr/crear_qr"

payload = json.dumps({ "mont": 1, "concept": "XXXXXXX", "limit_da": "2021-06-19 11:44:22", "type": 0, "reference": 7000003 }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/qr/crear_qr', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "mont": 1, "concept": "XXXXXXX", "limit_da": "2021-06-19 11:44:22", "type": 0, "reference": 7000003 }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "mont": 1,
  "concept": "XXXXXXX",
  "limit_da": "2021-06-19 11:44:22",
  "type": 0,
  "reference": 7000003
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/qr/crear_qr', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "status": "exitoso",
    "json_pago": "data:image/png;base64,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",
    "clave_rastreo": "XXXXXXX",
    "ref_pago": "XXXXXXX",
    "empresa_cobra": "XXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera un objeto QR el cual nos permitirá poder hacer el renderizado de un código QR de manera sencilla usando base64, los códigos QR cuentan con una vida util de 3 minutos como minimo y como maximo de 30 días, si el código QR no se encuentra en este rango sera ilegible.

Ejemplo:

<img alt="" src="data:image/png;base64, infromación del QR">

Es recomendable almacenar el valor clave_rastreo al momento de enviar el estatus de cada código QR.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v1/qr/crear_qr
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
mont float True Monto del cargo
concept String True Concepto del cobro menor a 40 caracteres
concept String True Motivo del cargo
limit_da String True Fecha límite del pago, minimo 3 minutos, maximo 30 días
reference Int True Número de identificación de hasta siete posiciones que el usuario selecciona al momento de instruir su pago
type Int True Tipo de cobro [1=>Unico, 2=>Recurrente]
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
json_pago String Cadena con el contenido para poder hacer el render de una imagen base64
clave_rastreo Strig Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago
ref_pago Strig Identificador del pago
empresa_cobra Strig Razón social de la empresa que cobra
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String identificador de error

Actualizar código QR

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/qr/refrescar_qr"

payload = json.dumps({ "clave_rastro": "XXXXXXXXX", "ref_pag": "XXXXXXXXX" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/qr/refrescar_qr', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>' {"clave_rastro":"XXXXXX","ref_pag":"XXXXXX" }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "clave_rastro": "XXXXXXX",
  "ref_pag": "XXXXXXX"
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/qr/refrescar_qr', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "status": "exitoso",
    "json_pago": "data:image/png;base64,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",
    "clave_rastreo": "XXXXXXX",
    "ref_pago": "XXXXXXX",
    "empresa_cobra": "XXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera objeto refrescar QR, el cual nos va a permitir generar un nuevo codigo QR pasando como parametros la clave de rastreo y la referencia de pago.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v1/qr/refrescar_qr
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Definición
clave_rastreo String Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
ref_pago String Identificador del pago
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
json_pago String Cadena con el contenido para poder hacer el render de una imagen base64
clave_rastreo Strig Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago
ref_pago Strig Identificador del pago
empresa_cobra Strig Razón social de la empresa que cobra
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String identificador de error

Obtener estatus de código QR

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v1/qr/consultar_estatus"

payload = json.dumps({ "claveRastreo": "XXXXXXXXX" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/qr/consultar_estatus', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "claveRastreo":"XXXXXXXXX" }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "claveRastreo": "XXXXXXXX"
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v1/qr/consultar_estatus', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": {
        "estatus": "Rechazado",
        "ultima_actualizacion": "2021-02-12 09:52:35"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera objeto refrescar QR, el cual nos va a permitir generar un nuevo codigo QR pasando como parametros la clave de rastreo y la referencia de pago.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v1/qr/consultar_estatus
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

Campo Tipo de dato Requerido Definición
clave_rastreo String True Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
data Object Objeto con que contiene el estatus actual del objeto y su ultima fecha de actulización
data.estatus Strig Estado actual del último escaneo del código QR
data.ultima_actualizacion Strig Fecha con de la ultima transacción del código QR
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String identificador de error

V2

Autenticación versión 2

El módulo de autenticación de la API de PayCode nos permite obtener un token el cual nos permite autenticar cada una de las peticiones futuras

La API de PayCode utiliza una autenticación basada en token para aceptar peticiones.

Si se raliza un peteción sin el token asignado simplemente fallara.

Login v2

import requests

url = "https://plataforma.paycode.com.mx/Api/v2/auth/login"

payload = ""
headers = {
  'Authorization': '[API Key]'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/auth/login',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: [API Key]'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = '';

var config = {
  method: 'get',
  url: 'https://plataforma.paycode.com.mx/Api/v2/auth/login',
  headers: { 
    'Authorization': '[API Key]'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "access_token": "[token]",
    "token_type": "bearer",
    "expires_in": 300
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

Recupera un token tipo bearer, que permite autenticar una petición

Información de petición
Categoria Valor
Método HTTP GET
EndPoint /Api/v2/auth/login
Headers
Tipo Valor
Authorization [API Key]
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
access_token String Token de autenticación
token_type String Tipo de token
expires_in Int Tiempo de vida del token
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Actualizar token v2

import requests

url = "https://plataforma.paycode.com.mx/Api/v2/token/actualizar_token"

payload  = {}
headers = {
  'Authorization': 'Bearer [token]'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://plataforma.paycode.com.mx/Api/v2/token/actualizar_token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = '';

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/token/actualizar_token',
  headers: { 
    'Authorization': 'Bearer [token]'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "access_token": "[token]",
    "token_type": "bearer",
    "expires_in": 300
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

Recupera un token nuevo usando el token actual, siempre y cuando no se halla expirado.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v2/token/actualizar_token
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
access_token String Token de autenticación
token_type String Tipo de token
expires_in Int Tiempo de vida del token (Segundos)
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Logout v2

import requests

url = "https://plataforma.paycode.com.mx/Api/v2/auth/logout"

payload = ""
headers = {
  'Authorization': 'Bearer  [token]'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

<?php

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/auth/logout',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;




var axios = require('axios');
var data = '';

var config = {
  method: 'get',
  url: 'https://plataforma.paycode.com.mx/Api/v2/auth/logout',
  headers: { 
    'Authorization': 'Bearer [token]'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "message": "Successfully logged out"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": -80
}

El token recuperado es mandado a un lista negra imposibilitándolo para generar nuevas peticiones.

Información de petición
Categoria Valor
Método HTTP GET
EndPoint Api/v2/auth/logout
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
message String Mensaje de salida
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Cobros v2

Las siguientes URL nos permiten hacer cobros de manera única, recurrente y masiva de manera rápida y sencilla

Pago único v2

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/cobros/cobro_unico"

payload = json.dumps({
  "phone": 5555555555,
  "amount": 10.5,
  "name": "XXXXXX",
  "lastname_pa": "XXXXXX",
  "lastname_mo": "XXXXXX",
  "birth_date": "1995-02-16",
  "email": "mail@mail.com",
  "concept": "XXXXXX",
  "limit_date": "2021-06-19 11:44:22",
  "branch_code": "",
  "product_code": "",
  "zone_code": "",
  "period_code": "",
  "date_pay": "unico",
  "if_error": 1
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/cobros/cobro_unico',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "phone":5555555555,
    "amount":10.5,
    "name":"XXXXXX",
    "lastname_pa":"XXXXXX",
    "lastname_mo":"XXXXXX",
    "birth_date": "1995-02-16",
    "email" :"mail@mail.com",
    "concept":"XXXXXX",
    "limit_date":"2021-06-19 11:44:22",
    "branch_code":"",
    "product_code":"",
    "zone_code":"",
    "period_code":"",
    "date_pay":"unico",
    "if_error":1
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = JSON.Stringify({
  "phone": 5555555555,
  "amount": 10.5,
  "name": "XXXXXX",
  "lastname_pa": "XXXXXX",
  "lastname_mo": "XXXXXX",
  "birth_date": "1995-02-16",
  "email": "mail@mail.com",
  "concept": "XXXXXX",
  "limit_date": "2021-06-19 11:44:22",
  "branch_code": "",
  "product_code": "",
  "zone_code": "",
  "period_code": "",
  "date_pay": "unico",
  "if_error": 1
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/cobros/cobro_unico',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.Stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{ 
  "success": true,
    "data": {
        "telefono": "XXXXXXXXXX",
        "concepto": "XXXXXX",
        "codigo_rastreo": "XXXXXXXX",
        "errors": [
            "Código de zona no ingresado",
            "Código de sucursal no ingresado",
            "Código de producto no ingresado",
            "Código de periodo no ingresado"
        ]
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un pago con un cargo único con el cual el cliente podrá aceptar, posponer o rechazar a través de CoDi, El número telefónico debe estar previamente registrado ante CoDi.

Informacion de peticion
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/cobros/cobro_unico
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe estar en formato JSON.

Campo Tipo de dato Requerido Definición
phone Integer True Número telefónico del cliente (debe de estar dado de alta en CoDi)
amount Float True Monto del cargo
name String True Nombre del cliente
lastname_pa String True Apellido paterno del cliente
lastname_mo String True Apellido materno del cliente
birth_date String True Fecha de nacimiento del cliente
email String True Correo electrónico del cliente
concept String True Concepto del cobro menor a 40 caracteres
limit_date String True Fecha límite del pago, minimo 3 minutos, maximo 30 días
branch_code String True Código de la sucursal asociada al producto
product_code String True Código del producto
zone_code String True Código del región
period_code String True Código del periodo
date_pay String True Periodicidad del pago
if_error String True Condición para generar un envío de pago unico sencillo, donde 1 le permite no colocar los valores de branch_code, product_code, zone_code, period_zone en dado caso de que se coloquen y esten mal se enviara el cobro y mostrara los errores, si no se colocan estos valores y esta el valor if_error en 1 se asignaran valores por defecto en estos campos, si el valor esta en 0 los campos branch_code, period_code product_code y zone_code deben ser validos de lo contrario no saldra el envio de cobro
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
success Boolean Respuesta de la petición
data Object Objeto con Información del cobro
data.telefono String Telefóno al que se genero el cobro
data.concepto String Concepto por el que se realizó el cobro
data.codigo_rastreo String Identificador del cobro, el cual no servira para rastrear el estatus del mismo
data.errors Array Arreglo donde se listaran los errores
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Consulta de estatus de cobro v2

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/pagos/consultar_estatus"

payload = json.dumps({
  "codigoRastreo": 'XXXXXXXX'
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v1/pagos/consultar_estatus',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "codigoRastreo":'XXXXXXXX'
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var axios = require('axios');
var data = JSON.Stringify({
  "codigoRastreo": 'XXXXXXXX'
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v1/pagos/consultar_estatus',
  headers: { 
    'Authorization': '[token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.Stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": {
        "estatus": "Rechazado",
        "ultima_actualizacion": "2021-02-12 09:52:35"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Cree un objeto de rastreo para generar un consulta de estatus de cobro, los clientes podrán consultar el estatus del cobro enviado a traves de un código de rastreo.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/pagos/consultar_estatus
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

Campo Tipo de dato Requerido Definición
clave_rastreo String True Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
data Object Objeto con que contiene el estatus actual del objeto y su ultima fecha de actulización
data.estatus Strig Estado actual del cobro push
data.ultima_actualizacion Strig Fecha con de la ultima transacción del cobro push
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Cobros por codigo QR v2

El módulo de códigos QR nos permite integrar códigos QR de manera sencilla.

Crear codigo QR v2

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/qr/crear_qr"

payload = json.dumps({
  "amount": 1,
  "concept": "XXXXXXX",
  "limit_date": "2021-06-19 11:44:22",
  "type": 0,
  "reference": 7000003
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/qr/crear_qr',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "amount": 1,
    "concept": "XXXXXXX",
    "limit_date": "2021-06-19 11:44:22",
    "type": 0,
    "reference": 7000003
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "amount": 1,
  "concept": "XXXXXXX",
  "limit_date": "2021-06-19 11:44:22",
  "type": 0,
  "reference": 7000003
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/qr/crear_qr',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "status": "exitoso",
    "json_pago": "data:image/png;base64,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",
    "clave_rastreo": "XXXXXXX",
    "ref_pago": "XXXXXXX",
    "empresa_cobra": "XXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera un objeto QR el cual nos permitirá poder hacer el renderizado de un código QR de manera sencilla usando base64, los códigos QR cuentan con una vida util de 3 minutos como minimo y como maximo de 30 días, si el código QR no se encuentra en este rango sera ilegible.

Ejemplo:

<img alt="" src="data:image/png;base64, infromación del QR">

Es recomendable almacenar el valor clave_rastreo al momento de enviar el estatus de cada código QR.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/qr/crear_qr
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
amount float True Monto del cargo
concept String True Concepto del cobro menor a 40 caracteres
limit_date String True Fecha límite del pago, minimo 3 minutos, maximo 30 días
reference Integer True Número de identificación de hasta siete posiciones que el usuario selecciona al momento de instruir su pago
type Integer True Tipo de cobro [1=>Unico, 2=>Recurrente]
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
json_pago String Cadena con el contenido para poder hacer el render de una imagen base64
clave_rastreo Strig Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago
ref_pago Strig Identificador del pago
empresa_cobra Strig Razón social de la empresa que cobra
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Actualizar código QR v2

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/qr/refrescar_qr"

payload = json.dumps({
  "clave_rastro": "XXXXXXXXX",
  "ref_pag": "XXXXXXXXX"
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/qr/refrescar_qr',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'
{"clave_rastro":"XXXXXX","ref_pag":"XXXXXX"  }',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "clave_rastro": "XXXXXXX",
  "ref_pag": "XXXXXXX"
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/qr/refrescar_qr',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "status": "exitoso",
    "json_pago": "data:image/png;base64,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",
    "clave_rastreo": "XXXXXXX",
    "ref_pago": "XXXXXXX",
    "empresa_cobra": "XXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera objeto refrescar QR, el cual nos va a permitir generar un nuevo codigo QR pasando como parametros la clave de rastreo y la referencia de pago.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v2/qr/refrescar_qr
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Definición
clave_rastreo String Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
ref_pago String Identificador del pago
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
json_pago String Cadena con el contenido para poder hacer el render de una imagen base64
clave_rastreo Strig Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago
ref_pago Strig Identificador del pago
empresa_cobra Strig Razón social de la empresa que cobra
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Obtener estatus de código QR v2

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/qr/consultar_estatus"

payload = json.dumps({
  "claveRastreo": "XXXXXXXXX"
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/qr/consultar_estatus',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "claveRastreo":"XXXXXXXXX"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var axios = require('axios');
var data = JSON.stringify({
  "claveRastreo": "XXXXXXXX"
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/qr/consultar_estatus',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": {
        "estatus": "Rechazado",
        "ultima_actualizacion": "2021-02-12 09:52:35"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera un objeto el cual nos permite saber el estatus actual del código QR.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v2/qr/consultar_estatus
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

Campo Tipo de dato Requerido Definición
clave_rastreo String True Identificador de hasta 20 posiciones alfanuméricas que la institución le proporciona al usuario al momento en que se instruye el pago.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
status String Estatus de la petición
data Object Objeto con que contiene el estatus actual del objeto y su ultima fecha de actulización
data.estatus Strig Estado actual del último escaneo del código QR
data.ultima_actualizacion Strig Fecha con de la ultima transacción del código QR
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

El módulo de links de pago es una opción fácil para cobrar a tus clientes enviando notificaciones en forma de mensaje por Whatsapp, mensaje de texto ó correo sin necesidad de tener un sitio web o tienda en línea, tus clientes podrán acceder al sitio https://checkout.paycode.com.mx/ donde podran pagar.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/links-pago/crear_link"

payload = json.dumps({
  "require_info": 0,
  "auto_invoicing": False,
  "concept": "sum concept",
  "customer_code": "0000000",
  "type_link": "2",
  "expiration_time": {
    "days": 1,
    "hours": 0,
    "mins": 0,
    "secs": 0
  },
  "images_link": {
    "url_img_product": "https://img.com/img.jpg",
    "url_logo": "https://img.com/img.jpg"
  },
  "notifications": {
    "email": True,
    "sms": True
  },
  "payment_method": {
    "codi": True,
    "credit_card": True,
    "spei": True
  },
  "products": [
    {
      "amount": "12",
      "name": "pago unico",
      "product_code": "0000000",
      "quantity": 1
    }
  ],
  "redirect_url": "https://callback.com/redirect_success",
  "sms_text": "PayCode: tiene una nueva solicitud de pago. Puede realizar el pago en el siguiente enlace #LINK_PAGO, #NEGOCIO envío una solicitud de pago por el importe de #TOTAL MXN.",
  "style_configuration": {
    "backgoround": "#000000",
    "color_btn": "#000000",
    "colortext_btn": "#FFFFFF"
  }
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/links-pago/crear_link',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
  "require_info":0,
  "auto_invoicing": false,
  "concept": "sum concept",
  "customer_code": "0000000",
  "type_link":"2",
  "expiration_time": 
    {
      "days": 1,
      "hours": 0,
      "mins": 0,
      "secs": 0
    }
  ,
  "images_link": {
    "url_img_product": "https://img.com/img.jpg",
    "url_logo": "https://img.com/img.jpg"
  },
  "notifications": {
    "email": true,
    "sms": true
  },
  "payment_method": {
    "codi": true,
    "credit_card": true,
    "spei": true
  },
  "products": [
    {
      "amount": "12",
      "name": "pago unico",
      "product_code": "0000000",
      "quantity": 1
    }
  ],
  "redirect_url": "https://callback.com/redirect_success",
  "sms_text": "PayCode: tiene una nueva solicitud de pago. Puede realizar el pago en el siguiente enlace #LINK_PAGO, #NEGOCIO envío una solicitud de pago por el importe de #TOTAL MXN.",
  "style_configuration": {
    "backgoround": "#000000",
    "color_btn": "#000000",
    "colortext_btn": "#FFFFFF"
  }
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "require_info": 0,
  "auto_invoicing": false,
  "concept": "sum concept",
  "customer_code": "0000000",
  "type_link": "2",
  "expiration_time": {
    "days": 1,
    "hours": 0,
    "mins": 0,
    "secs": 0
  },
  "images_link": {
    "url_img_product": "https://img.com/img.jpg",
    "url_logo": "https://img.com/img.jpg"
  },
  "notifications": {
    "email": true,
    "sms": true
  },
  "payment_method": {
    "codi": true,
    "credit_card": true,
    "spei": true
  },
  "products": [
    {
      "amount": "12",
      "name": "pago unico",
      "product_code": "0000000",
      "quantity": 1
    }
  ],
  "redirect_url": "https://callback.com/redirect_success",
  "sms_text": "PayCode: tiene una nueva solicitud de pago. Puede realizar el pago en el siguiente enlace #LINK_PAGO, #NEGOCIO envío una solicitud de pago por el importe de #TOTAL MXN.",
  "style_configuration": {
    "backgoround": "#000000",
    "color_btn": "#000000",
    "colortext_btn": "#FFFFFF"
  }
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/links-pago/crear_link',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  maxRedirects: 0,
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "link": "https://checkout.paycode.com.mx/XXXXXX-CCCC-XXXXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "error": "-80", 
}

Recupera un objeto link de pago el cual nos permitara poder generar un URL única donde tus clientes podran pagar algún servicio.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/links-pago/crear_link
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
require_info integer false Valor que terminte solicitar datos del cliente (Nombre, Apellido, Email)
type_link integer false Define el tipo de link, 1 para un link de pago único, 2 para un link de pago permanente este link puede pagarse mas de una vez
expiration_time object true Define el tiempo de duración del link de pago
expiration_time.days integer true Define los días de vida del link de pago, para cobros CoDi los dias maximos son 30
expiration_time.hours integer false Horas de vida del link de pago
expiration_time.mins integer false Minutos de vida del link de pago
expiration_time.secs integer false Segundos de vida del link de pago
images_link object true Define las imagenes del producto y logo del link de pago
images_link.url_img_product String true Url de imagen del producto
images_link.url_logo String true Url de imagen del logo del negocio
notifications object true Define los medios de notificación del link de pago
notifications.email Boolean true Se enviara notificación por email
notifications.sms Boolean true Se enviara notificación por SMS
payment_method object true Define los metodos de pago que se habilitaran para el link de pago
payment_method.codi Boolean false Define CoDi como método de pago
payment_method.credit_card Boolean false Define tarjeta de crédito como método de pago
payment_method.spei Boolean false Define SPEI como método de pago
concept String True Concepto del cobro menor a 40 caracteres
customer_code String True Código único de usario al cual se le generara el cobro, el código se puede definir a través de la plataforma de PayCode al momento de dar de alta a un cliente
products Array True Arreglo que contiene los productos asociados al link de pago
products.x.product_code String True Código único de producto al cual se le generara el cobro, el código se puede definir a través de la plataforma de PayCode al momento de dar de alta a un producto
products.x.quantity Integer false Cantidad del producto asociado
products.x.amount float false Precio por unidad del producto
auto_invoicing Boolean True Facturación (alpha), por default false
sms_text String True Texto de hasta 250 caracteres que se enviará en las notificaciones via SMS y Correo, los valores que se pueden sustituir son los siguientes:
'#NOMBRE' => Nombre del cliente a quien va dirigido el link de pago,
'#TOTAL'=>Monto total del link de pago,
'#FECHA_LIMITE'=>Fecha de vencimiento,
'#LINK_PAGO'=>URL del link de pago,
'#CONCEPTO'=>Concepto del link de pago,
'#NEGOCIO'=> Nombre del negocio que cobra
redirect_url String True URL a donde se realizará un redireccionamiento posterior a efectuar el cobro por algún Método de pago
style_configuration object true Define parametros de estilo para el link de pago
style_configuration.backgoround Boolean true Define el color de fondo del link de pago
style_configuration.color_btn Boolean true Define el color de fondo de los botones
style_configuration.colortext_btn Boolean true Define el color de texto del botón
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
success Boolean Estatus de la petición
link String URL del link de pago
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Cobros por tarjeta débito/crédito v2

Módulo pago por tarjeta nos permite generar transacciones a través de nuestro API con total seguridad

Crear cargo

Recupera un objeto tarjeta el cual nos permitirá realizar un cobro con tarjeta de crédito / débito.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/cobros/pago_tarjeta_ecomerce"

payload = json.dumps({
  "save_card":true, 
  "amount": "23.00",
  "card": {
    "card_number": "5111111111111118",
    "sec_code": "000",
    "exp_month": "00",
    "exp_year": "20",
    "cardholder_name": "XXXXXX"
  },
  "client": {
    "num_cel": "5555555555",
    "first_name": "XXXXXX",
    "paternal_surname": "XXXXXX",
    "maternal_surname": "XXXXXX",
    "concept": "XXXXXX"
  },
   "ip":"000.000.000.000"
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/cobros/pago_tarjeta_ecomerce',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{  "save_card":true,  "amount": "23.00", 
    "card": {
        "card_number": "5111111111111118",
        "sec_code": "000",
        "exp_month": "00",
        "exp_year": "20",        
        "cardholder_name": "XXXXXX"

    },
    "client": {                                       
                "num_cel"              : "5555555555",
                "first_name"          : "XXXXXX",
                "paternal_surname"     : "XXXXXX",
                "maternal_surname"     : "XXXXXX",
                "concept"              : "XXXXXX" 
             },
     "ip":"000.000.000.000"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = JSON.stringify({
  "save_card":true, 
  "amount": "23.00",
  "card": {
    "card_number": "1111111111111111",
    "sec_code": "000",
    "exp_month": "00",
    "exp_year": "00",
    "cardholder_name": "XXXXXX"
  },
  "client": {
    "num_cel": "5555555555",
    "first_name": "XXXXXX",
    "paternal_surname": "XXXXXX",
    "maternal_surname": "XXXXXX",
    "concept": "XXXXXX"
  },
  "ip":"000.000.000.000"
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/cobros/pago_tarjeta_ecomerce',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint con el campo save_card definido con valor false, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "display_message": "APROBADO",
    "reference_number": "000000006216",
    "track_code": "0X0X0X0X0X"
}

Este es un ejemplo de respuesta satisfactoria del endpoint con el campo save_card definido con valor true, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "display_message": "APROBADO",
    "reference_number": "000000006216",
    "track_code": "0X0X0X0X0X",
    "token_card": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "display_message": "RECHAZADA",
    "reference_number": "000000006216",
    "track_code": "0X0X0X0X0X"
}

Recupera un objeto tarjeta el cual nos permitirá poder generar una transacción via e-comerce, aceptamos tarjetas Visa / Mastercard y AMEX.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/cobros/pago_tarjeta_ecomerce
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
save_card Boolean false Indica si requiere tokenizar la tarjeta fase BETA
amount float true Monto del cargo
card Object true Objeto que contiene los datos de la tarjeta
card.card_number String true Número de tarjeta a la que se realizara el cobro
card.sec_code String true Código de serguridad de la tarjeta a la que se realizara el cobro
card.exp_month String true Mes de expiración de la tarjeta (MM)
card.exp_year String true Año de expiración de la tarjeta (YY)
card.cardholder_name String true Nombre del propietario de la tarjeta
client Object true Objeto que contiene los datos del cliente
client.num_cel Integer true Número telefónico del cliente
client.first_name String true Nombre del cliente
client.paternal_surname String true Apellido paterno del cliente
client.maternal_surname String true Apellido materno del cliente
client.concept String true Concepto del cobro menor a 40 caracteres
ip String true IP pública del cliente
Esquema de salida de una petición satisfactoria con el campo save_card definido con valor false
Campo Tipo de dato Definición
successful String Estatus de la petición
display_message String Cadena con el mensaje de estatus de la transacción
reference_number String Número de referencia
track_code String Identificador de 10 posiciones alfanuméricas servira para consultar el estatus del cobro
Esquema de salida de una petición satisfactoria con el campo save_card definido con valor true
Campo Tipo de dato Definición
successful String Estatus de la petición
display_message String Cadena con el mensaje de estatus de la transacción
reference_number String Número de referencia
track_code String Identificador de 10 posiciones alfanuméricas servira para consultar el estatus del cobro
token_card String Identificador el cual se podrá utilizar para genera transacciones sin necesidad de mandar los datos de la tarjeta
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Crear cargo por token BETA

Recupera un objeto tarjeta el cual nos permitirá realizar un cobro con tarjeta de crédito / débito.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/cobros/pago_token_ecomerce"

payload = json.dumps({

  "amount": "23.00",
  "token_card":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "ip":"000.000.000.000"
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/cobros/pago_token_ecomerce',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{  "amount": "23.00",
  "token_card":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "ip":"000.000.000.000"
  }',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = JSON.stringify({
  "amount": "23.00",
  "token_card":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "ip":"000.000.000.000"
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/cobros/pago_token_ecomerce',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "display_message": "APROBADO",
    "reference_number": "000000006216",
    "track_code": "0X0X0X0X0X"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "display_message": "RECHAZADA",
    "reference_number": "000000006216",
    "track_code": "0X0X0X0X0X"
}

Recupera un objeto tarjeta el cual nos permitirá poder generar una transacción via e-comerce, aceptamos tarjetas Visa / Mastercard y AMEX.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/cobros/pago_token_ecomerce
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
token_card String true Identificador el cual se podrá utilizar para genera transacciones sin necesidad de mandar los datos de la tarjeta
amount float true Monto del cargo
ip String true IP pública del cliente
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
successful String Estatus de la petición
display_message String Cadena con el mensaje de estatus de la transacción
reference_number String Número de referencia
track_code String Identificador de 10 posiciones alfanuméricas servira para consultar el estatus del cobro
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Obtener transacciones

Recupera un objeto transacciones el cual listara las transacciones realizadas.

import requests

url = "https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_transacciones"

payload={}
headers = {
  'Authorization': 'Bearer [token]'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_transacciones',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');

var config = {
  method: 'get',
  url: 'https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_transacciones',
  headers: { 
    'Authorization': 'Bearer [token]'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": [{
      "negocio": "PayCode",
      "identificador": XXXXXXXX,
      "fecha_transaccion": "XXXXXXXXX",
      "tipo_lectura": "key_entry",
      "monto": "1.00",
      "propina": "0.00",
      "numero_autorizacion": XXXXXXXXXX,
      "referencia": "XXXXXXXXXX",
      "codigo_resultado": "00",
      "reference_number": "XXXXXXXXXX"
    }]
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "data": "[]",

}

Información de petición
Categoria Valor
Método HTTP GET
EndPoint /Api/v2/transacciones/obtener_transacciones
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

No requiere ningún esquema de entrada

Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
successful string Estatus de la petición
data array Arreglo que contiene información de transacciones
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Obtener estatus de transacciones

Recupera un objeto transacciones el cual nos permitirá conocer el estatus de la transacción.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_estatus_transacciones"

payload = json.dumps({
  "transactions": [
    XXXXX
  ]
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_estatus_transacciones',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "transactions":[XXXXXXX]
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "transactions": [
    226379
  ]
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/transacciones/obtener_estatus_transacciones',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data":  [{
      "negocio": "PayCode",
      "identificador": XXXXXXXX,
      "fecha_transaccion": "XXXXXXXXX",
      "tipo_lectura": "key_entry",
      "monto": "1.00",
      "propina": "0.00",
      "numero_autorizacion": XXXXXXXXXX,
      "referencia": "XXXXXXXXXX",
      "codigo_resultado": "00",
      "reference_number": "XXXXXXXXXX",
      "conciliado":true
    }],

}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "data": [],

}

Recupera un objeto tarjeta el cual nos permitirá poder conocer el estatus de las transacciones, se pueden consultar hasta 50 transacciones por petición.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/transacciones/obtener_estatus_transacciones
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
transactions array true Arreglo que contendra todos los indentificadores de las transacciones
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
negocio string Nombre del negocio
identificador integer Número de identificación de la transacción
fecha_transaccion date Fecha en la que se realizo la transacción
tipo_lectura string Método por el cual se realizo la transacción
propina integer Cantidad de propina
numero_autorizacion integer Número asignado de autorización para la transacción
referencia string Referencia de la transacción
codigo_resultado string Código de respuesta de la transacción
tipo_transaccion integer Tipo de transacción [sale 0, void 1, refund 2, auth 3, completion 4, cancel 5, chargeback 6]
aprobada boolean Define si fue aprobada o rechazada la transacción
reversada boolean Define si fue devuelta la transacción
terminal_id integer Número de terminal
banco string Nombre de banco
tipo_tarjeta integer Define el tipo de tarjeta [credit 0, debit 1, prepaid 2, charge_card 3]
marca_tarjeta string Marca de la tarjeta
conciliado boolean Define si la transacción fue concilida
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Crear devolución

Módulo devolución por tarjeta nos permite generar una devolución sobre una transacciones dentro de las primeras 24 horas en las que fue ralizada la transacción, pasado este tiempo la peticion retornara false.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/cobros/void_tarjeta_ecomerce"

payload = json.dumps({
  "track_code": 00000000
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/cobros/void_tarjeta_ecomerce',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
  "track_code":00000000

}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = JSON.stringify({
  "track_code": 00000000
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/cobros/void_tarjeta_ecomerce',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  maxRedirects: 0,
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});



Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "successfull": true,
    "display_message": "APROBADO",
    "result_code": "00",
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "display_message": "RECHAZADA",
    "result_code": "56",

}

Recupera un objeto devolución el cual nos permitirá realizar una devolución sobre una transacción de tarjeta de débito/crédito.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/cobros/void_tarjeta_ecomerce
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
track_code integer true Identificador de la transacción
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
successful String Estatus de la petición
display_message String Cadena que nos indica el estatus de la petición
result_code String Código de respuesta
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
successful String Estatus de la petición
display_message String Cadena que nos indica el estatus de la petición
result_code String Código de respuesta

Facturación v2

Módulo facturación, permitirá generar facturas a través de nuestro API con total seguridad

Crear factura

Recupera un objeto factura el cual nos permitirá realizar una operación de facturación.

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/facturacion/crear_factura"

payload = json.dumps({
  "emission_date": "2018-02-22T11:11:50",
  "subtotal": 430,
  "total": 430,
  "iva": 72.48,
  "amount_lrcs": "DOS MIL CIENTO DIESIOCHO 00/100",
  "currency":"MXN",
  "exchange_rate":1,
  "observations": {
    "first_observation": "PRIMERA OBSERVACIÓN",
    "second_observation": "SEGUNDA OBSERVACIÓN",
    "third_observation":"TERCERA OBSERVACIÓN",

  },
  "cfdi_relation":"51454E3B-F9D2-4016-A8FA-D71B3970567A",
  "receptor": {
    "rfc": "5555555555",
    "name": "XXXXXX",
    "country": "XXXXXX",
    "address": "XXXXXX",
    "number": "XXXXXX",
    "interior_num": "XXXXXX",
    "reference_address":"XXXXX",
    "cp":78485
  },
  "quantities":1,
  "unit":"A1-Unidad",
  "description":"10101506 - Galletas",
  "price":"115.11",
  "discount":0,
})
headers = {
  'Authorization': 'Bearer [token]',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/facturacion/crear_factura',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "emission_date": "2018-02-22T11:11:50",
    "subtotal": 430,
    "total": 430,
    "iva": 72.48,
    "amount_lrcs": "DOS MIL CIENTO DIESIOCHO 00/100",
    "currency":"MXN",
    "exchange_rate":1,
    "observations": {
      "first_observation": "PRIMERA OBSERVACIÓN",
      "second_observation": "SEGUNDA OBSERVACIÓN",
      "third_observation":"TERCERA OBSERVACIÓN",

    },
    "cfdi_relation":"51454E3B-F9D2-4016-A8FA-D71B3970567A",
    "receptor": {
      "rfc": "5555555555",
      "name": "XXXXXX",
      "country": "XXXXXX",
      "address": "XXXXXX",
      "number": "XXXXXX",
      "interior_num": "XXXXXX",
      "reference_address":"XXXXX",
      "cp":78485
    },
    "quantities":1,
    "unit":"A1-Unidad",
    "description":"10101506 - Galletas",
    "price":"115.11",
    "discount":0,
  }',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = JSON.stringify({
    "emission_date": "2018-02-22T11:11:50",
    "subtotal": 430,
    "total": 430,
    "iva": 72.48,
    "amount_lrcs": "DOS MIL CIENTO DIESIOCHO 00/100",
    "currency":"MXN",
    "exchange_rate":1,
    "observations": {
      "first_observation": "PRIMERA OBSERVACIÓN",
      "second_observation": "SEGUNDA OBSERVACIÓN",
      "third_observation":"TERCERA OBSERVACIÓN",

    },
    "cfdi_relation":"51454E3B-F9D2-4016-A8FA-D71B3970567A",
    "receptor": {
      "rfc": "5555555555",
      "name": "XXXXXX",
      "country": "XXXXXX",
      "address": "XXXXXX",
      "number": "XXXXXX",
      "interior_num": "XXXXXX",
      "reference_address":"XXXXX",
      "cp":78485
    },
    "quantities":1,
    "unit":"A1-Unidad",
    "description":"10101506 - Galletas",
    "price":"115.11",
    "discount":0,
  });

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/facturacion/crear_factura',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "URL_PDF": "https://plataforma.paycode.com.mx/Api/v2/facturacion/archivo/xxx-xxxx-xxx-xxx-xxxx-xxxx-xx",
    "URL_XML": "https://plataforma.paycode.com.mx/Api/v2/facturacion/archivo/xxx-xxxx-xxx-xxx-xxxx-xxxx-xx"
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,

    "error": -81
}

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/facturacion/crear_factura
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
emission_date string true Fecha en la que se emitió la factura
subtotal float true Subtotal del monto requerido
total float true Total neto del monto requerido
iva float true IVA de la cantidad
amount_lrcs string true Cantidad total en letra
currency string true Tipo de moneda ISO 4217
exchange_rate int true Tipo de cambio
observations object true Objeto que contiene los observaciones
observations.first_observation string true Observación sobre la factura
observations.second_observation string true Segunda Observación sobre la factura
observations.third_observation string true Tercera Observación sobre la factura
cfdi_relation string true CFDI
receptor object true Objeto que contiene los datos del receptor
receptor.rfc string true RFC del receptor de la factura
receptor.name String true Nombre de la empresa receptora
receptor.country String true País de la empresa receptora
receptor.address string true Dirección de la empresa receptora
receptor.number int true Número de la dirección de la empresa receptora
receptor.interior_num int true Número interior de la empresa receptora
receptor.reference_address string true Referencia sobre la dirección de la empresa receptora
receptor.cp int true Código postal de la empresa receptora
quantities int true Cantidad de unidades a facturar
unit int true Tipo de unidad a facturar
description string true Descripción de las unidades a facturar
price float true Precio de las unidades a facturar
discount float true Descuento de las unidades a facturar
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
successful String Estatus de la petición
URL_PDF String URL de descarga de la factura en formato PDF
URL_XML Strig URL de descarga de la factura en formato XML
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
successful String Estatus de la petición
error String Identificador de error

Cobros por SPEI

El módulo de cobros SPEI nos permite integrar cobros a traves de SPEI.

Crear cobro SPEI

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/payments/payment_spei"

payload = json.dumps({
  "clabe": "XXXXXXXXXXXXXXXXX",
  "amount": 3.10,
  "concept": "concepto",
  "limit_date": "2021-06-19 15:18:29"
})
headers = {
  'Content-Type': 'application/json'
  'Authorization': 'Bearer [token]',
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)


<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/payments/payment_spei',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{ "clabe": "XXXXXXXXXXXXXXXXX",
  "amount": 3.10,
  "concept": "concepto",
  "limit_date": "2021-06-19 15:18:29"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer [token]',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;



var axios = require('axios');
var data = JSON.stringify({
    "clabe": "XXXXXXXXXXXXXXXXX",
    "amount": 3.10,
    "concept": "concepto",
    "limit_date": "2021-06-19 15:18:29"
});

var config = {
  method: 'post',
  url: 'https://plataforma.paycode.com.mx/Api/v2/payments/payment_spei',
  headers: { 
    'Authorization': 'Bearer [token]', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});


Este es un ejemplo de respuesta satisfactoria del endpoint , La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": {
        "code": "8eNt-vmL-8Mut",
        "concept": "PAY000000056",
        "beneficiary": "PayCode",
        "bank": "STP",
        "clabe": "646180238065900013"
    }
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.


{
    "success": false,
    "error": "0X0X0X0X0X",

}

Recupera un objeto Spei el cual nos permitirá poder generar un cobro SPEI.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint /Api/v2/payments/payment_spei
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición
Campo Tipo de dato Requerido Definición
clabe String true Cuenta CLABE del cliente
amount float true Monto del cargo
concept String true Concepto del carga, máximo 40 caracteres
limit_date String true Fecha de vencimiento del cobro Y-mm-dd H:m:s
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
successful String Estatus de la petición
data Object Objeto con datos de cobro
data.code String Identificador del pago
data.concept String Concepto del carga, máximo 40 caracteres
data.beneficiary String Nombre del beneficiario
data.bank String Nombre del banco
data.clabe String Cuenta CLABE del cliente
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Webhook

El módulo webhook nos ayudara a enviar actualizaciones de los cobros al momento que el cliente efectue alguna acción sobre el cobro.

Agregar URL

import requests
import json

url = "https://plataforma.paycode.com.mx/Api/v2/qr/agregar_url"

payload = json.dumps({ "url": "https://backend.com/webhook" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php
$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://plataforma.paycode.com.mx/Api/v2/qr/agregar_url', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "url":"https://backend.com/webhook" }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "url": "https://backend.com/webhook"
});

var config = { method: 'post', url: 'https://plataforma.paycode.com.mx/Api/v2/qr/agregar_url', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": "Se inserto correctamente",
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": false,
    "data": "Ocurrio un error",
}

Se definirá una URL la cual recibirá los estatus los cobros (CoDi,SPEI,links de pago y tarjeta) al momento de que el cliente ejerza una acción sobre un cobro ('Enviado', 'Pospuesto', 'Rechazado','Reintegrada', 'Cancelado', 'Vencido') se enviará la el estatus del cobro a la URL definida en este Endpoint.

Se almacena la respuesta del Endpoint con la finalidad de poder reenviar la información en caso de que el URL no esté disponible al momento de enviar una actualización sobre un cobro. el parámetro para definir si la respuesta fue recibida correctamente es un código HTTP 200.

Se enviará el siguiente objeto:
{
"monto": 0,
"concepto": "XXXXXXXX",
"clave_rastreo": "XXXXXXXX",
"numeroCuentaCliente": "XXXXXXXX",
"horaProcMensajeCobro": "2020-06-09 07:01:33",
"resultadoMensajeCobro": "XXXXXXXX",
"horaSolicitudMensajeCobro": "2020-06-09 04:38:35"
}

Para links de pago se enviara este objeto:
{
"success": true,
"hash": "XX8X-XX8X-XX8",
"paid_at": "2020-06-09 04:38:35",
"amout_paid": "19.99",
"status": "paid",
"type_paid": "credit card",
}

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v2/qr/agregar_url
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

Campo Tipo de dato Requerido Definición
url String True URL a la que se enviarán las actualizaciones de los cobros.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
succes Boolean Respuesta de la petición
data String Mensaje de respuesta
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Actualizar URL

import requests
import json

url = "https://dev.paycode.com.mx/Api/v2/qr/actualizar_url"

payload = json.dumps({ "url": "https://backend.com/updatehook" }) headers = { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL => 'https://dev.paycode.com.mx/Api/v2/qr/actualizar_url', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "url":"https://backend.com/updatehook" }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer [token]', 'Content-Type: application/json' ), ));

$response = curl_exec($curl);

curl_close($curl); echo $response;


var axios = require('axios');
var data = JSON.stringify({
  "url": "https://backend.com/updatehook"
});

var config = { method: 'post', url: 'https://dev.paycode.com.mx/Api/v2/qr/actualizar_url', headers: { 'Authorization': 'Bearer [token]', 'Content-Type': 'application/json' }, data : data };

axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });

Este es un ejemplo de respuesta satisfactoria del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": true,
    "data": "Se actualizo correctamente",
}

Este es un ejemplo de respuesta rechazada del endpoint, La respuesta del mismo esta en formato JSON.

{
    "success": false,
    "data": "Ocurrio un error",
}

Recupera un token nuevo usando el token actual, siempre y cuando no se halla expirado.

Información de petición
Categoria Valor
Método HTTP POST
EndPoint Api/v2/qr/actualizar_url
Headers
Tipo Valor
Authorization Bearer [token]
Content-Type application/json
Esquema de entrada de la petición

El contenido del esquema debe de estar en formato JSON.

Campo Tipo de dato Requerido Definición
url String True URL a la que se enviarán las actualizaciones de los cobros.
Esquema de salida de una petición satisfactoria
Campo Tipo de dato Definición
succes Boolean Respuesta de la petición
data String Mensaje de respuesta
Esquema de salida de una petición no satisfatoria
Campo Tipo de dato Definición
error String Identificador de error

Errores

Codigo de errores Definición
400 Bad Request -- Petición no valida.
401 Unauthorized -- Claves de login incorrectas.
403 Forbidden -- No tiene permisos necesarios para este Endpoint.
404 Not Found -- URL no valida.
405 Method Not Allowed -- Verbo HTTP no valido.
Codigo de errores Definición
500 Internal Server Error -- Problema con el servidor.
503 Service Unavailable -- Temporalmente fuera de servicio .
Codigo de errores Definición
-10 Número celular requerido
-11 Número de cel. tiene que ser numérico
-12 Número de cel. tiene que tener 10 caracteres
-13 Recurrencia del pago requerida
-14 Recurrencia no puede ser numérica
-15 Recurrencia supera los 30 caracteres
-16 Concepto requerido
-17 Concepto supera los 40 caracteres
-18 Fecha límite requerida
-19 Formato de fecha límite incorrecto
-20 Nombre requerido
-21 Nombre no puede contener caracteres numéricos
-22 Nombre supera los 40 caracteres
-23 Apellido paterno requerido
-24 Apellido paterno no puede contener caracteres numéricos
-25 Apellido paterno supera los 40 caracteres
-26 Apellido materno requerido
-27 Apellido materno no puede contener caracteres numéricos
-28 Apellido materno supera los 40 caracteres
-29 Monto requerido
-30 Monto tiene que ser numérico
-31 Monto supera la cantidad de 8000
-41 Monto requerido
-42 Monto tiene que ser de tipo númerico
-43 Monto supera la cantidad de 8000
-44 Concepto requerido
-45 Concepto tiene más de 40 caracteres
-46 Fecha requerida
-47 Error en el formato de la fecha
-48 Tipo de pago requerido
-49 Tipo de pago tiene que ser numerico
-50 Pago tiene que ser opción 0 o 1
-51 Referencia requerida
-52 Referencia tiene que ser tipo númerico
-53 Referencia tiene que tener 7 caracteres
-61 Numero de cel. requerido
-62 Número de cel. tiene que ser numérico
-63 Número de cel. tiene que tener 10 caracteres
-64 Monto requerido
-65 Monto tiene que ser numérico
-66 Monto supera la cantidad de 8000
-67 Concepto requerido
-68 Concepto supera los 40 caracteres
-69 Fecha límite es requerida
-70 Formato de fecha límite incorrecto
-71 Nombre requerido
-72 Nombre no puede contener caracteres númericos
-73 Nombre supera los 40 caracteres
-74 Apellido paterno requerido
-75 Apellido paterno no puede contener caracteres númericos
-76 Apellido paterno supera los 40 caracteres
-77 Apellido materno requerido
-78 Apellido materno no puede contener caracteres númericos
-79 Apellido materno supera los 40 caracteres
-90 Clave de rastreo requerida
-91 Clave de rastreo supera 40 caracteres
-92 Referencia de pago requerida
-93 Referencia de pago supera los 40 caracteres