Documentación - V1

API Cangoo

Entorno Sandbox

https//cangoo.mx/sandbox_v1.php

Características Principales

Todos los endpoints requieren un parámetro de encabezado con el formato: Authorization Bearer Token. El token de acceso es el mismo para el environment de sandbox y productions.

Recuerda que los tokens tienen una duración limitada. Asegúrate de renovar tu token cuando expire utilizando el refresh token.

Endpoints

GET - Status del API

Este endpoint permite a los usuarios consultar el estado del API. Al realizar la solicitud, el sistema procesa la información y devuelve el estado indicando si el API está operativa.

Ejemplos de Uso

CURL

                                curl --location 'https://cangoo.mx/api/sandbox_v1.php?method=status' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]'
                            

PHP

                                <?php
                            
                                    $curl = curl_init();
                                    
                                    curl_setopt_array($curl, array(
                                        CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php?method=status',
                                        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 [ACCESS_TOKEN]'
                                        ),
                                    ));
                            
                                    $response = curl_exec($curl);
                                    
                                    curl_close($curl);
                                    echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Authorization", "Bearer [ACCESS_TOKEN]");

                                const requestOptions = {
                                  method: "GET",
                                  headers: myHeaders,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php?method=status", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');

                                let config = {
                                  method: 'get',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php?method=status',
                                  headers: {
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  }
                                };

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

Python

                                import requests

                                url = "https://cangoo.mx/api/sandbox_v1.php?method=status"

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

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "status": "online",
                                    "message": "API operativa y funcionando correctamente",
                                    "timestamp": "2024-12-06 17:21:40",
                                    "version": "1.0.0",
                                    "uptime": "0.19s"
                                }
                            
GET - Consultar Saldos

Este endpoint permite a los usuarios consultar el saldo disponible en su cuenta de Cangoo. Al realizar la solicitud, el sistema procesa la información y devuelve el monto actualizado del saldo. Esta funcionalidad es esencial para la gestión financiera de los comercios, ya que permite a los usuarios:

  • Monitorear su saldo de forma eficiente.
  • Facilitar la generación de guías.
  • Optimizar la planificación de operaciones.

Nota: Es importante destacar que cada vez que se genere una guía, el saldo actualizado se mostrará en la respuesta. Ver endpoint "Generar Guía con Token de cotización"

Ejemplos de Uso

CURL

                                curl --location 'https://cangoo.mx/api/sandbox_v1.php?method=funds' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]'
                            

PHP

                                <?php

                                    $curl = curl_init();
    
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php?method=status',
                                      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 [ACCESS_TOKEN]'
                                      ),
                                    ));

                                    $response = curl_exec($curl);

                                    curl_close($curl);
                                    echo $response;
                                    ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Authorization", "Bearer [ACCESS_TOKEN]");

                                const requestOptions = {
                                  method: "GET",
                                  headers: myHeaders,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php?method=funds", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');

                                let config = {
                                  method: 'get',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php?method=funds',
                                  headers: {
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  }
                                };

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

Python

                                import requests

                                url = "https://cangoo.mx/api/sandbox_v1.php?method=funds"

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

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "funds": "2500.00",
                                    "format_funds": "$2,500.00 MXN",
                                    "timestamp": "2024-12-06 08:39:35",
                                    "version": "1.0.0",
                                    "uptime": "0.2s"
                                }
                            
POST - Renovar Token

Este endpoint permite a los usuarios renovar su token de acceso.

Para obtener un nuevo token, es necesario incluir el refresh token y el método en el cuerpo de la solicitud, utilizando el formato JSON.

  • method: (string) valor permitido renewAccessToken
  • refreshToken: (string)
Ejemplos de Uso

CURL

                                    curl --location 'https://cangoo.mx/api/sandbox_v1.php' \
                                    --header 'Content-Type: application/json' \
                                    --header 'Authorization: Bearer [ACCESS_TOKEN]' \
                                    --data '{
                                        "method":"renewAccessToken",
                                        "refreshToken":"[REFRESH_TOKEN]"
                                    }'
                            

