PluginProbe
SuperFrete / 2.1.6
SuperFrete v2.1.6
trunk 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4
superfrete / api / Http / Request.php

Request.php in SuperFrete 2.1.6, at api/Http/Request.php

122 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SuperFrete_API\Http;
4
5 use SuperFrete_API\Helpers\Logger;
6
7 class Request {
8
9 private $api_url;
10 private $api_token;
11
12 /**
13 * Construtor para inicializar as configurações da API.
14 */
15 public function __construct() {
16 $this->api_url = 'https://api.superfrete.com'; // URL padrão da API
17 // Verifica se o sandbox está ativado e troca o token
18 $sandbox_enabled = get_option('superfrete_sandbox_mode') === 'yes';
19 $this->api_token = $sandbox_enabled ? get_option('superfrete_api_token_sandbox') : get_option('superfrete_api_token');
20
21 if ($sandbox_enabled) {
22 $this->api_url = 'https://sandbox.superfrete.com'; // URL do ambiente de teste
23 }
24 }
25
26 /**
27 * Método genérico para chamadas à API do SuperFrete.
28 */
29 public function call_superfrete_api($endpoint, $method = 'GET', $payload = [], $retorno = false) {
30
31 try {
32 $headers = [
33 'Content-Type' => 'application/json',
34 'Accept' => 'application/json',
35 'Authorization' => 'Bearer ' . $this->api_token ,
36 'Platform' => 'Woocommerce SuperFrete',
37 ];
38
39
40 $params = [
41 'headers' => $headers,
42 'method' => $method,
43 'timeout' => 10,
44 ];
45
46 if ($method === 'POST' && !empty($payload)) {
47 $params['body'] = wp_json_encode($payload);
48 }
49
50
51 $response = ($method === 'POST') ? wp_remote_post($this->api_url . $endpoint, $params) : wp_remote_get($this->api_url . $endpoint, $params);
52 if(!$retorno){
53
54 if (is_wp_error($response)) {
55
56 Logger::log("Erro na API ({$endpoint}): " . $response->get_error_message(), 'ERROR');
57 return false;
58 }
59
60 }
61
62
63
64
65 $status_code = wp_remote_retrieve_response_code($response);
66
67 $body = json_decode(wp_remote_retrieve_body($response), true);
68
69
70 if ($status_code !== 200 || (isset($body['success']) && $body['success'] === false )) {
71 $error_message = isset($body['message']) ? $body['message'] : 'Erro desconhecido';
72 $nova_linha = (php_sapi_name() === 'cli') ? "\n" : "<br>";
73
74 if (!isset($body['errors']) && isset($body['error'])) {
75 foreach ($body['error'] as $error) {
76
77 if (isset($erros)) {
78
79 $erros = $erros . "\n" . $error[0] . "\n";
80 } else {
81 $erros = "\n" . $error[0];
82 }
83 }
84 } else if(isset($body['errors'])){
85 foreach ($body['errors'] as $error) {
86
87 if (isset($erros)) {
88
89 $erros = $erros . "\n" . $error[0] . "\n";
90 } else {
91 $erros = "\n" . $error[0];
92 }
93 }
94 }
95
96 $errors = isset($erros) ? $erros : 'Sem detalhes';
97
98 Logger::log('SuperFrete', "Erro na API ({$endpoint}): Código {$status_code} - {$error_message}\nDetalhes: {$errors}");
99 return false;
100 }
101
102 if (is_wp_error($response)) {
103
104 Logger::log("Erro na API ({$endpoint}): " . $response->get_error_message(), 'ERROR');
105 return false;
106 }
107
108 $status_code = wp_remote_retrieve_response_code($response);
109 if ($status_code !== 200) {
110 Logger::log("Resposta inesperada ({$endpoint}): HTTP {$status_code}", 'WARNING');
111 return false;
112 }
113
114 return json_decode(wp_remote_retrieve_body($response), true);
115 } catch (Exception $exc) {
116 Logger::log("Erro {$exc}", 'WARNING');
117 }
118
119
120 }
121 }
122