├── .github └── FUNDING.yml ├── .gitignore ├── .htaccess ├── Api ├── Correios.php ├── CorreiosService.php ├── obj.php └── siglas_rastreio.json ├── Docs └── api_correios.postman_collection.json ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── config.php └── index.php /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [luannsr12] 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | vendor -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | Options -Indexes 2 | RewriteEngine On 3 | 4 | ErrorDocument 403 http://%{HTTP_HOST}%{REQUEST_URI}../403 5 | 6 | RewriteCond %{REQUEST_FILENAME} !-f 7 | RewriteCond %{REQUEST_FILENAME} !-d 8 | RewriteRule ^(.*)$ index.php?url=$1 [QSA,NC] 9 | -------------------------------------------------------------------------------- /Api/Correios.php: -------------------------------------------------------------------------------- 1 | access_token = $access_token; 23 | $this->auth(); 24 | 25 | $this->services = array( 26 | 'PAC' => '04510', 27 | 'SEDEX' => '04014', 28 | 'SEDEX 12' => '04782', 29 | 'SEDEX 10' => '04790', 30 | 'SEDEX Hoje' => '04804' 31 | ); 32 | 33 | $this->wsCorreios = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx'; 34 | $this->trackCorreios = 'https://www.linkcorreios.com.br'; 35 | } 36 | 37 | public function auth(){ 38 | 39 | if($this->access_token == ACCESS_TOKEN){ 40 | $this->authorization = true; 41 | }else{ 42 | die(json_encode(["success" => false, "message" => "Invalid token - Unauthorized"])); 43 | } 44 | } 45 | 46 | 47 | /** 48 | * getServices function 49 | * 50 | * Retorna os serviços oferecidos pelos Correios. 51 | * 52 | * @return String 53 | */ 54 | public function services(): String 55 | { 56 | return json_encode(["success" => true, "result" => $this->services]); 57 | } 58 | 59 | /** 60 | * getFrete function 61 | * 62 | * Calcula o frete dos Correios com base no tipo de serviço, origem e destino, e as dimensões do(s) itens. 63 | * 64 | * @return String 65 | */ 66 | public function calculate($headers, $params): String 67 | { 68 | 69 | // Recupera os dados JSON no corpo da requisição 70 | $value = json_decode(file_get_contents('php://input'), TRUE); 71 | 72 | // Trata os CEPs retirando o traço caso haja 73 | $sender = str_replace('-', '', $params['origem']); 74 | $recipient = str_replace('-', '', $params['destinatario']); 75 | 76 | $paramsData = [ 77 | 'nCdEmpresa' => "", 78 | 'sDsSenha' => "", 79 | 'sCepOrigem' => $sender, 80 | 'sCepDestino' => $recipient, 81 | 'nVlPeso' => $params['peso'], 82 | 'nCdFormato' => 1, 83 | 'nVlComprimento' => $params['comprimento'], 84 | 'nVlAltura' => $params['altura'], 85 | 'nVlLargura' => $params['largura'], 86 | 'sCdMaoPropria' => $params['maoPropria'], 87 | 'nVlValorDeclarado' => $params['valorDeclarado'], 88 | 'sCdAvisoRecebimento' => $params['avisoRecebimento'], 89 | 'nCdServico' => isset($params['servico']) ? $params['servico']: '04510', 90 | 'nVlDiametro' => $params['diametro'], 91 | 'StrRetorno' => 'xml', 92 | 'nIndicaCalculo' => 3 93 | ]; 94 | 95 | $queryString = http_build_query($paramsData); 96 | 97 | $url = "{$this->wsCorreios}?{$queryString}"; 98 | 99 | $cURL = curl_init(); 100 | curl_setopt_array($cURL, array( 101 | CURLOPT_RETURNTRANSFER => 1, 102 | CURLOPT_URL => $url 103 | )); 104 | $respostaWebservice = curl_exec($cURL); 105 | curl_close($cURL); 106 | 107 | // Trata o XML e retorna um array de dados 108 | $xml = simplexml_load_string($respostaWebservice); 109 | $result = json_decode(json_encode($xml, JSON_UNESCAPED_UNICODE), TRUE); 110 | 111 | return json_encode(["success" => true, "result" => $result]); 112 | 113 | } 114 | 115 | 116 | public function tracking( $headers, $params) 117 | { 118 | 119 | //aqui eu "quebro" a string para criar um array de encomendas, permitindo o recebimento de mais de uma encomenda 120 | //a ser pesquisada 121 | 122 | if(!isset($params['objects'])){ return json_encode(["success" => false, "message" => 'objects is required']); } 123 | if($params['objects'] == ""){ return json_encode(["success" => false, "message" => 'objects is required']); } 124 | 125 | $trackCodes = $params['objects']; 126 | $provider = isset($params['provider']) ? $params['provider'] : "MelhorRastreio"; 127 | 128 | Services::setServiceTracking($provider); 129 | Services::setDebug(false); 130 | 131 | if(Services::$success){ 132 | 133 | try { 134 | 135 | $objetcs = implode(',', $trackCodes); 136 | $tracking = new Tracking(); 137 | $tracking->setCode($objetcs); 138 | $result = $tracking->get(); 139 | 140 | if(Services::$success && $result){ 141 | return json_encode($result); 142 | }else{ 143 | return json_encode(["success" => false, "message" => Services::getMessageError()]); 144 | } 145 | 146 | 147 | } catch (\Throwable $th) { 148 | return json_encode(["success" => false, "message" => Services::getMessageError()]); 149 | } 150 | 151 | }else{ 152 | return json_encode(["success" => false, "message" => Services::getMessageError()]); 153 | } 154 | 155 | } 156 | 157 | 158 | public function flags($headers, $params) 159 | { 160 | $dados = file_get_contents(__DIR__.'/siglas_rastreio.json'); 161 | $dados = json_decode($dados, TRUE); 162 | 163 | return !empty($dados) ? json_encode(["success" => true, "result" => $dados]) : json_encode(["success" => false, "message" => "Not found"]); 164 | 165 | } 166 | 167 | public function flag($headers, $params) 168 | { 169 | 170 | if(!isset($params['Id'])){ 171 | return json_encode(["success" => false, "message" => 'Id is required']); 172 | } 173 | 174 | $sigla = $params['Id']; 175 | $dados = file_get_contents(__DIR__.'/siglas_rastreio.json'); 176 | $dados = json_decode($dados, TRUE); 177 | 178 | if(isset($dados[$sigla])){ 179 | return json_encode(["success" => true, "result" => ["Id" => $sigla, "Name" => $dados[$sigla]['name']]]); 180 | } 181 | 182 | return json_encode(["success" => false, "message" => 'Flag not found']); 183 | 184 | } 185 | 186 | } 187 | -------------------------------------------------------------------------------- /Api/CorreiosService.php: -------------------------------------------------------------------------------- 1 | services = array( 18 | 'PAC' => '04510', 19 | 'SEDEX' => '04014', 20 | 'SEDEX 12' => '04782', 21 | 'SEDEX 10' => '04790', 22 | 'SEDEX Hoje' => '04804' 23 | ); 24 | 25 | $this->wsCorreios = 'http://ws.correios.com.br/calculador/'; 26 | $this->trackCorreios = 'https://www.linkcorreios.com.br'; 27 | } 28 | 29 | 30 | /** 31 | * getServices function 32 | * 33 | * Retorna os serviços oferecidos pelos Correios. 34 | * 35 | * @return Array 36 | */ 37 | public function getServices(): Array 38 | { 39 | return $this->services; 40 | } 41 | 42 | /** 43 | * getFrete function 44 | * 45 | * Calcula o frete dos Correios com base no tipo de serviço, origem e destino, e as dimensões do(s) itens. 46 | * 47 | * @return Array 48 | */ 49 | public function getFrete(): Array 50 | { 51 | // Recupera os dados JSON no corpo da requisição 52 | $value = json_decode(file_get_contents('php://input'), TRUE); 53 | 54 | // Trata os CEPs retirando o traço caso haja 55 | $sender = str_replace('-', '', $value['origem']); 56 | $recipient = str_replace('-', '', $value['destinatario']); 57 | 58 | // Cria a URL 59 | $url = $this->wsCorreios . 'CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=' . $sender . '&sCepDestino=' . $recipient . '&nVlPeso=' . $value['peso'] . '&nCdFormato=' . $value['tipo'] . '&nVlComprimento=' . $value['comprimento'] . '&nVlAltura=' . 60 | $value['altura'] . '&nVlLargura=' . $value['largura'] . '&sCdMaoPropria=' . $value['maoPropria'] . '&nVlValorDeclarado=' . $value['valorDeclarado'] . '&sCdAvisoRecebimento=' . $value['avisoRecebimento'] . '&nCdServico=' . $value['servico'] . '&nVlDiametro=' . $value['diametro'] . '&StrRetorno=xml'; 61 | 62 | // Executa a Conexão via Curl 63 | $curl = curl_init(); 64 | curl_setopt_array( 65 | $curl, 66 | array( 67 | CURLOPT_URL => $url, 68 | CURLOPT_RETURNTRANSFER => true, 69 | CURLOPT_ENCODING => '', 70 | CURLOPT_MAXREDIRS => 10, 71 | CURLOPT_TIMEOUT => 0, 72 | CURLOPT_FOLLOWLOCATION => true, 73 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 74 | CURLOPT_CUSTOMREQUEST => 'GET' 75 | ) 76 | ); 77 | 78 | $response = curl_exec($curl); 79 | curl_close($curl); 80 | 81 | // Trata o XML e retorna um array de dados 82 | $xml = simplexml_load_string($response); 83 | return json_decode(json_encode($xml, JSON_UNESCAPED_UNICODE), TRUE); 84 | } 85 | 86 | 87 | 88 | 89 | /** 90 | * tracking function 91 | * 92 | * Rastreia um objeto enviado pelos Correios. Esta função recebe um ou mais códigos de rastreio desde que estejam separados por ";" (ponto e vírgula). 93 | * 94 | * @param String $trackCode 95 | * @return Object 96 | */ 97 | public function tracking(String $trackCode): Object 98 | { 99 | //aqui eu "quebro" a string para criar um array de encomendas, permitindo o recebimento de mais de uma encomenda 100 | //a ser pesquisada 101 | $obj = explode(";", $trackCode); 102 | 103 | $novo_array = array(); 104 | 105 | //looping para executar a rotina para cada encomenda enviada 106 | for ($i = 0; $i < count($obj); $i++) { 107 | 108 | $output = file_get_contents($this->trackCorreios.'/'.$obj[$i]); 109 | $out = explode("class=\"singlepost\"", $output); 110 | 111 | if(!isset($out[1])){ 112 | return new stdClass(); 113 | } 114 | 115 | $out = explode("
", $out[1]); 116 | $out = explode("','', str_replace('','', trim(str_replace(':','',str_replace('Data','',explode('|',$array[2])[0]))) )); 128 | $hour = str_replace('','', str_replace('','', trim(str_replace('Hora:','',explode('|',$array[2])[1])) )); 129 | 130 | if(!isset($array[1])){ 131 | $message = $action; 132 | }else{ 133 | $message = str_replace('','', str_replace('','', @explode('-',trim(str_replace('Status:','',$array[1])))[1] )); 134 | } 135 | 136 | $change = str_replace('','', str_replace('','', self::change($date) )); 137 | $location = str_replace('','', str_replace('','', trim(str_replace('Origem:','', str_replace('Local:','',$array[3]))) )); 138 | 139 | $array_obj[$y] = array( 140 | 'date' => $date, 141 | 'hour' => $hour, 142 | 'location' => $location, 143 | 'action' => $action, 144 | 'message' => $message, 145 | 'change' => $change 146 | ); 147 | 148 | $y++; 149 | } 150 | } 151 | 152 | $novo_array[$obj[$i]] = (object)$array_obj; 153 | 154 | } 155 | 156 | return (object)$novo_array; 157 | 158 | } 159 | 160 | 161 | public function change($dia){ 162 | $exploDate = explode('/', $dia); 163 | $dia1 = $exploDate[2] . '-' . $exploDate[1] . '-' . $exploDate[0]; 164 | $dia2 = date('Y-m-d'); 165 | 166 | $diferenca = strtotime($dia2) - strtotime($dia1); 167 | $dias = floor($diferenca / (60 * 60 * 24)); 168 | 169 | if($dias>1){ 170 | $change = "há {$dias} dias"; 171 | }else{ 172 | $change = "há {$dias} dia"; 173 | } 174 | return $change; 175 | } 176 | 177 | /** 178 | * getSiglas function 179 | * 180 | * Retorna a descrição das Siglas utilizadas nos códigos de rastreio. Esta função retorna todas as siglas ou uma específica 181 | * 182 | * @param String $sigla 183 | * @return Array 184 | */ 185 | public function getSiglas(String $sigla = ''): Array 186 | { 187 | $dados = file_get_contents(__DIR__.'/siglas_rastreio.json'); 188 | 189 | $dados = json_decode($dados, TRUE); 190 | 191 | return !empty($sigla) ? array($sigla => $dados[$sigla]) : $dados; 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /Api/obj.php: -------------------------------------------------------------------------------- 1 | obj 13 | * GET or POST 14 | */ 15 | 16 | //error_reporting(0); 17 | 18 | 19 | 20 | if (isset($_GET) || isset($_POST)) { 21 | $request = isset($_GET) ? $_GET : $_POST; 22 | $obj = isset($request['obj']) ? $request['obj'] : false; 23 | 24 | //aqui eu "quebro" a string para criar um array de encomendas, permitindo o recebimento de mais de uma encomenda 25 | //a ser pesquisada 26 | $obj = explode(";", $obj); 27 | 28 | //looping para executar a rotina para cada encomenda enviada 29 | for ($i = 0; $i < count($obj); $i++) { 30 | 31 | $post = array('Objetos' => $obj[$i]); 32 | $ch = curl_init(); 33 | curl_setopt($ch, CURLOPT_URL, "https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm"); 34 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 35 | curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); 36 | $output = curl_exec($ch); 37 | curl_close($ch); 38 | 39 | $out = explode("table class=\"listEvent sro\">", $output); 40 | 41 | if (isset($out[1])) { 42 | $output = explode("", $output); 43 | $output = explode("
", $output[1]); 44 | $output = str_replace("", "", $output[0]); 45 | $output = str_replace("", "", $output); 46 | $output = str_replace("", "", $output); 47 | $output = str_replace("", "", $output); 48 | $output = str_replace("", "", $output); 49 | $output = str_replace("", "", $output); 50 | $output = str_replace("", "", $output); 52 | $output = str_replace(" ", "", $output); 53 | $output = str_replace("", "", $output); 54 | $output = explode("", $output); 55 | 56 | 57 | $novo_array = array(); 58 | 59 | foreach ($output as $texto) { 60 | $info = explode("", $texto); 61 | $dados = explode("
", $info[0]); 62 | 63 | $dia = trim($dados[0]); 64 | $hora = trim(@$dados[1]); 65 | $local = trim(@$dados[2]); 66 | 67 | $dados = explode("
", @$info[1]); 68 | $acao = trim($dados[0]); 69 | 70 | $exAction = explode($acao . "
", @$info[1]); 71 | $acrionMsg = strip_tags(trim(preg_replace('/\s\s+/', ' ', $exAction[0]))); 72 | 73 | if ("" != $dia) { 74 | $exploDate = explode('/', $dia); 75 | $dia1 = $exploDate[2] . '-' . $exploDate[1] . '-' . $exploDate[0]; 76 | $dia2 = date('Y-m-d'); 77 | 78 | $diferenca = strtotime($dia2) - strtotime($dia1); 79 | $dias = floor($diferenca / (60 * 60 * 24)); 80 | 81 | $change = utf8_encode("há {$dias} dias"); 82 | 83 | $novo_array[] = array("date" => $dia, "hour" => $hora, "location" => $local, "action" => utf8_encode($acao), "message" => utf8_encode($acrionMsg), "change" => utf8_decode($change)); 84 | } 85 | } 86 | } else { 87 | $jsonObcject = new stdClass(); 88 | $jsonObcject->erro = true; 89 | $jsonObcject->msg = "Objeto não encontrado"; 90 | $jsonObcject->obj = $obj[$i]; 91 | header('Content-type: application/json'); 92 | $json = json_encode($jsonObcject); 93 | echo $json; 94 | exit; 95 | } 96 | //cria um objeto identificando o código da encomenda e as informações extraídas armazenadas no array $novo_array 97 | $arrayCompleto[$obj[$i]] = (object)$novo_array; 98 | } 99 | 100 | $jsonObcject = (object)$arrayCompleto; 101 | header('Content-type: application/json'); 102 | $json = json_encode($jsonObcject, JSON_UNESCAPED_UNICODE); 103 | 104 | echo $json; 105 | } else { 106 | $jsonObcject = new stdClass(); 107 | $jsonObcject->erro = true; 108 | $jsonObcject->msg = "Objeto não encontrado"; 109 | header('Content-type: application/json'); 110 | $json = json_encode($jsonObcject); 111 | echo $json; 112 | } 113 | -------------------------------------------------------------------------------- /Api/siglas_rastreio.json: -------------------------------------------------------------------------------- 1 | { 2 | "AL": { 3 | "name": "AGENTES DE LEITURA" 4 | }, 5 | "AR": { 6 | "name": "AVISO DE RECEBIMENTO" 7 | }, 8 | "AS": { 9 | "name": "ENCOMENDA PAC – ACAO SOCIAL" 10 | }, 11 | "BE": { 12 | "name": "REMESSA ECONÔMICA S/ AR DIGITAL" 13 | }, 14 | "BF": { 15 | "name": "REMESSA EXPRESSA S/ AR DIGITAL" 16 | }, 17 | "BG": { 18 | "name": "ETIQUETA LOG REM ECON C/AR BG" 19 | }, 20 | "BH": { 21 | "name": "MENSAGEM FÍSICO-DIGITAL" 22 | }, 23 | "BI": { 24 | "name": "ETIQUETA LÓG REGIST URG" 25 | }, 26 | "CA": { 27 | "name": "OBJETO INTERNACIONAL COLIS" 28 | }, 29 | "CB": { 30 | "name": "OBJETO INTERNACIONAL COLIS" 31 | }, 32 | "CC": { 33 | "name": "OBJETO INTERNACIONAL COLIS" 34 | }, 35 | "CD": { 36 | "name": "OBJETO INTERNACIONAL COLIS" 37 | }, 38 | "CE": { 39 | "name": "OBJETO INTERNACIONAL COLIS" 40 | }, 41 | "CF": { 42 | "name": "OBJETO INTERNACIONAL COLIS" 43 | }, 44 | "CG": { 45 | "name": "OBJETO INTERNACIONAL COLIS" 46 | }, 47 | "CH": { 48 | "name": "OBJETO INTERNACIONAL COLIS" 49 | }, 50 | "CI": { 51 | "name": "OBJETO INTERNACIONAL COLIS" 52 | }, 53 | "CJ": { 54 | "name": "OBJETO INTERNACIONAL COLIS" 55 | }, 56 | "CK": { 57 | "name": "OBJETO INTERNACIONAL COLIS" 58 | }, 59 | "CL": { 60 | "name": "OBJETO INTERNACIONAL COLIS" 61 | }, 62 | "CM": { 63 | "name": "OBJETO INTERNACIONAL COLIS" 64 | }, 65 | "CN": { 66 | "name": "OBJETO INTERNACIONAL COLIS" 67 | }, 68 | "CO": { 69 | "name": "OBJETO INTERNACIONAL COLIS" 70 | }, 71 | "CP": { 72 | "name": "OBJETO INTERNACIONAL COLIS" 73 | }, 74 | "CQ": { 75 | "name": "OBJETO INTERNACIONAL COLIS" 76 | }, 77 | "CR": { 78 | "name": "OBJETO INTERNACIONAL COLIS" 79 | }, 80 | "CS": { 81 | "name": "OBJETO INTERNACIONAL COLIS" 82 | }, 83 | "CT": { 84 | "name": "OBJETO INTERNACIONAL COLIS" 85 | }, 86 | "CU": { 87 | "name": "OBJETO INTERNACIONAL COLIS" 88 | }, 89 | "CV": { 90 | "name": "OBJETO INTERNACIONAL COLIS" 91 | }, 92 | "CW": { 93 | "name": "OBJETO INTERNACIONAL COLIS" 94 | }, 95 | "CX": { 96 | "name": "OBJETO INTERNACIONAL COLIS" 97 | }, 98 | "CY": { 99 | "name": "OBJETO INTERNACIONAL COLIS" 100 | }, 101 | "CZ": { 102 | "name": "OBJETO INTERNACIONAL COLIS" 103 | }, 104 | "DA": { 105 | "name": "ENCOMENDA SEDEX C/ AR DIGITAL" 106 | }, 107 | "DB": { 108 | "name": "REMESSA EXPRESSA C/ AR DIGITAL-BRADESCO" 109 | }, 110 | "DC": { 111 | "name": "REMESSA EXPRESSA (ORGAO TRANSITO)" 112 | }, 113 | "DD": { 114 | "name": "DEVOLUÇÃO DE DOCUMENTOS" 115 | }, 116 | "DE": { 117 | "name": "REMESSA EXPRESSA C/ AR DIGITAL" 118 | }, 119 | "DF": { 120 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 121 | }, 122 | "DG": { 123 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 124 | }, 125 | "DI": { 126 | "name": "REM EXPRES COM AR DIGITAL ITAU" 127 | }, 128 | "DJ": { 129 | "name": "ENCOMENDA SEDEX" 130 | }, 131 | "DK": { 132 | "name": "SEDEX EXTRA GRANDE" 133 | }, 134 | "DL": { 135 | "name": "SEDEX LÓGICO" 136 | }, 137 | "DM": { 138 | "name": "ENCOMENDA SEDEX" 139 | }, 140 | "DN": { 141 | "name": "ENCOMENDA SEDEX" 142 | }, 143 | "DO": { 144 | "name": "REM EXPRES COM AR DIGITAL ITAU UNIBANCO" 145 | }, 146 | "DP": { 147 | "name": "SEDEX PAGAMENTO ENTREGA" 148 | }, 149 | "DQ": { 150 | "name": "REM EXPRES COM AR DIGITAL BRADESCO" 151 | }, 152 | "DR": { 153 | "name": "REM EXPRES COM AR DIGITAL SANTANDER" 154 | }, 155 | "DS": { 156 | "name": "REM EXPRES COM AR DIGITAL SANTANDER" 157 | }, 158 | "DT": { 159 | "name": "REMESSA ECON.SEG.TRANSITO C/AR DIGITAL" 160 | }, 161 | "DU": { 162 | "name": "ENCOMENDA SEDEX" 163 | }, 164 | "DV": { 165 | "name": "SEDEX COM AR DIGITAL" 166 | }, 167 | "DW": { 168 | "name": "ENCOMENDA SEDEX (ETIQ LÓGICA)" 169 | }, 170 | "DX": { 171 | "name": "SEDEX 10 LÓGICO" 172 | }, 173 | "DY": { 174 | "name": "ENCOMENDA SEDEX (ETIQ FÍSICA)" 175 | }, 176 | "DZ": { 177 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 178 | }, 179 | "EA": { 180 | "name": "OBJETO INTERNACIONAL EMS" 181 | }, 182 | "EB": { 183 | "name": "OBJETO INTERNACIONAL EMS" 184 | }, 185 | "EC": { 186 | "name": "ENCOMENDA PAC" 187 | }, 188 | "ED": { 189 | "name": "OBJETO INTERNACIONAL PACKET EXPRESS" 190 | }, 191 | "EE": { 192 | "name": "OBJETO INTERNACIONAL EMS" 193 | }, 194 | "EF": { 195 | "name": "OBJETO INTERNACIONAL EMS" 196 | }, 197 | "EG": { 198 | "name": "OBJETO INTERNACIONAL EMS" 199 | }, 200 | "EH": { 201 | "name": "OBJETO INTERNACIONAL EMS" 202 | }, 203 | "EI": { 204 | "name": "OBJETO INTERNACIONAL EMS" 205 | }, 206 | "EJ": { 207 | "name": "OBJETO INTERNACIONAL EMS" 208 | }, 209 | "EK": { 210 | "name": "OBJETO INTERNACIONAL EMS" 211 | }, 212 | "EL": { 213 | "name": "OBJETO INTERNACIONAL EMS" 214 | }, 215 | "EM": { 216 | "name": "SEDEX MUNDI" 217 | }, 218 | "EN": { 219 | "name": "OBJETO INTERNACIONAL EMS" 220 | }, 221 | "EO": { 222 | "name": "OBJETO INTERNACIONAL EMS" 223 | }, 224 | "EP": { 225 | "name": "OBJETO INTERNACIONAL EMS" 226 | }, 227 | "EQ": { 228 | "name": "ENCOMENDA SERVIÇO NÃO EXPRESSA ECT" 229 | }, 230 | "ER": { 231 | "name": "REGISTRADO" 232 | }, 233 | "ES": { 234 | "name": "OBJETO INTERNACIONAL EMS" 235 | }, 236 | "ET": { 237 | "name": "OBJETO INTERNACIONAL EMS" 238 | }, 239 | "EU": { 240 | "name": "OBJETO INTERNACIONAL EMS" 241 | }, 242 | "EV": { 243 | "name": "OBJETO INTERNACIONAL EMS" 244 | }, 245 | "EW": { 246 | "name": "OBJETO INTERNACIONAL EMS" 247 | }, 248 | "EX": { 249 | "name": "OBJETO INTERNACIONAL EMS" 250 | }, 251 | "EY": { 252 | "name": "OBJETO INTERNACIONAL EMS" 253 | }, 254 | "EZ": { 255 | "name": "OBJETO INTERNACIONAL EMS" 256 | }, 257 | "FA": { 258 | "name": "FAC REGISTRADO" 259 | }, 260 | "FB": { 261 | "name": "FAC REGISTRADO" 262 | }, 263 | "FC": { 264 | "name": "FAC REGISTRADO (5 DIAS)" 265 | }, 266 | "FD": { 267 | "name": "FAC REGISTRADO (10 DIAS)" 268 | }, 269 | "FE": { 270 | "name": "ENCOMENDA FNDE" 271 | }, 272 | "FF": { 273 | "name": "REGISTRADO DETRAN" 274 | }, 275 | "FH": { 276 | "name": "FAC REGISTRADO C/ AR DIGITAL" 277 | }, 278 | "FJ": { 279 | "name": "REMESSA ECONÔMICA C/ AR DIGITAL" 280 | }, 281 | "FM": { 282 | "name": "FAC REGISTRADO (MONITORADO)" 283 | }, 284 | "FR": { 285 | "name": "FAC REGISTRADO" 286 | }, 287 | "IA": { 288 | "name": "INTEGRADA AVULSA" 289 | }, 290 | "IC": { 291 | "name": "INTEGRADA A COBRAR" 292 | }, 293 | "ID": { 294 | "name": "INTEGRADA DEVOLUCAO DE DOCUMENTO" 295 | }, 296 | "IE": { 297 | "name": "INTEGRADA ESPECIAL" 298 | }, 299 | "IF": { 300 | "name": "CPF" 301 | }, 302 | "II": { 303 | "name": "INTEGRADA INTERNO" 304 | }, 305 | "IK": { 306 | "name": "INTEGRADA COM COLETA SIMULTANEA" 307 | }, 308 | "IM": { 309 | "name": "INTEGRADA MEDICAMENTOS" 310 | }, 311 | "IN": { 312 | "name": "OBJ DE CORRESP E EMS REC EXTERIOR" 313 | }, 314 | "IP": { 315 | "name": "INTEGRADA PROGRAMADA" 316 | }, 317 | "IR": { 318 | "name": "IMPRESSO REGISTRADO" 319 | }, 320 | "IS": { 321 | "name": "INTEGRADA STANDARD" 322 | }, 323 | "IT": { 324 | "name": "INTEGRADA TERMOLÁBIL" 325 | }, 326 | "IU": { 327 | "name": "INTEGRADA URGENTE" 328 | }, 329 | "IX": { 330 | "name": "EDEI ENCOMENDA EXPRESSA" 331 | }, 332 | "JA": { 333 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 334 | }, 335 | "JB": { 336 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 337 | }, 338 | "JC": { 339 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 340 | }, 341 | "JD": { 342 | "name": "REMESSA ECONOMICA S/AR DIGITAL" 343 | }, 344 | "JE": { 345 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 346 | }, 347 | "JF": { 348 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 349 | }, 350 | "JG": { 351 | "name": "REGISTRADO PRIORITÁRIO" 352 | }, 353 | "JH": { 354 | "name": "REGISTRADO PRIORITÁRIO" 355 | }, 356 | "JI": { 357 | "name": "REMESSA ECONOMICA S/AR DIGITAL" 358 | }, 359 | "JJ": { 360 | "name": "REGISTRADO JUSTIÇA" 361 | }, 362 | "JK": { 363 | "name": "REMESSA ECONÔMICA S/AR DIGITAL" 364 | }, 365 | "JL": { 366 | "name": "REGISTRADO LÓGICO" 367 | }, 368 | "JM": { 369 | "name": "MALA DIRETA POSTAL ESPECIAL" 370 | }, 371 | "JN": { 372 | "name": "MALA DIRETA POSTAL ESPECIAL" 373 | }, 374 | "JO": { 375 | "name": "REGISTRADO PRIORITÁRIO" 376 | }, 377 | "JP": { 378 | "name": "OBJETO RECEITA FEDERAL (EXCLUSIVO)" 379 | }, 380 | "JQ": { 381 | "name": "REMESSA ECONOMICA C/AR DIGITAL" 382 | }, 383 | "JR": { 384 | "name": "REGISTRADO PRIORITÁRIO" 385 | }, 386 | "JS": { 387 | "name": "REGISTRADO LÓGICO" 388 | }, 389 | "JT": { 390 | "name": "REGISTRADO URGENTE" 391 | }, 392 | "JU": { 393 | "name": "ETIQUETA FÍS REGIST URG" 394 | }, 395 | "JV": { 396 | "name": "REMESSA ECONÔMICA C/AR DIGITAL" 397 | }, 398 | "JW": { 399 | "name": "CARTA COMERCIAL A FATURAR (5 DIAS)" 400 | }, 401 | "JX": { 402 | "name": "CARTA COMERCIAL A FATURAR (10 DIAS)" 403 | }, 404 | "JY": { 405 | "name": "REMESSA ECONOMICA (5 DIAS)" 406 | }, 407 | "JZ": { 408 | "name": "REMESSA ECONOMICA (10 DIAS)" 409 | }, 410 | "LA": { 411 | "name": "LOGÍSTICA REVERSA SIMULTÂNEA SEDEX" 412 | }, 413 | "LB": { 414 | "name": "LOGÍSTICA REVERSA SIMULTÂNEA SEDEX" 415 | }, 416 | "LC": { 417 | "name": "OBJETO INTERNACIONAL PRIME" 418 | }, 419 | "LD": { 420 | "name": "OBJETO INTERNACIONAL PRIME" 421 | }, 422 | "LE": { 423 | "name": "LOGÍSTICA REVERSA ECONOMICA" 424 | }, 425 | "LF": { 426 | "name": "OBJETO INTERNACIONAL PRIME" 427 | }, 428 | "LG": { 429 | "name": "OBJETO INTERNACIONAL PRIME" 430 | }, 431 | "LH": { 432 | "name": "OBJETO INTERNACIONAL PRIME" 433 | }, 434 | "LI": { 435 | "name": "OBJETO INTERNACIONAL PRIME" 436 | }, 437 | "LJ": { 438 | "name": "OBJETO INTERNACIONAL PRIME" 439 | }, 440 | "LK": { 441 | "name": "OBJETO INTERNACIONAL PRIME" 442 | }, 443 | "LL": { 444 | "name": "OBJETO INTERNACIONAL PRIME" 445 | }, 446 | "LM": { 447 | "name": "OBJETO INTERNACIONAL PRIME" 448 | }, 449 | "LN": { 450 | "name": "OBJETO INTERNACIONAL PRIME" 451 | }, 452 | "LP": { 453 | "name": "LOGÍSTICA REVERSA SIMULTÂNEA PAC" 454 | }, 455 | "LQ": { 456 | "name": "OBJETO INTERNACIONAL PRIME" 457 | }, 458 | "LS": { 459 | "name": "LOGISTICA REVERSA SEDEX" 460 | }, 461 | "LV": { 462 | "name": "LOGISTICA REVERSA EXPRESSA" 463 | }, 464 | "LW": { 465 | "name": "OBJETO INTERNACIONAL PRIME" 466 | }, 467 | "LX": { 468 | "name": "OBJETO INTERNACIONAL PACKET ECONOMIC" 469 | }, 470 | "LY": { 471 | "name": "OBJETO INTERNACIONAL PRIME" 472 | }, 473 | "LZ": { 474 | "name": "OBJETO INTERNACIONAL PRIME" 475 | }, 476 | "MA": { 477 | "name": "TELEGRAMA – SERVICOS ADICIONAIS" 478 | }, 479 | "MB": { 480 | "name": "TELEGRAMA DE BALCAO" 481 | }, 482 | "MC": { 483 | "name": "TELEGRAMA FONADO" 484 | }, 485 | "MD": { 486 | "name": "MAQUINA DE FRANQUEAR (LOGICA)" 487 | }, 488 | "ME": { 489 | "name": "TELEGRAMA" 490 | }, 491 | "MF": { 492 | "name": "TELEGRAMA FONADO" 493 | }, 494 | "MH": { 495 | "name": "CARTA VIA INTERNET" 496 | }, 497 | "MK": { 498 | "name": "TELEGRAMA CORPORATIVO" 499 | }, 500 | "MM": { 501 | "name": "TELEGRAMA GRANDES CLIENTES" 502 | }, 503 | "MP": { 504 | "name": "TELEGRAMA PRÉ-PAGO" 505 | }, 506 | "MS": { 507 | "name": "ENCOMENDA SAUDE" 508 | }, 509 | "MT": { 510 | "name": "TELEGRAMA VIA TELEMAIL" 511 | }, 512 | "MY": { 513 | "name": "TELEGRAMA INTERNACIONAL ENTRANTE" 514 | }, 515 | "MZ": { 516 | "name": "TELEGRAMA VIA CORREIOS ON LINE" 517 | }, 518 | "NE": { 519 | "name": "TELE SENA RESGATADA" 520 | }, 521 | "NX": { 522 | "name": "EDEI ENCOMENDA NAO URGENTE" 523 | }, 524 | "OA": { 525 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 526 | }, 527 | "OB": { 528 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 529 | }, 530 | "OC": { 531 | "name": "ENCOMENDA SEDEX (ETIQ LOGICA)" 532 | }, 533 | "OD": { 534 | "name": "ENCOMENDA SEDEX (ETIQ FÍSICA)" 535 | }, 536 | "OG": { 537 | "name": "ETIQUETA LÓGICA SEDEX" 538 | }, 539 | "PA": { 540 | "name": "PASSAPORTE" 541 | }, 542 | "PB": { 543 | "name": "ENCOMENDA PAC – NÃO URGENTE" 544 | }, 545 | "PC": { 546 | "name": "ENCOMENDA PAC A COBRAR" 547 | }, 548 | "PD": { 549 | "name": "ENCOMENDA PAC" 550 | }, 551 | "PE": { 552 | "name": "ENCOMENDA PAC (ETIQUETA FISICA)" 553 | }, 554 | "PF": { 555 | "name": "PASSAPORTE" 556 | }, 557 | "PG": { 558 | "name": "ENCOMENDA PAC (ETIQUETA FISICA)" 559 | }, 560 | "PH": { 561 | "name": "ENCOMENDA PAC (ETIQUETA LOGICA)" 562 | }, 563 | "PI": { 564 | "name": "ENCOMENDA PAC" 565 | }, 566 | "PJ": { 567 | "name": "ENCOMENDA PAC" 568 | }, 569 | "PK": { 570 | "name": "PAC EXTRA GRANDE" 571 | }, 572 | "PL": { 573 | "name": "ENCOMENDA PAC" 574 | }, 575 | "PM": { 576 | "name": "ENCOMENDA PAC (ETIQ FÍSICA)" 577 | }, 578 | "PN": { 579 | "name": "ENCOMENDA PAC (ETIQ LOGICA)" 580 | }, 581 | "PO": { 582 | "name": "ENCOMENDA PAC (ETIQ LOGICA)" 583 | }, 584 | "PP": { 585 | "name": "ETIQUETA LÓGICA PAC" 586 | }, 587 | "PR": { 588 | "name": "REEMBOLSO POSTAL – CLIENTE AVULSO" 589 | }, 590 | "PS": { 591 | "name": "ETIQUETA LÓGICA PAC" 592 | }, 593 | "QE": { 594 | "name": "OBJETO EM TRÂNSITO" 595 | }, 596 | "RA": { 597 | "name": "REGISTRADO PRIORITÁRIO" 598 | }, 599 | "RB": { 600 | "name": "CARTA REGISTRADA" 601 | }, 602 | "RC": { 603 | "name": "CARTA REGISTRADA COM VALOR DECLARADO" 604 | }, 605 | "RD": { 606 | "name": "REMESSA ECONOMICA DETRAN" 607 | }, 608 | "RE": { 609 | "name": "MALA DIRETA POSTAL ESPECIAL" 610 | }, 611 | "RF": { 612 | "name": "OBJETO DA RECEITA FEDERAL" 613 | }, 614 | "RG": { 615 | "name": "REGISTRADO DO SISTEMA SARA" 616 | }, 617 | "RH": { 618 | "name": "REGISTRADO COM AR DIGITAL" 619 | }, 620 | "RI": { 621 | "name": "REGISTRADO PRIORITÁRIO INTERNACIONAL" 622 | }, 623 | "RJ": { 624 | "name": "REGISTRADO AGÊNCIA" 625 | }, 626 | "RK": { 627 | "name": "REGISTRADO AGÊNCIA" 628 | }, 629 | "RL": { 630 | "name": "REGISTRADO LÓGICO" 631 | }, 632 | "RM": { 633 | "name": "REGISTRADO AGÊNCIA" 634 | }, 635 | "RN": { 636 | "name": "REGISTRADO AGÊNCIA" 637 | }, 638 | "RO": { 639 | "name": "REGISTRADO AGÊNCIA" 640 | }, 641 | "RP": { 642 | "name": "REEMBOLSO POSTAL – CLIENTE INSCRITO" 643 | }, 644 | "RQ": { 645 | "name": "REGISTRADO AGÊNCIA" 646 | }, 647 | "RR": { 648 | "name": "REGISTRADO INTERNACIONAL" 649 | }, 650 | "RS": { 651 | "name": "REM ECON ORG TRANSITO COM OU SEM AR" 652 | }, 653 | "RT": { 654 | "name": "REM ECON TALAO/CARTAO SEM AR DIGITA" 655 | }, 656 | "RU": { 657 | "name": "REGISTRADO SERVIÇO ECT" 658 | }, 659 | "RV": { 660 | "name": "REM ECON CRLV/CRV/CNH COM AR DIGITAL" 661 | }, 662 | "RW": { 663 | "name": "REGISTRADO INTERNACIONAL" 664 | }, 665 | "RX": { 666 | "name": "REGISTRADO INTERNACIONAL" 667 | }, 668 | "RY": { 669 | "name": "REM ECON TALAO/CARTAO COM AR DIGITAL" 670 | }, 671 | "RZ": { 672 | "name": "REGISTRADO" 673 | }, 674 | "SA": { 675 | "name": "ETIQUETA SEDEX AGÊNCIA" 676 | }, 677 | "SB": { 678 | "name": "SEDEX 10" 679 | }, 680 | "SC": { 681 | "name": "SEDEX A COBRAR" 682 | }, 683 | "SD": { 684 | "name": "REMESSA EXPRESSA DETRAN" 685 | }, 686 | "SE": { 687 | "name": "ENCOMENDA SEDEX" 688 | }, 689 | "SF": { 690 | "name": "SEDEX AGENCIA" 691 | }, 692 | "SG": { 693 | "name": "SEDEX DO SISTEMA SARA" 694 | }, 695 | "SH": { 696 | "name": "SEDEX COM AR DIGITAL" 697 | }, 698 | "SI": { 699 | "name": "SEDEX AGÊNCIA" 700 | }, 701 | "SJ": { 702 | "name": "SEDEX HOJE" 703 | }, 704 | "SK": { 705 | "name": "SEDEX AGÊNCIA" 706 | }, 707 | "SL": { 708 | "name": "SEDEX LÓGICO" 709 | }, 710 | "SM": { 711 | "name": "SEDEX 12" 712 | }, 713 | "SN": { 714 | "name": "SEDEX AGÊNCIA" 715 | }, 716 | "SO": { 717 | "name": "SEDEX AGÊNCIA" 718 | }, 719 | "SP": { 720 | "name": "SEDEX PRÉ-FRANQUEADO" 721 | }, 722 | "SQ": { 723 | "name": "SEDEX" 724 | }, 725 | "SR": { 726 | "name": "SEDEX" 727 | }, 728 | "SS": { 729 | "name": "SEDEX FÍSICO" 730 | }, 731 | "ST": { 732 | "name": "REM EXPRES TALAO/CARTAO SEM AR DIGITAL" 733 | }, 734 | "SU": { 735 | "name": "ENCOMENDA SERVIÇO EXPRESSA ECT" 736 | }, 737 | "SV": { 738 | "name": "REM EXPRES CRLV/CRV/CNH COM AR DIGITAL" 739 | }, 740 | "SW": { 741 | "name": "ENCOMENDA SEDEX" 742 | }, 743 | "SX": { 744 | "name": "SEDEX 10" 745 | }, 746 | "SY": { 747 | "name": "REM EXPRES TALAO/CARTAO COM AR DIGITAL" 748 | }, 749 | "SZ": { 750 | "name": "SEDEX AGÊNCIA" 751 | }, 752 | "TC": { 753 | "name": "TESTE (OBJETO PARA TREINAMENTO)" 754 | }, 755 | "TE": { 756 | "name": "TESTE (OBJETO PARA TREINAMENTO)" 757 | }, 758 | "TR": { 759 | "name": "OBJETO TREINAMENTO – NÃO GERA PRÉ-ALERTA" 760 | }, 761 | "TS": { 762 | "name": "TESTE (OBJETO PARA TREINAMENTO)" 763 | }, 764 | "VA": { 765 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 766 | }, 767 | "VC": { 768 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 769 | }, 770 | "VD": { 771 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 772 | }, 773 | "VE": { 774 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 775 | }, 776 | "VF": { 777 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 778 | }, 779 | "VV": { 780 | "name": "OBJETO INTERNACIONAL COM VALOR DECLARADO" 781 | }, 782 | "XA": { 783 | "name": "AVISO CHEGADA OBJETO INT TRIBUTADO" 784 | }, 785 | "XM": { 786 | "name": "SEDEX MUNDI" 787 | }, 788 | "XR": { 789 | "name": "OBJETO INTERNACIONAL (PPS TRIBUTADO)" 790 | }, 791 | "XX": { 792 | "name": "OBJETO INTERNACIONAL (PPS TRIBUTADO)" 793 | } 794 | } 795 | -------------------------------------------------------------------------------- /Docs/api_correios.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "9a9175cc-e34e-4cf2-97fe-ff53e3023adf", 4 | "name": "api_correios", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 6 | "_exporter_id": "9922747", 7 | "_collection_link": "https://grey-shuttle-5225.postman.co/workspace/teste~1a49c23a-f95a-4a90-98fe-074ac3bb2e22/collection/9922747-9a9175cc-e34e-4cf2-97fe-ff53e3023adf?action=share&source=collection_link&creator=9922747" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Siglas", 12 | "item": [ 13 | { 14 | "name": "flags", 15 | "request": { 16 | "method": "GET", 17 | "header": [ 18 | { 19 | "key": "Access-token", 20 | "value": "{{access_token}}", 21 | "type": "text" 22 | } 23 | ], 24 | "url": { 25 | "raw": "{{base_url}}/correios/flags", 26 | "host": [ 27 | "{{base_url}}" 28 | ], 29 | "path": [ 30 | "correios", 31 | "flags" 32 | ] 33 | } 34 | }, 35 | "response": [] 36 | }, 37 | { 38 | "name": "flag", 39 | "protocolProfileBehavior": { 40 | "disableBodyPruning": true 41 | }, 42 | "request": { 43 | "method": "GET", 44 | "header": [ 45 | { 46 | "key": "Access-token", 47 | "value": "{{access_token}}", 48 | "type": "text" 49 | } 50 | ], 51 | "body": { 52 | "mode": "raw", 53 | "raw": "{\r\n \"Id\": \"AR\"\r\n}", 54 | "options": { 55 | "raw": { 56 | "language": "json" 57 | } 58 | } 59 | }, 60 | "url": { 61 | "raw": "{{base_url}}/correios/flag", 62 | "host": [ 63 | "{{base_url}}" 64 | ], 65 | "path": [ 66 | "correios", 67 | "flag" 68 | ] 69 | } 70 | }, 71 | "response": [] 72 | } 73 | ] 74 | }, 75 | { 76 | "name": "services", 77 | "request": { 78 | "method": "GET", 79 | "header": [], 80 | "url": { 81 | "raw": "{{base_url}}/correios/services", 82 | "host": [ 83 | "{{base_url}}" 84 | ], 85 | "path": [ 86 | "correios", 87 | "services" 88 | ] 89 | } 90 | }, 91 | "response": [] 92 | }, 93 | { 94 | "name": "calculate", 95 | "protocolProfileBehavior": { 96 | "disableBodyPruning": true 97 | }, 98 | "request": { 99 | "method": "GET", 100 | "header": [ 101 | { 102 | "key": "Access-token", 103 | "value": "{{access_token}}", 104 | "type": "text" 105 | } 106 | ], 107 | "body": { 108 | "mode": "raw", 109 | "raw": "{\n\t\"servico\": \"04510\",\n\t\"origem\": \"85930-000\",\n\t\"destinatario\": \"85960-000\",\n\t\"tipo\": 1,\n\t\"comprimento\": 20,\n\t\"altura\": 20,\n\t\"largura\": 20,\n\t\"diametro\": 0,\n\t\"peso\": 0.500,\n\t\"maoPropria\": \"s\",\n\t\"valorDeclarado\": 150,\n\t\"avisoRecebimento\": \"s\"\n}", 110 | "options": { 111 | "raw": { 112 | "language": "json" 113 | } 114 | } 115 | }, 116 | "url": { 117 | "raw": "{{base_url}}/correios/calculate", 118 | "host": [ 119 | "{{base_url}}" 120 | ], 121 | "path": [ 122 | "correios", 123 | "calculate" 124 | ] 125 | } 126 | }, 127 | "response": [] 128 | }, 129 | { 130 | "name": "tracking", 131 | "protocolProfileBehavior": { 132 | "disableBodyPruning": true 133 | }, 134 | "request": { 135 | "method": "GET", 136 | "header": [ 137 | { 138 | "key": "Access-token", 139 | "value": "{{access_token}}", 140 | "type": "text" 141 | } 142 | ], 143 | "body": { 144 | "mode": "raw", 145 | "raw": "{\r\n \"objects\": [\"QE460690785BR\"]\r\n}", 146 | "options": { 147 | "raw": { 148 | "language": "json" 149 | } 150 | } 151 | }, 152 | "url": { 153 | "raw": "{{base_url}}/correios/tracking/", 154 | "host": [ 155 | "{{base_url}}" 156 | ], 157 | "path": [ 158 | "correios", 159 | "tracking", 160 | "" 161 | ] 162 | } 163 | }, 164 | "response": [] 165 | } 166 | ], 167 | "event": [ 168 | { 169 | "listen": "prerequest", 170 | "script": { 171 | "type": "text/javascript", 172 | "exec": [ 173 | "" 174 | ] 175 | } 176 | }, 177 | { 178 | "listen": "test", 179 | "script": { 180 | "type": "text/javascript", 181 | "exec": [ 182 | "" 183 | ] 184 | } 185 | } 186 | ], 187 | "variable": [ 188 | { 189 | "key": "base_url", 190 | "value": "http://localhost" 191 | } 192 | ] 193 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Luan Alves 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # API Correios com PHP v2.0 4 | 5 | [![](https://img.shields.io/github/contributors/luannsr12/correios-rastreio.svg?style=flat-square)](https://github.com/luannsr12/correios-rastreio/graphs/contributors) 6 | [![](https://badges.pufler.dev/updated/luannsr12/correios-rastreio)](https://github.com/luannsr12/correios-rastreio) 7 | [![](https://badges.pufler.dev/visits/luannsr12/correios-rastreio)](https://github.com/luannsr12/correios-rastreio) 8 | 9 | 10 | # Requirements 11 | 12 | - Composer 13 | - PHP >= 8.2 14 | 15 | # Packages 16 | - [luannsr12/sdkcorreios](https://packagist.org/packages/luannsr12/sdkcorreios) 17 | 18 | # Esta API aborda os seguintes serviços: 19 | 20 | 1. Serviços oferecidos pelos Correios; 21 | 2. Cálculo de Frete de um produto; 22 | 3. Rastreio de uma encomenda; 23 | 4. Retorna os significados das siglas contidas no código de rastreio. 24 | 25 | # Como utilizar a API 26 | 27 | Segue abaixo as instruções de utilização: 28 | ``` 29 | git clone https://github.com/luannsr12/api-correios/ 30 | cd api-correios 31 | composer install 32 | ``` 33 | > Após o download e instalação, edite o arquivo "config.php" e crie o Access Token da sua aplicação. 34 | > Esse Access Token deve ser passado no header das requisições da API. 35 | 36 | ```php 37 | 51 | Method: POST 52 | 53 | Curl: 54 | ``` 55 | curl --location --request GET '{{base_url}}/correios/tracking' \ 56 | --header 'Access-token: SEU_ACCESS_TOKEN' \ 57 | --header 'Content-Type: application/json' \ 58 | --data '{ 59 | "objects": ["QQ588651634BR"], 60 | "provider": "0001" 61 | }' 62 | ``` 63 | 64 | Body: 65 | > provider é opcional. Por padrão o site de busca é o Melhor Rastreio (0001) 66 | > Consulte na documentação da SDK para ver os providers: [Sdk Correios](https://github.com/luannsr12/sdkcorreios/) 67 | 68 | | Status | Site | ID | 69 | | :---: | ---------------------------------------------------------------------- | ------| 70 | | ✅ | [melhorrastreio.com.br](https://melhorrastreio.com.br/) (Recomendado) | 0001 | 71 | | ✅ | [encomenda.io](https://encomenda.io/OBJETO) | 0002 | 72 | | ✅ | [rastreadordepacotes.com.br](https://www.rastreadordepacotes.com.br/) | 0003 | 73 | | ✅ | [rastreamentocorreio.com](https://rastreamentocorreio.com/) | 0004 | 74 | | ✅ | [muambator.com.br](https://www.muambator.com.br/) | 0005 | 75 | | ✅ | [rastreiocorreios.com.br](https://rastreiocorreios.com.br/) | 0006 | 76 | | ✅ | [linkcorreios.com.br](https://www.linkcorreios.com.br/) | 0007 | 77 | 78 | ```json 79 | { 80 | "objects": ["QQ588651634BR"], 81 | "provider": "0001" 82 | } 83 | ``` 84 | 85 | Response: 86 | 87 | ```json 88 | { 89 | "success": true, 90 | "result": [ 91 | { 92 | "code": "QQ588651634BR", 93 | "status": "MOVEMENT", 94 | "service_provider": "api.melhorrastreio.com.br", 95 | "data": [ 96 | { 97 | "date": "03-09-2024 07:27:10", 98 | "to": "Unidade de Distribuição - MARECHAL CANDIDO RONDON/PR", 99 | "from": "Unidade de Tratamento - CURITIBA/PR", 100 | "location": "Unidade de Tratamento - CURITIBA/PR", 101 | "originalTitle": "Objeto em transferência - por favor aguarde", 102 | "details": "Objeto em transferência - por favor aguarde" 103 | }, 104 | { 105 | "date": "03-06-2024 12:25:05", 106 | "to": "Unidade de Tratamento - CASCAVEL/PR", 107 | "from": "Unidade de Tratamento - SOROCABA/SP", 108 | "location": "Unidade de Tratamento - SOROCABA/SP", 109 | "originalTitle": "Objeto em transferência - por favor aguarde", 110 | "details": "Objeto em transferência - por favor aguarde" 111 | } 112 | ] 113 | } 114 | ] 115 | } 116 | ``` 117 | 118 | # Tipos de serviços 119 | 120 | Endpoint: /correios/services/ 121 |
122 | Method: GET 123 | 124 | Curl: 125 | 126 | ``` 127 | curl --location '{{base_url}}/correios/services' \ 128 | --header 'Access-token: SEU_ACCESS_TOKEN' 129 | 130 | ``` 131 | 132 | Response: 133 | 134 | ```json 135 | { 136 | "status": "sucess", 137 | "result": { 138 | "PAC": "04510", 139 | "SEDEX": "04014", 140 | "SEDEX 12": "04782", 141 | "SEDEX 10": "04790", 142 | "SEDEX Hoje": "04804" 143 | } 144 | } 145 | ``` 146 | 147 | # Calcular Frete 148 | 149 | Endpoint: /correios/calculate/ 150 |
151 | Method: GET 152 | 153 | 1. Para o tipo de encomenda, segue as definições abaixo: 154 | - Caixa/Pacote (1); 155 | - Rolo/Prisma (2); 156 | - Envelope (3); 157 | 158 | 2. Observações importantes: 159 | - Caso seja Envelope, informe 0 na altura; 160 | - Caso seja Envelope, o peso não pode ultrapassar 1kg; 161 | - Caso seja Rolo/Prisma, informe o diâmetro da embalagem; 162 | - Caso seja Rolo/Prisma, informe 0 na altura e largura; 163 | - Caso seja Caixa/Pacote, informe 0 no diâmetro; 164 | - Para os serviços de "Mão Própria" e/ou "Aviso de Recebimento" informe "S" - sim ou "N" - não; 165 | - O valor Declarado é opcional, sendo que caso não deseje declarar, informe 0; 166 | 167 | Curl: 168 | ``` 169 | curl --location '{{base_url}}/correios/calculate' \ 170 | --header 'Access-token: SEU_ACCESS_TOKEN' \ 171 | --header 'Content-Type: application/json' \ 172 | --data '{ 173 | "servico": "04510", 174 | "origem": "85930-000", 175 | "destinatario": "85960-000", 176 | "tipo": 1, 177 | "comprimento": 20, 178 | "altura": 20, 179 | "largura": 20, 180 | "diametro": 0, 181 | "peso": 0.500, 182 | "maoPropria": "s", 183 | "valorDeclarado": 150, 184 | "avisoRecebimento": "s" 185 | }' 186 | 187 | ``` 188 | 189 | 190 | Body: 191 | 192 | ```json 193 | { 194 | "servico": "04510", 195 | "origem": "12460-000", 196 | "destinatario": "37530-000", 197 | "tipo": 1, 198 | "comprimento": 20, 199 | "altura": 20, 200 | "largura": 20, 201 | "diametro": 0, 202 | "peso": 0.500, 203 | "maoPropria": "s", 204 | "valorDeclarado": 150, 205 | "avisoRecebimento": "s" 206 | } 207 | ``` 208 | 209 | Response: 210 | 211 | ```json 212 | { 213 | "status": "sucess", 214 | "result": { 215 | "cServico": { 216 | "Codigo": "04510", 217 | "Valor": "45,83", 218 | "PrazoEntrega": "11", 219 | "ValorSemAdicionais": "29,40", 220 | "ValorMaoPropria": "7,50", 221 | "ValorAvisoRecebimento": "6,35", 222 | "ValorValorDeclarado": "2,58", 223 | "EntregaDomiciliar": "S", 224 | "EntregaSabado": "N", 225 | "obsFim": [], 226 | "Erro": "0", 227 | "MsgErro": [] 228 | } 229 | } 230 | } 231 | ``` 232 | 233 | # Obter a sigla pelo ID 234 | 235 | Endpoint: /correios/flag/ 236 |
237 | Method: GET 238 | 239 | Curl: 240 | ``` 241 | curl --location --request GET '{{base_url}}/correios/flag' \ 242 | --header 'Access-token: SEU_ACCESS_TOKEN' \ 243 | --header 'Content-Type: application/json' \ 244 | --data '{ 245 | "Id": "AR" 246 | }' 247 | ``` 248 | 249 | Body: 250 | ```json 251 | { 252 | "Id": "AR" 253 | } 254 | ``` 255 | 256 | Response: 257 | 258 | ```json 259 | { 260 | "success": true, 261 | "result": { 262 | "Id": "AR", 263 | "Name": "AVISO DE RECEBIMENTO" 264 | } 265 | } 266 | ``` 267 | 268 | # Listar todas as siglas 269 | 270 | Endpoint: /correios/flags/ 271 |
272 | Method: GET 273 | 274 | Curl: 275 | ``` 276 | curl --location '{{base_url}}/correios/flags' \ 277 | --header 'Access-token: SEU_ACCESS_TOKEN' 278 | 279 | ``` 280 | 281 | Response: 282 | 283 | ```json 284 | { 285 | "success": true, 286 | "result": { 287 | "AL": { 288 | "name": "AGENTES DE LEITURA" 289 | }, 290 | "AR": { 291 | "name": "AVISO DE RECEBIMENTO" 292 | }, 293 | "AS": { 294 | "name": "ENCOMENDA PAC – ACAO SOCIAL" 295 | }, 296 | "BE": { 297 | "name": "REMESSA ECONÔMICA S/ AR DIGITAL" 298 | }, 299 | "BF": { 300 | "name": "REMESSA EXPRESSA S/ AR DIGITAL" 301 | } 302 | } 303 | } 304 | ``` 305 | 306 | 307 | ## Contribuidores 308 | 309 | | [luannsr12
@luannsr12](https://github.com/luannsr12) | [germano-rs
@germano-rs](https://github.com/germano-rs) | [pauloalmeidasilva
@pauloalmeidasilva](https://github.com/pauloalmeidasilva) | 310 | | :---: |:---: |:---: 311 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "luannsr12/sdkcorreios": "^1.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "421dbc7408e49336ab7e2dfe65a481d2", 8 | "packages": [ 9 | { 10 | "name": "luannsr12/sdkcorreios", 11 | "version": "v1.0.8", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/luannsr12/sdkcorreios.git", 15 | "reference": "fa069ee10458df66a922082fde845bf4fcd7bd9c" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/luannsr12/sdkcorreios/zipball/fa069ee10458df66a922082fde845bf4fcd7bd9c", 20 | "reference": "fa069ee10458df66a922082fde845bf4fcd7bd9c", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=8.2" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Sdkcorreios\\": "src/" 30 | } 31 | }, 32 | "notification-url": "https://packagist.org/downloads/", 33 | "license": [ 34 | "MIT" 35 | ], 36 | "authors": [ 37 | { 38 | "name": "Luan Alves" 39 | } 40 | ], 41 | "description": "Sdk correios", 42 | "support": { 43 | "issues": "https://github.com/luannsr12/sdkcorreios/issues", 44 | "source": "https://github.com/luannsr12/sdkcorreios/tree/v1.0.8" 45 | }, 46 | "time": "2024-03-12T21:11:36+00:00" 47 | } 48 | ], 49 | "packages-dev": [], 50 | "aliases": [], 51 | "minimum-stability": "stable", 52 | "stability-flags": [], 53 | "prefer-stable": false, 54 | "prefer-lowest": false, 55 | "platform": [], 56 | "platform-dev": [], 57 | "plugin-api-version": "2.6.0" 58 | } 59 | -------------------------------------------------------------------------------- /config.php: -------------------------------------------------------------------------------- 1 | 0){ 33 | $params = array_merge($bd, $params); 34 | } 35 | } 36 | 37 | if(is_file("Api/{$classe}.php")){ 38 | 39 | require_once "Api/{$classe}.php"; 40 | 41 | if(class_exists($classe)){ 42 | 43 | if(method_exists($classe,$metodo)){ 44 | 45 | try { 46 | 47 | $headers = getallheaders(); 48 | 49 | if(!isset($headers['Access-token'])){ 50 | die(json_encode(array('success' => false, 'message' => 'Access Token required'))); 51 | } 52 | 53 | $class_open = new $classe($headers['Access-token']); 54 | 55 | $execute = $class_open->$metodo($headers,$params); 56 | 57 | echo $execute; 58 | 59 | } catch (\Exception $e) { 60 | echo json_encode(array('success' => false, 'message' => 'Error application')); 61 | } 62 | 63 | }else{ 64 | echo json_encode(array('success' => false, 'message' => 'Method not exists')); 65 | } 66 | 67 | }else{ 68 | echo json_encode(array('success' => false, 'message' => 'Method not exists')); 69 | } 70 | 71 | }else{ 72 | echo json_encode(array('success' => false, 'message' => 'Method not exists')); 73 | } 74 | 75 | } 76 | --------------------------------------------------------------------------------