PHP

                                <?php

                                    $curl = curl_init();
                                    
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php',
                                      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 =>'{
                                        "method":"renewAccessToken",
                                        "refreshToken":"[REFRESH_TOKEN]"
                                    }',
                                      CURLOPT_HTTPHEADER => array(
                                        'Content-Type: application/json',
                                        'Authorization: Bearer [ACCESS_TOKEN]'
                                      ),
                                    ));
                                    
                                    $response = curl_exec($curl);
                                    
                                    curl_close($curl);
                                    echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Content-Type", "application/json");
                                myHeaders.append("Authorization", "[ACCESS_TOKEN]");

                                const raw = JSON.stringify({
                                  "method": "renewAccessToken",
                                  "refreshToken": "[REFRESH_TOKEN]"
                                });

                                const requestOptions = {
                                  method: "POST",
                                  headers: myHeaders,
                                  body: raw,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');
                                let data = JSON.stringify({
                                  "method": "renewAccessToken",
                                  "refreshToken": "[REFRESH_TOKEN]"
                                });

                                let config = {
                                  method: 'post',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php',
                                  headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  },
                                  data : data
                                };

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

Python

                                import requests
                                import json

                                url = "https://cangoo.mx/api/sandbox_v1.php"

                                payload = json.dumps({
                                  "method": "renewAccessToken",
                                  "refreshToken": "[REFRESH_TOKEN]"
                                })
                                headers = {
                                  'Content-Type': 'application/json',
                                  'Authorization': 'Bearer [ACCESS_TOKEN]'
                                }

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

                                print(response.text)

                            
Resultado

JSON

                                {
                                    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjEdscddszkyNTic3ViIjoiMSJ9...",
                                    "refresh_token": "3e9b65cbdf4e08f26354f..."
                                }
                            
POST - Generar cotización

Este endpoint permite a los usuarios obtener cotizaciones de envío de diversas paqueterías, simplificando la comparación de costos y opciones disponibles. Para utilizar este servicio, es necesario proporcionar el código postal de origen y destino, junto con las dimensiones y el peso del paquete.

Al procesar la solicitud, el sistema genera una lista de cotizaciones de distintos proveedores de paquetería, brindando al usuario la posibilidad de:

  • Comparar tarifas.
  • Optimizar costos.
  • Elegir la opción de envío que mejor se adapte a sus necesidades.

Para obtener cotizaciones, es necesario incluir en el cuerpo de la solicitud, utilizando el formato JSON:

  • method: (string) valor permitido quote
  • PackageType: (string) valores permitidos envelope (para sobres), y box para paquetes
  • OriginPostalCode: (string) Código postal de la dirección de origen
  • DestinationPostalCode: (string) Código postal de la dirección de destino
  • Length: (integer): Largo del paquete en centímetros.
  • Width: (integer): Ancho del paquete en centímetros.
  • Height: (integer): Alto del paquete en centímetros.
  • Weight: (string) (integer): Peso del paquete en kilogramos.
  • Insurance: (bool) Indica si el paquete está asegurado: true o false.
  • PackageValue: (decimal) Se debe indicar el valor si el campo "seguro" es true. Valor de factura del paquete. En caso de que el campo "seguro" sea false, se debe indicar este campo en 0.
  • Environment: (string) valor permitido sandbox
Ejemplos de Uso

CURL

                                curl --location 'https://localhots:8080.mx/api/sandbox_v1.php' \
                                --header 'Content-Type: application/json' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]' \
                                --data '{
                                    "method": "quote",
                                    "PackageType": "envelope",
                                    "OriginPostalCode": "44100",
                                    "DestinationPostalCode": "45238",
                                    "Length": 10,
                                    "Width": 10,
                                    "Height": 12,
                                    "Weight": 2,
                                    "Insurance": true,
                                    "PackageValue": 55000,
                                    "Environment": "sandbox"
                                }'
                            

PHP

                                <?php

                                    $curl = curl_init();
                                    
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php',
                                      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 =>'{
                                        "method": "quote",
                                        "PackageType": "envelope", 
                                        "OriginPostalCode": "44100",
                                        "DestinationPostalCode": "45238",
                                        "Length": 10,
                                        "Width": 10,
                                        "Height": 12,
                                        "Weight": 2,
                                        "Insurance": true,
                                        "PackageValue": 55000,
                                        "Environment": "sandbox" 
                                    }',
                                      CURLOPT_HTTPHEADER => array(
                                        'Content-Type: application/json',
                                        'Authorization: Bearer [ACCESS_TOKEN]'
                                      ),
                                    ));
                                    
                                    $response = curl_exec($curl);
                                    
                                    curl_close($curl);
                                    echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Content-Type", "application/json");
                                myHeaders.append("Authorization", "Bearer [ACCESS_TOKEN]");

                                const raw = JSON.stringify({
                                  "method": "quote",
                                  "PackageType": "envelope",
                                  "OriginPostalCode": "44100",
                                  "DestinationPostalCode": "45238",
                                  "Length": 10,
                                  "Width": 10,
                                  "Height": 12,
                                  "Weight": 2,
                                  "Insurance": true,
                                  "PackageValue": 55000,
                                  "Environment": "sandbox"
                                });

                                const requestOptions = {
                                  method: "POST",
                                  headers: myHeaders,
                                  body: raw,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');
                                let data = JSON.stringify({
                                  "method": "quote",
                                  "PackageType": "envelope",
                                  "OriginPostalCode": "44100",
                                  "DestinationPostalCode": "45238",
                                  "Length": 10,
                                  "Width": 10,
                                  "Height": 12,
                                  "Weight": 2,
                                  "Insurance": true,
                                  "PackageValue": 55000,
                                  "Environment": "sandbox"
                                });

                                let config = {
                                  method: 'post',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php',
                                  headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  },
                                  data : data
                                };

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

