Discussions

Ask a Question
Back to all

problemas con sandbox a hacer una peticion a https://api-test.envia.com/ship/rate/

Estoy tratando de hacer un de hacer una cotizacion con “Get shipping rates”, estoy leyendo la documentación pero no encuentro solución al error que me sale, estoy usando esto en el body

{  
  "origin": {  
    "name": "Tres Son Uno",  
    "company": "Tres Son Uno",  
    "street": "Carrera 7",  
    "number": "5-58",  
    "district": "Centro",  
    "city": "76001000",  
    "state": "VC",  
    "country": "CO",  
    "postalCode": "760007",  
    "phone": "1234567893",  
    "email": "[[email protected]](mailto:[email protected])"  
  },  
  "destination": {  
    "name": "Angel Alfonso",  
    "company": "Cliente",  
    "street": "Calle 12",  
    "number": "1-18",  
    "district": "Belalcazar",  
    "city": "76001000",  
    "state": "VC",  
    "country": "CO",  
    "postalCode": "760007",  
    "phone": "1234567893",  
    "email": "[[email protected]](mailto:[email protected])"  
  },  
  "packages": [  
    {  
      "content": "biblias",  
      "amount": 1,  
      "type": "box",  
      "weight": 1,  
      "dimensions": {  
        "length": 24,  
        "width": 18,  
        "height": 5  
      }  
    }  
  ],  
  "shipment": {  
    "carrier": "coordinadora ",  
    "type": 1  
  }  
}

y me está respondiendo esto

{  
    "meta": "error",  
    "error": {  
        "code": 1300,  
        "description": "Invalid Option",  
        "message": "Error: Service Unavailable"  
    }  
}

y si en lugar de usar coordinadora uso interRapidisimo responde con

{  
    "meta": "error",  
    "error": {  
        "code": 1126,  
        "description": "Unknown error",  
        "message": "Unknown error in InterRapidisimo"  
    }  
}

pero si intento hacer la cotización de el envió con otra transportadora por ejemplo serviEntrega si me trae resultados

en mi código estoy haciendo esto


async transportadorasDisponibles(data) {  
        try {  
            const { nombre, direccion } = data;  
            const { barrio, celular, correo, idDepartamento, idCiudad, nomenclatura, numeroNomenclatura, numero } = direccion;
        const cacheKey = `${idDepartamento}-${idCiudad}`;

        let portalCode = this.getCache(cacheKey);

        if (!portalCode) {
            console.log("CACHE MISS");

            const [ciudadesDepartamento] = await pool.query(`
                SELECT nombre, ciudades2
                FROM tressonuno.departamento
                WHERE id = ?
            `, [idDepartamento]);

            const ciudadesMap = Object.fromEntries(
                ciudadesDepartamento[0].ciudades2.split(',').map(item => {
                    const [id, nombre] = item.split(':');
                    return [id.trim(), nombre.trim()];
                })
            );

            const ciudad = ciudadesMap[String(idCiudad)] || null;

            portalCode = await this.getPostalCode(
                ciudad,
                ciudadesDepartamento[0].nombre
            );

            if (portalCode) {
                this.setCache(cacheKey, portalCode);
            }

        } else {
            console.log("CACHE HIT");
        }
        console.log('portalCode', portalCode)
        const postalCode = portalCode.zip_codes[0].zip_code
        const nameMunicipio = portalCode.state.code['2digit']
        const idCiudadEnvia = portalCode.zip_codes[0].info.stat_8digit

        console.log({
            postalCode: postalCode,
            nameMunicipio: nameMunicipio,
            idCiudadEnvia: idCiudadEnvia
        })
        
        const body1 = {
            origin: {
                name: "Tres Son Uno",
                company: "Tres Son Uno",
                street: "Carrera 7",
                number: "5-58",
                district: "Centro",
                city: "76001000",
                state: "VC",
                country: "CO",
                postalCode: "760501", 
                phone: "1234567893",
                email: "[email protected]"
            },
            destination: {
                name: nombre,
                company: "Cliente",
                street: `${nomenclatura} ${numeroNomenclatura}`,
                number: numero,
                district: barrio,
                city: idCiudadEnvia,
                state: nameMunicipio,
                country: "CO",
                postalCode: postalCode, 
                phone: celular,
                email: correo
            },
            packages: [
                {
                    content: "biblias",
                    amount: 1,
                    type: "box",
                    weight: 1,
                    declaredValue: 109900,   
                    weightUnit: "KG",       
                    lengthUnit: "CM",
                    dimensions: {
                        length: 24,
                        width: 18,
                        height: 5
                    }
                }
            ],
            shipment: {
                carrier: "coordinadora",
                "type": 1
            }
        };
        const body2 = {
            origin: {
                name: "Tres Son Uno",
                company: "Tres Son Uno",
                street: "Carrera 7",
                number: "5-58",
                district: "Centro",
                city: "76001000",
                state: "VC", 
                country: "CO",
                postalCode: "760501",
                phone: "1234567893",
                email: "[email protected]"
            },
            destination: {
                name: nombre,
                company: "Cliente",
                street: `${nomenclatura} ${numeroNomenclatura}`,
                number: numero,
                district: barrio,
                city: idCiudadEnvia,
                state: nameMunicipio,
                country: "CO",
                postalCode: postalCode, 
                phone: celular,
                email: correo
            },
            packages: [
                {
                    content: "biblias",
                    amount: 1,
                    type: "box",
                    weight: 1,
                    declaredValue: 109900,  
                    weightUnit: "KG",       
                    lengthUnit: "CM",
                    dimensions: {
                        length: 24,
                        width: 18,
                        height: 5
                    }
                }
            ],
            shipment: {
                carrier: "interRapidisimo",
                "type": 1
            }
        };

        const response1 = await axios.post(
            `${process.env.ENPOINT_API_ENVIAME}/ship/rate/`,
            body1,
            {
                headers: {
                    "accept": "application/json",
                    "content-type": "application/json",
                    "authorization": `Bearer ${process.env.KEY_ENVIAME_API}`
                }
            }
        );
        const response2 = await axios.post(
            `${process.env.ENPOINT_API_ENVIAME}/ship/rate/`,
            body2,
            {
                headers: {
                    "accept": "application/json",
                    "content-type": "application/json",
                    "authorization": `Bearer ${process.env.KEY_ENVIAME_API}`
                }
            }
        );
        return {
            response1: response1.data,
            response2: response2.data
        };
    } catch (error) {
        logger.error("Error en transportadorasDisponibles", {
            error: error.message,
            parametros: data
        });

        console.log(error)
        throw error;
    }
}