├── .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("
", $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://github.com/luannsr12/correios-rastreio/graphs/contributors)
6 | [](https://github.com/luannsr12/correios-rastreio)
7 | [](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](https://github.com/luannsr12) | [ @germano-rs](https://github.com/germano-rs) | [ @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 |
--------------------------------------------------------------------------------
|