Python

                                import requests
                                import json

                                url = "https://cangoo.mx/api/sandbox_v1.php"

                                payload = json.dumps({
                                  "method": "quote",
                                  "PackageType": "envelope",
                                  "OriginPostalCode": "44100",
                                  "DestinationPostalCode": "45238",
                                  "Length": 10,
                                  "Width": 10,
                                  "Height": 12,
                                  "Weight": 2,
                                  "Insurance": True,
                                  "PackageValue": 55000,
                                  "Environment": "sandbox"
                                })
                                headers = {
                                  'Content-Type': 'application/json',
                                  'Authorization': 'Bearer [ACCESS_TOKEN]'
                                }

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "status": "true",
                                    "timestamp": "2024-12-08 02:34:20",
                                    "version": "1.0.0",
                                    "uptime": "4.62s",
                                    "quote": [
                                        {
                                            "op_id": 1,
                                            "company_name": "DHL",
                                            "service_name": "EXPRESS DOMESTIC",
                                            "service_type": "Dia Siguiente",
                                            "total_packages": 1,
                                            "total_cost": 145.51,
                                            "courier_delivery_date": "2024-12-10",
                                            "delivery_days": 2,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "3jRaFga9bR67LEXtHSYoM1N4L7Wy0PavsKgtesB8yiBkGITYOWtbzmrPmrkM"
                                        },
                                        {
                                            "op_id": 1,
                                            "company_name": "DHL",
                                            "service_name": "ECONOMY SELECT DOMESTIC",
                                            "service_type": "Economico / 2 dias",
                                            "total_packages": 1,
                                            "total_cost": 145.51,
                                            "courier_delivery_date": "2024-12-10",
                                            "delivery_days": 2,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "vYibtlPuUPzYnAlNY5i05AMezhxKc0qJKjiAX0iEyiKLS4pcvby7NtR9lWCf"
                                        },
                                        {
                                            "op_id": 2,
                                            "company_name": "FEDEX",
                                            "service_name": "STANDARD_OVERNIGHT",
                                            "service_type": "Mismo día / 24H /SO24NRS",
                                            "total_packages": 1,
                                            "total_cost": 457.21,
                                            "courier_delivery_date": "2024-12-08",
                                            "delivery_days": 1,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "KdHy14NKpW3GZ3IQVW3dUp5GkhwwmCo4sxEHnQ2vxpVkyVkZcppFxfK1eTqJ"
                                        },
                                        {
                                            "op_id": 2,
                                            "company_name": "FEDEX",
                                            "service_name": "FEDEX_EXPRESS_SAVER",
                                            "service_type": "Economico / Día siguiente / semanal/XS-ECONOMY",
                                            "total_packages": 1,
                                            "total_cost": 183.48,
                                            "courier_delivery_date": "2024-12-12",
                                            "delivery_days": 5,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "2Eelv9E8EYK68oUDjyr8NRZp5Anf1AcPQFKYGuNJSGbkiXoQkJPzD8u2xB4B"
                                        },
                                        {
                                            "op_id": 20,
                                            "company_name": "UPS",
                                            "service_name": "UPS_SAVER",
                                            "service_type": "UPS SAVER (65) Express",
                                            "total_packages": 1,
                                            "total_cost": 532.16,
                                            "courier_delivery_date": "2024-12-08",
                                            "delivery_days": 1,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "AuMebJ8draH402l7u1ypOBuUMQolqYCidJv6r2yLjg0lkkcCrh5TnXwluXsj"
                                        },
                                        {
                                            "op_id": 22,
                                            "company_name": "EXPRESS",
                                            "service_name": "STD-T",
                                            "service_type": "Estándar",
                                            "total_packages": 1,
                                            "total_cost": 1437.36,
                                            "courier_delivery_date": "2024-12-07",
                                            "delivery_days": 0,
                                            "insurance_percentage": 0,
                                            "insurance_cost": 0,
                                            "package_value": 55000,
                                            "currency": "MXN",
                                            "extended_zone_cost": 0,
                                            "costo_total_seguro": 0,
                                            "token": "BKpeBxXX5kvFdq3riIoLKJGvCpjsQqedIVTaBmHqW3c3gI4vPCI0XHlr4ktC"
                                        }
                                    ]
                                }
                            
