1
resposta

MÓDULO NÃO RODA

Implementei um módulo de cálculo de frete dos correios em um APP. Na IDE, o cálculo roda e funciona normalmente, mas quando instalo o APP no android ou IOS, não funciona. O botão não clica, fica sem reação.

Acredito que possa ser algo relacionado ao DomParser, mas não conheço uma alternativa. Se puderem me indicar como substituir...

A requisição ao Web Service ficou assim:

  data () {
    return {
        deliveryOptions: [],
        current: null,
        cepOrigem: 54400200, // set here the CEP where products are coming from
        cepNumber: 50920515, // this number is set by the user
        vlPeso: 1, // total weight
        cdFormato: 1, // 1 - box | 2 - roll | 3 - envelop
        vlComprimento: 20, // width centimenters
        vlAltura: 20, // height centimenters
        nVlLargura: 20, // wide centimeters
        cdMaoPropria: 'n', // aditional service to only deliver to specific person
        vlValorDeclarado: 0, // any aditional value declared to package
        sCdAvisoRecebimento: 'n', // aditional service to tell when it is delivered
        vlDiametro: 0, // size including the package
        indicaCalculo: 3,
        selectedDeliveryOption: { price: 0.0 } // value of selected delivery option
    }
  },
  methods: {
    inputRadioChange: function(evt) {
        for (let i = 0; i < this.deliveryOptions.length; i++) {
            if (this.deliveryOptions[i].value === evt.value) {
                this.selectedDeliveryOption = {... this.deliveryOptions[i]}
                this.selectedDeliveryOption.price = parseFloat(this.deliveryOptions[i].price.replace(',', '.'))
                this.current = i;
                break;
            }
        }
    },
    readDataFromXML: (xmlString) => {
        let parser = new DOMParser();
        let xmlDoc = parser.parseFromString(xmlString,"text/xml");

        let time = (xmlDoc.getElementsByTagName("PrazoEntrega")[0].innerHTML)
        let price = (xmlDoc.getElementsByTagName("Valor")[0].innerHTML)
        return {time, price}
    },
    calcFrete: function(e) {
        const options = []
        // requisição PAC
        uni.request({
            url: `http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=&sDsSenha=&sCepOrigem=${this.cepOrigem}&sCepDestino=${this.cepNumber}&nVlPeso=${this.vlPeso}&nCdFormato=${this.cdFormato}&nVlComprimento=${this.vlComprimento}&nVlAltura=${this.vlAltura}&nVlLargura=${this.nVlLargura}&sCdMaoPropria=${this.cdMaoPropria}&nVlValorDeclarado=${this.vlValorDeclarado}&sCdAvisoRecebimento=${this.sCdAvisoRecebimento}&nCdServico=04510&nVlDiametro=${this.vlDiametro}&StrRetorno=xml&nIndicaCalculo=${this.indicaCalculo}`,
            methods: 'GET',
            success: (res) => {
                let parser = new DOMParser();
                options.push({...{id: 1, title: 'Correios PAC', value: 'PAC'}, ...this.readDataFromXML(res.data)})
            },
        })
        // requisição SEDEX
        uni.request({
            url: `http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=&sDsSenha=&sCepOrigem=${this.cepOrigem}&sCepDestino=${this.cepNumber}&nVlPeso=${this.vlPeso}&nCdFormato=${this.cdFormato}&nVlComprimento=${this.vlComprimento}&nVlAltura=${this.vlAltura}&nVlLargura=${this.nVlLargura}&sCdMaoPropria=${this.cdMaoPropria}&nVlValorDeclarado=${this.vlValorDeclarado}&sCdAvisoRecebimento=${this.sCdAvisoRecebimento}&nCdServico=04014&nVlDiametro=${this.vlDiametro}&StrRetorno=xml&nIndicaCalculo=${this.indicaCalculo}`,
            methods: 'GET',
            success: (res) => {
                let parser = new DOMParser();
                options.push({...{id: 2, title: 'Correios SEDEX', value: 'SEDEX'}, ...this.readDataFromXML(res.data)})
                this.showDeliveryOptions(options)
            },
        })
    },
    showDeliveryOptions (optionsFrete) {
        this.deliveryOptions = optionsFrete
        this.showList = true
    }
  }
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software