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_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";
if (!
preg_match('/^Location: \w+\?(.*)$/i',
$line,
$match)) continue;
foreach(split('&',
$match[1]) as $item) {
$data[$t[0]] =
trim($t[1]);
}
break;
}
$data['Servico'] =
urldecode($data['Servico']);
return $data;
}
$result = calcula_frete(FRETE_SEDEX, '20512170', '78053378', '2');
?>
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+