POST - Generar Guía con Token de cotización

Este endpoint permite a los usuarios generar una guía de envío a partir de una cotización previamente obtenida. Para completar esta operación, el usuario debe proporcionar el token de cotización junto con la información necesaria del remitente y del destinatario.

El método ofrece la flexibilidad de seleccionar un token de cotización previamente generado, lo que permite al usuario elegir la opción que mejor se ajuste a sus necesidades. Esto optimiza el proceso de envío, garantizando que la guía se cree de manera eficiente y personalizada.

Para generar una guía de envío, es necesario incluir en el cuerpo de la solicitud, utilizando el formato JSON:

  • method: (string) valor permitido generateGuide
  • Content: (string) Breve descripción del contenido del paquete (Máx: 25 caracteres)
  • SourceName: (string) Nombre del remitente (Máx: 25 caracteres).
  • SourceLastName: (string) Apellidos del remitente (Máx: 25 caracteres).
  • SourceEmail: (string) Email del remitente (Máx: 35 caracteres).
  • SourceStreet: (string) Calle del remitente (Máx: 35 caracteres).
  • SourceNumber: (string) Número exterior/interior del remitente (Máx: 15 caracteres).
  • SourceNeighborhood: (string) Colonia del remitente.
  • SourcePhone: (string) Teléfono del remitente (Min: 8 caracteres & Máx: 10 caracteres).
  • SourceState: (string) Estado del remitente.
  • SourceMunicipality: (string) Municipio del remitente.
  • SourceReferences: (string) Referencias de la dirección del remitente (Máx: 35 caracteres).
  • DestinationName: (string) Nombre del destinatario (Máx: 25 caracteres).
  • DestinationLastName: (string) Apellidos del destinatario (Máx: 25 caracteres).
  • DestinationEmail: (string) Email del destinatario (Máx: 35 caracteres).
  • DestinationStreet: (string) Calle del destinatario (Máx: 35 caracteres).
  • DestinationNumber: (string) Número exterior/interior del destinatario (Máx: 15 caracteres).
  • DestinationNeighborhood: (string) Colonia del destinatario.
  • DestinationPhone: (string) Teléfono del destinatario (Min: 8 caracteres).
  • DestinationState: (string) Estado del destinatario.
  • DestinationMunicipality: (string) Municipio del destinatario.
  • DestinationReferences: (string) Referencias de la dirección del destinatario (Máx: 35 caracteres).
  • Token: (string) Token de la cotización.
  • Environment: (string) valor permitido sandbox
Ejemplos de Uso

CURL

                                curl --location 'https://cangoo.mx/api/sandbox_v1.php' \
                                --header 'Content-Type: application/json' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]' \
                                --data-raw '{
                                    "method": "generateGuide",
                                    "Content": "Herramientas.",
                                    "SourceName": "Eduardo",
                                    "SourceLastName": "Gomez Gtz",
                                    "SourceEmail": "eduardo@cangoo.com",
                                    "SourceStreet": "Manuel Acuna",
                                    "SourceNumber": "12",
                                    "SourceNeighborhood": "El venado",
                                    "SourcePhone": "3332412342",
                                    "SourceState": "Jalisco",
                                    "SourceMunicipality": "Tala",
                                    "SourceReferences": "Por la CFE",
                                    "DestinationName": "Raul",
                                    "DestinationLastName": "Corona",
                                    "DestinationEmail": "rrcorona@gmail.com",
                                    "DestinationStreet": "Hidalgo",
                                    "DestinationNumber": "12",
                                    "DestinationNeighborhood": "San Angel",
                                    "DestinationPhone": "3332412345",
                                    "DestinationState": "Estado de México",
                                    "DestinationMunicipality": "Ciudad de Mexico",
                                    "DestinationReferences": "Por el estadio",
                                    "Token" : "5rnhqRGYDnVCTaZi11IGTaupbsiPRrU5Cgw82QMe",
                                    "Environment": "sandbox"
                                }'
                            

