Trocando uma idéia com Diego Hermes (um camarada lá do fórum drupal-br) resolvi pesquisar se alguém já havia feito isso e descobri que existe uma url que você acessa e recebe os valores e parâmetros via GET.
Então eu resolvi fazer uma função BEEEEEEEEEM SIMPLES que pega os valores.
<?php
define('FRETE_PAC', '41106');
define('FRETE_SEDEX', '40010');
define('FRETE_SEDEX_10', '40215');
define('FRETE_SEDEX_HOJE', '40290');
define('FRETE_E_SEDEX', '81019');
define('FRETE_MALOTE', '44105');
/**
* calcula_frete
*
* @param mixed $servico
* @param mixed $origem CEP da origem
* @param mixed $destino CEP do destino
* @param mixed $peso Peso em Kg
* @access public
* @return array
*/
function calcula_frete ($servico, $origem, $destino, $peso) {
if (!$sock = fsockopen('www.correios.com.br', 80, $errornro, $error, 60)) {
throw new Exception($error, $errornro);
}
$msg = "GET /encomendas/precos/calculo.cfm?"
."Servico={$servico}&cepOrigem={$origem}&cepDestino={$destino}"
."&peso={$peso}&resposta=localhost HTTP/1.1\n"
."Host: www.correios.com.br\nConnection: Close\n\n";
fwrite($sock, $msg);
while (!feof($sock)) {
$line = fgets($sock);
if (!preg_match('/^Location: \w+\?(.*)$/',$line, $match)) continue;
$data = array();
foreach(split('&', $match[1]) as $item) {
$t = split('=', $item);
$data[$t[0]] = trim($t[1]);
}
break;
}
$data['Servico'] = urldecode($data['Servico']);
$data['erro'] = urldecode($data['erro']);
return $data;
}
$result = calcula_frete(FRETE_SEDEX, '20512170', '78053378', '2');
var_dump($result);
?>Bem simples né? agora, $result contém o seguinte estrutura:
array(13) {
["Servico"]=>
string(5) "SEDEX"
["cepOrigem"]=>
string(8) "20512170"
["cepDestino"]=>
string(8) "78053378"
["UFOrigem"]=>
string(2) "RJ"
["LocalOrigem"]=>
string(7) "Capital"
["UFdestino"]=>
string(2) "MT"
["LocalDestino"]=>
string(7) "Capital"
["Peso"]=>
string(1) "1"
["MaoPropria"]=>
string(1) "0"
["AvisoRecebimento"]=>
string(1) "0"
["valorDeclarado"]=>
string(1) "0"
["Tarifa"]=>
string(4) "27.5"
["erro"]=>
string(0) ""
}
Espero que seja util para alguém e se você criar algo mais elaborado, me avisa que eu posto aqui!
T+











Enviar novo comentário