public function frete($dados, $options = array()) { $endpoint = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL'; $tipos = array('sedex' => '40010', 'sedex_a_cobrar' => '40045', 'sedex_10' => '40215', 'sedex_hoje' => '40290', 'pac' => '41106', 'pac_contrato' => '41068', 'sedex_contrato' => '40096', 'esedex' => '81019'); $formatos = array('caixa' => 1, 'rolo' => 2, 'envelope' => 3); $dados['tipo'] = $tipos[$dados['tipo']]; $dados['formato'] = $formatos[$dados['formato']]; /* dados[tipo] 40010 SEDEX Varejo 40045 SEDEX a Cobrar Varejo 40215 SEDEX 10 Varejo 40290 SEDEX Hoje Varejo 41106 PAC Varejo */ /* 1 – Formato caixa/pacote 2 – Formato rolo/prisma 3 - Envelope */ $dados['cep_destino'] = preg_replace("/[^0-9]/", '', $dados['cep_destino']); $dados['cep_origem'] = preg_replace("/[^0-9]/", '', $dados['cep_origem']); $options = array_merge(array('trace' => true, 'exceptions' => true, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'connection_timeout' => 1000), $options); $soap = new \SoapClient($endpoint, $options); $params = array('nCdEmpresa' => isset($dados['empresa']) ? $dados['empresa'] : '', 'sDsSenha' => isset($dados['senha']) ? $dados['senha'] : '', 'nCdServico' => $dados['tipo'], 'sCepOrigem' => $dados['cep_origem'], 'sCepDestino' => $dados['cep_destino'], 'nVlPeso' => $dados['peso'], 'nCdFormato' => $dados['formato'], 'nVlComprimento' => $dados['comprimento'], 'nVlAltura' => $dados['altura'], 'nVlLargura' => $dados['largura'], 'nVlDiametro' => $dados['diametro'], 'sCdMaoPropria' => isset($dados['mao_propria']) && $dados['mao_propria'] ? 'S' : 'N', 'nVlValorDeclarado' => isset($dados['valor_declarado']) ? $dados['valor_declarado'] : 0, 'sCdAvisoRecebimento' => isset($dados['aviso_recebimento']) && $dados['aviso_recebimento'] ? 'S' : 'N', 'sDtCalculo' => date('d/m/Y')); //die(print_r($params,true)); $CalcPrecoPrazoData = $soap->CalcPrecoPrazoData($params); $resultado = $CalcPrecoPrazoData->CalcPrecoPrazoDataResult->Servicos->cServico; if (!is_array($resultado)) { $resultado = array($resultado); } $dados = array(); foreach ($resultado as $consulta) { $consulta = (array) $consulta; $dados = array('codigo' => $consulta['Codigo'], 'valor' => (double) str_replace(',', '.', $consulta['Valor']), 'prazo' => (int) str_replace(',', '.', $consulta['PrazoEntrega']), 'mao_propria' => (double) str_replace(',', '.', $consulta['ValorMaoPropria']), 'aviso_recebimento' => (double) str_replace(',', '.', $consulta['ValorAvisoRecebimento']), 'valor_declarado' => (double) str_replace(',', '.', $consulta['ValorValorDeclarado']), 'entrega_domiciliar' => $consulta['EntregaDomiciliar'] === 'S' ? true : false, 'entrega_sabado' => $consulta['EntregaSabado'] === 'S' ? true : false, 'erro' => array('codigo' => (double) $consulta['Erro'], 'mensagem' => $consulta['MsgErro'])); } return $dados; }