PHP

                                <?php

                                    $curl = curl_init();
                                    
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php',
                                      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 =>'{
                                        "method": "generateGuide",
                                        "Content": "Herramientas.",
                                        "SourceName": "Eduardo",
                                        "SourceLastName": "Gomex Gtz",
                                        "SourceEmail": "eduardo@cangoo.com",
                                        "SourceStreet": "Manuel Acuna",
                                        "SourceNumber": "12",
                                        "SourceNeighborhood": "El venado",
                                        "SourcePhone": "3332412342",
                                        "SourceState": "Jalisco",
                                        "SourceMunicipality": "Tala",
                                        "SourceReferences": "Por la CFE",
                                        "DestinationName": "Raul",
                                        "DestinationLastName": "Corona",
                                        "DestinationEmail": "rrcorona@gmail.com",
                                        "DestinationStreet": "Hidalgo",
                                        "DestinationNumber": "12",
                                        "DestinationNeighborhood": "San Angel",
                                        "DestinationPhone": "3332412345",
                                        "DestinationState": "Estado de México",
                                        "DestinationMunicipality": "Ciudad de Mexico",
                                        "DestinationReferences": "Por el estadio",
                                        "Token" : "5rnhqRGYDnVCTaZi11IGTaupbsiPRrU5Cgw82QMe",
                                        "Environment": "sandbox" 
                                    }',
                                      CURLOPT_HTTPHEADER => array(
                                        'Content-Type: application/json',
                                        'Authorization: Bearer [ACCESS_TOKEN]'
                                      ),
                                    ));
                                    
                                    $response = curl_exec($curl);
                                    
                                    curl_close($curl);
                                    echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Content-Type", "application/json");
                                myHeaders.append("Authorization", "Bearer sandbox");

                                const raw = JSON.stringify({
                                  "method": "generateGuide",
                                  "Content": "Herramientas.",
                                  "SourceName": "Eduardo",
                                  "SourceLastName": "Gomez Gtz",
                                  "SourceEmail": "eduardo@cangoo.com",
                                  "SourceStreet": "Manuel Acuna",
                                  "SourceNumber": "12",
                                  "SourceNeighborhood": "El venado",
                                  "SourcePhone": "3332412342",
                                  "SourceState": "Jalisco",
                                  "SourceMunicipality": "Tala",
                                  "SourceReferences": "Por la CFE",
                                  "DestinationName": "Raul",
                                  "DestinationLastName": "Corona",
                                  "DestinationEmail": "rrcorona@gmail.com",
                                  "DestinationStreet": "Hidalgo",
                                  "DestinationNumber": "12",
                                  "DestinationNeighborhood": "San Angel",
                                  "DestinationPhone": "3332412345",
                                  "DestinationState": "Estado de México",
                                  "DestinationMunicipality": "Ciudad de Mexico",
                                  "DestinationReferences": "Por el estadio",
                                  "Token": "5rnhqRGYDnVCTaZi11IGTaupbsiPRrU5Cgw82QMe",
                                  "Environment": "sandbox"
                                });

                                const requestOptions = {
                                  method: "POST",
                                  headers: myHeaders,
                                  body: raw,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');
                                let data = JSON.stringify({
                                  "method": "generateGuide",
                                  "Content": "Herramientas.",
                                  "SourceName": "Eduardo",
                                  "SourceLastName": "Gomez Gtz",
                                  "SourceEmail": "eduardo@cangoo.com",
                                  "SourceStreet": "Manuel Acuna",
                                  "SourceNumber": "12",
                                  "SourceNeighborhood": "El venado",
                                  "SourcePhone": "3332412342",
                                  "SourceState": "Jalisco",
                                  "SourceMunicipality": "Tala",
                                  "SourceReferences": "Por la CFE",
                                  "DestinationName": "Raul",
                                  "DestinationLastName": "Corona",
                                  "DestinationEmail": "rrcorona@gmail.com",
                                  "DestinationStreet": "Hidalgo",
                                  "DestinationNumber": "12",
                                  "DestinationNeighborhood": "San Angel",
                                  "DestinationPhone": "3332412345",
                                  "DestinationState": "Estado de México",
                                  "DestinationMunicipality": "Ciudad de Mexico",
                                  "DestinationReferences": "Por el estadio",
                                  "Token": "5rnhqRGYDnVCTaZi11IGTaupbsiPRrU5Cgw82QMe",
                                  "Environment": "sandbox"
                                });

                                let config = {
                                  method: 'post',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php',
                                  headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  },
                                  data : data
                                };

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

Python

                                import requests
                                import json

                                url = "https://cangoo.mx/api/sandbox_v1.php"

                                payload = json.dumps({
                                  "method": "generateGuide",
                                  "Content": "Herramientas.",
                                  "SourceName": "Eduardo",
                                  "SourceLastName": "Gomez Gtz",
                                  "SourceEmail": "eduardo@cangoo.com",
                                  "SourceStreet": "Manuel Acuna",
                                  "SourceNumber": "12",
                                  "SourceNeighborhood": "El venado",
                                  "SourcePhone": "3332412342",
                                  "SourceState": "Jalisco",
                                  "SourceMunicipality": "Tala",
                                  "SourceReferences": "Por la CFE",
                                  "DestinationName": "Raul",
                                  "DestinationLastName": "Corona",
                                  "DestinationEmail": "rrcorona@gmail.com",
                                  "DestinationStreet": "Hidalgo",
                                  "DestinationNumber": "12",
                                  "DestinationNeighborhood": "San Angel",
                                  "DestinationPhone": "3332412345",
                                  "DestinationState": "Estado de México",
                                  "DestinationMunicipality": "Ciudad de Mexico",
                                  "DestinationReferences": "Por el estadio",
                                  "Token": "5rnhqRGYDnVCTaZi11IGTaupbsiPRrU5Cgw82QMe",
                                  "Environment": "sandbox"
                                })
                                headers = {
                                  'Content-Type': 'application/json',
                                  'Authorization': 'Bearer [ACCESS_TOKEN]'
                                }

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "status": "true",
                                    "timestamp": "2025-01-24 15:11:27",
                                    "version": "1.0.0",
                                    "uptime": "0.49s",
                                    "guide": {
                                        "packages": 1,
                                        "order_num": 1925962,
                                        "paqueteria": "DHL",
                                        "creation_date": "2025-01-24 15:11:27",
                                        "cost": 686.48,
                                        "guide": 6768246905,
                                        "link_guide": "https://cangoo.mx/assets/images/guias_sandbox/guia.pdf",
                                        "funds": 6918.44
                                    }
                                }
                            
POST - Generar recolección

Este endpoint permite a los usuarios generar una recolección para servicios de paquetería. Los usuarios pueden especificar la paquetería de la que desean solicitar la recolección, lo que permite una integración eficiente con múltiples proveedores de servicio.

Para generar una recolección, es necesario incluir en el cuerpo de la solicitud, utilizando el formato JSON:

  • method: (string) valor permitido generatePickup
  • Messaging: (string) Nombre de mensajería: DHL, FEDEX, UPS.
  • Name: (string) Nombre de contacto.
  • LastName: (string) Apellidos de contacto.
  • Email: (string) Email de contacto.
  • Street: (string) Calle donde sera la recolección.
  • Number: (string) Número donde sera la recolección.
  • Neighborhood: (string) Colonia donde sera la recolección.
  • Phone: (string) Teléfono de contacto (Min: 8 caracteres).
  • State: (string) Estado donde sera la recolección.
  • Municipality: (string) Municipio donde sera la recolección.
  • References: (string) Referencias donde sera la recolección.
  • ZipCode: (string) Código postal donde sera la recolección.
  • Packages: (integer) Cantidad de piezas recolectadas.
  • Weight: (integer) Peso total del paquete.
  • Long: (integer) Largo en cm que tiene el paquete.
  • Width: (integer) Ancho en cm que tiene el paquete.
  • Height: (integer) Alto en cm que tiene el paquete.
  • DestinationNumber: (string) Número exterior/interior del destinatario.
  • DestinationNeighborhood: (string) Colonia del destinatario.
  • DatePickup: (string) Fecha de recolección. Formato de fecha 2025-06-08
  • OpeningHours: (string) Hora de apertura de comercio. Formato de hora 09:00
  • OpeningHours: (string) Hora de cierre.Formato de hora 18:00
  • Environment: (string) valor permitido sandbox
Ejemplos de Uso

CURL

                                curl --location 'https://cangoo.mx/api/sandbox_v1.php' \
                                --header 'Content-Type: application/json' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]' \
                                --data-raw '{
                                    "method": "generatePickup",
                                    "Messaging": "DHL",
                                    "Name": "Eduardo",
                                    "LastName": "Gomez",
                                    "Email": "eduardo@cangoo.com",
                                    "Street": "Manuel Acuna",
                                    "Number": "12",
                                    "Neighborhood": "El venado",
                                    "Phone": "3332412342",
                                    "State": "Jalisco",
                                    "Municipality": "Tala",
                                    "References": "Por la CFE",
                                    "ZipCode": "45300",
                                    "Packages": 2,
                                    "Weight": 3,
                                    "Long": 3,
                                    "Width": 3,
                                    "Height": 3,
                                    "DatePickup": "2025-02-07",
                                    "OpeningHours": "09:00",
                                    "ClosingHours": "18:00",
                                    "Environment": "sandbox"
                                }'
                            

PHP

                                <?php

                                        $curl = curl_init();
                                        
                                        curl_setopt_array($curl, array(
                                          CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php',
                                          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 =>'{
                                            "method": "generatePickup",
                                            "Messaging": "DHL",
                                            "Name": "Eduardo",
                                            "LastName": "Gomez",
                                            "Email": "eduardo@cangoo.com",
                                            "Street": "Manuel Acuna",
                                            "Number": "12",
                                            "Neighborhood": "El venado",
                                            "Phone": "3332412342",
                                            "State": "Jalisco",
                                            "Municipality": "Tala",
                                            "References": "Por la CFE",
                                            "ZipCode": "45300",
                                            "Packages": 2,
                                            "Weight": 3,
                                            "Long": 3,
                                            "Width": 3,
                                            "Height": 3,
                                            "DatePickup": "2025-02-07",
                                            "OpeningHours": "09:00",
                                            "ClosingHours": "18:00",
                                            "Environment": "sandbox"
                                        }',
                                          CURLOPT_HTTPHEADER => array(
                                            'Content-Type: application/json',
                                            'Authorization: Bearer [ACCESS_TOKEN]'
                                          ),
                                        ));
                                        
                                        $response = curl_exec($curl);
                                        
                                        curl_close($curl);
                                        echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Content-Type", "application/json");
                                myHeaders.append("Authorization", "Bearer [ACCESS_TOKEN]");

                                const raw = JSON.stringify({
                                  "method": "generatePickup",
                                  "Messaging": "DHL",
                                  "Name": "Eduardo",
                                  "LastName": "Gomez",
                                  "Email": "eduardo@cangoo.com",
                                  "Street": "Manuel Acuna",
                                  "Number": "12",
                                  "Neighborhood": "El venado",
                                  "Phone": "3332412342",
                                  "State": "Jalisco",
                                  "Municipality": "Tala",
                                  "References": "Por la CFE",
                                  "ZipCode": "45300",
                                  "Packages": 2,
                                  "Weight": 3,
                                  "Long": 3,
                                  "Width": 3,
                                  "Height": 3,
                                  "DatePickup": "2025-02-07",
                                  "OpeningHours": "09:00",
                                  "ClosingHours": "18:00",
                                  "Environment": "sandbox"
                                });

                                const requestOptions = {
                                  method: "POST",
                                  headers: myHeaders,
                                  body: raw,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');
                                let data = JSON.stringify({
                                  "method": "generatePickup",
                                  "Messaging": "DHL",
                                  "Name": "Eduardo",
                                  "LastName": "Gomez",
                                  "Email": "eduardo@cangoo.com",
                                  "Street": "Manuel Acuna",
                                  "Number": "12",
                                  "Neighborhood": "El venado",
                                  "Phone": "3332412342",
                                  "State": "Jalisco",
                                  "Municipality": "Tala",
                                  "References": "Por la CFE",
                                  "ZipCode": "45300",
                                  "Packages": 2,
                                  "Weight": 3,
                                  "Long": 3,
                                  "Width": 3,
                                  "Height": 3,
                                  "DatePickup": "2025-02-07",
                                  "OpeningHours": "09:00",
                                  "ClosingHours": "18:00",
                                  "Environment": "sandbox"
                                });

                                let config = {
                                  method: 'post',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php',
                                  headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  },
                                  data : data
                                };

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

Python

                                import requests
                                import json

                                url = "https://cangoo.mx/api/sandbox_v1.php"

                                payload = json.dumps({
                                  "method": "generatePickup",
                                  "Messaging": "DHL",
                                  "Name": "Eduardo",
                                  "LastName": "Gomez",
                                  "Email": "eduardo@cangoo.com",
                                  "Street": "Manuel Acuna",
                                  "Number": "12",
                                  "Neighborhood": "El venado",
                                  "Phone": "3332412342",
                                  "State": "Jalisco",
                                  "Municipality": "Tala",
                                  "References": "Por la CFE",
                                  "ZipCode": "45300",
                                  "Packages": 2,
                                  "Weight": 3,
                                  "Long": 3,
                                  "Width": 3,
                                  "Height": 3,
                                  "DatePickup": "2025-02-07",
                                  "OpeningHours": "09:00",
                                  "ClosingHours": "18:00",
                                  "Environment": "sandbox"
                                })
                                headers = {
                                  'Content-Type': 'application/json',
                                  'Authorization': 'Bearer [ACCESS_TOKEN]'
                                }

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "status": "true",
                                    "timestamp": "2025-02-05 09:17:33",
                                    "version": "1.0.0",
                                    "uptime": "14.44s",
                                    "pickup": {
                                        "pick_up": "246",
                                        "message": "Petición exitosa!"
                                    }
                                }
                            
POST - Rastreo de guía

Este endpoint permite a los usuarios rastrear el estado actual de un envío mediante la introducción del número de guía correspondiente. Al realizar la consulta, el sistema proporciona información detallada sobre la ubicación y el estado del paquete a lo largo de su trayecto.

La respuesta incluye:

  • Estado del paquete: Información sobre su condición y etapa en el proceso de envío.
  • Historial de movimientos: Registro detallado de las ubicaciones y eventos relacionados con el paquete.
  • Información del receptor: Datos relevantes sobre la entrega y confirmación.

Esta funcionalidad es esencial para el seguimiento en tiempo real de los envíos, facilitando a los usuarios una gestión eficiente de sus paquetes y permitiéndoles ofrecer información actualizada y precisa a los destinatarios.

Para rasterar el estado actual de un envío, es necesario incluir en el cuerpo de la solicitud, utilizando el formato JSON:

  • method: (string) valor permitido trackingGuide
  • Guide: (string) Número de guía a consultar.
Catálogo de estatus del envío:
  • Por Recolecta
  • Recolectado
  • En Transito
  • Entregada
  • Cancelada
  • Excepcion entrega
Ejemplos de Uso

CURL

                                curl --location 'https://cangoo.mx/api/sandbox_v1.php' \
                                --header 'Content-Type: application/json' \
                                --header 'Authorization: Bearer [ACCESS_TOKEN]' \
                                --data '{
                                    "method": "trackingGuide",
                                    "Guide": "8364935758"
                                }'
                            

PHP

                                <?php

                                    $curl = curl_init();
                                    
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => 'https://cangoo.mx/api/sandbox_v1.php',
                                      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 =>'{
                                        "method": "trackingGuide",
                                        "Guide": "8364935758"
                                    }',
                                      CURLOPT_HTTPHEADER => array(
                                        'Content-Type: application/json',
                                        'Authorization: Bearer [ACCESS_TOKEN]'
                                      ),
                                    ));
                                    
                                    $response = curl_exec($curl);
                                    
                                    curl_close($curl);
                                    echo $response;
                                ?>                            

JavaScript (Fetch API)

                                const myHeaders = new Headers();
                                myHeaders.append("Content-Type", "application/json");
                                myHeaders.append("Authorization", "Bearer [ACCESS_TOKEN]");

                                const raw = JSON.stringify({
                                  "method": "trackingGuide",
                                  "Guide": "8364935758"
                                });

                                const requestOptions = {
                                  method: "POST",
                                  headers: myHeaders,
                                  body: raw,
                                  redirect: "follow"
                                };

                                fetch("https://cangoo.mx/api/sandbox_v1.php", requestOptions)
                                  .then((response) => response.text())
                                  .then((result) => console.log(result))
                                  .catch((error) => console.error(error));
                            

Node.js

                                const axios = require('axios');
                                let data = JSON.stringify({
                                  "method": "trackingGuide",
                                  "Guide": "8364935758"
                                });

                                let config = {
                                  method: 'post',
                                  maxBodyLength: Infinity,
                                  url: 'https://cangoo.mx/api/sandbox_v1.php',
                                  headers: {
                                    'Content-Type': 'application/json',
                                    'Authorization': 'Bearer [ACCESS_TOKEN]'
                                  },
                                  data : data
                                };

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

Python

                                import requests
                                import json

                                url = "https://cangoo.mx/api/sandbox_v1.php"

                                payload = json.dumps({
                                  "method": "trackingGuide",
                                  "Guide": "8364935758"
                                })
                                headers = {
                                  'Content-Type': 'application/json',
                                  'Authorization': 'Bearer [ACCESS_TOKEN]'
                                }

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

                                print(response.text)
                            
Resultado

JSON

                                {
                                    "status": "true",
                                    "timestamp": "2025-01-24 15:10:27",
                                    "version": "1.0.0",
                                    "uptime": "0.28s",
                                    "guide": {
                                        "order": "4386889",
                                        "clave": "DHL",
                                        "link_guide": "https://cangoo.mx/assets/images/guias_sandbox/guia.pdf",
                                        "status": "Por Recolectar",
                                        "guide": "8364935758"
                                    }
                                }
                            

Regresar