API REST para OpenCart 2.1 ou superior
API REST para OpenCart 2 e 3, que permite o acesso a todas as tabelas do banco de dados incluindo as que não são nativas do OpenCart.
O controle de acesso a API REST é feito através da chave da API que é cadastrada na administração do OpenCart.
Projetos incluídos (Related projects):
Pronto!
Acesse a administração de sua loja, e vá no menu Configurações→Gerenciar Usuários→API (System→Users→API), localize a API com o nome "API REST", clique no botão "Editar" (Edit), clique na aba "Endereço IP" (IP Addresses), clique no botão "Adicionar IP" (Add IP), adicione o IP que você deseja que tenha acesso a API, e clique no botão "Salvar" (Save).
Agora edite o arquivo "config_api.php", e localize a linha:
define('RESTRICT_IP', false);
E altere para:
define('RESTRICT_IP', true);
Por último, salve as alterações no arquivo.
Edite o arquivo "config_api.php", e localize a linha:
define('SESSION_LOG', false);
E altere para:
define('SESSION_LOG', true);
Se estiver utilizando o OpenCart 3, localize a linha:
define('OPENCART_V3', false);
E altere para:
define('OPENCART_V3', true);
Salve as alterações no arquivo, sendo que você poderá visualizar os logs de acesso através da administração de sua loja, no no menu Configurações→Gerenciar Usuários→API (System→Users→API), localize a API com o nome "API REST", clique no botão "Editar" (Edit), e clique na aba "Sessão" (Session).
Acesse a URL da sua loja, incluindo no final o arquivo api.php, conforme o exemplo:
http://www.seudominio.com.br/api.php
É necessário informar a sua Chave da API em todas as URLs da API que serão acessadas, passando-a no cabeçalho da requisição com o nome key tendo como valor a sua Chave da API.
Exemplo:
key = mMAnvMIaP7zPHnF7hBi23ebGyIU6sp2eWRfdi08yNWOo8wRXPAWgCol
Caso contrário você receberá a mensagem de erro:
{"API Error":"Key not found!"}
Qualquer tabela do banco de dados estará acessivel pela API, independente de ser nativa ou não do OpenCart, para acessar os dados ou enviar dados, deve-se solicitar ou enviar requisições HTTP utilizando os verbos GET, POST, PUT ou DELETE.
As URLs são formadas seguindo o padrão (The URLs are formed following the pattern):
http://dominio/api.php/nome_tabela/{id}
http://domain/api.php/table_name/{id}
No exemplo abaixo, solicitamos todos os dados de produtos da tabela oc_product:
GET http://www.seudominio.com.br/api.php/oc_product/
Neste outro exemplo, solicitamos os dados do produto com a coluna product_id igual a 40 da tabela oc_product:
GET http://www.seudominio.com.br/api.php/oc_product/40
<?php
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'key: mMAnvMIaP7zPHnF7hBi23ebGyIU6sp2eWRfdi08yNWOo8wRXPAWgCol'; // // Replace key value for API key OpenCart (Only numbers and letters)
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'http://www.seudominio.com.br/api.php/oc_product/', // Replace domain and table name
CURLOPT_HTTPHEADER => $headers,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
]);
$out = curl_exec($ch);
curl_close($ch);
print_r( $out ); // Result json
<?php
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'key: mMAnvMIaP7zPHnF7hBi23ebGyIU6sp2eWRfdi08yNWOo8wRXPAWgCol'; // // Replace key value for API key OpenCart (Only numbers and letters)
$data = array('name' => 'Samsung', 'image' => '', 'sort_order' => '0');
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'http://www.seudominio.com.br/api.php/oc_manufacturer/', // Replace domain and table name
CURLOPT_HTTPHEADER => $headers,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
]);
$out = curl_exec($ch);
curl_close($ch);
print_r( $out ); // Result json
Se ao utilizar a API, você receber o erro abaixo:
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
No arquivo de configurações do PHP, que geralmente é o "php.ini", descomente ( apague o ; ) a linha abaixo:
;always_populate_raw_post_data = -1
E reinicie o servidor web.
Se você encontrou um erro e deseja nos relatar, você deve registrar uma Issue.
Se você tem uma correção ou melhoria e deseja nos enviar, faça um fork e nos envie um Pull request para avaliarmos.
Se você descobrir uma vulnerabilidade de segurança, envie um e-mail para [email protected]. Todas as vulnerabilidades informadas serão imediatamente tratadas caso confirmadas.
O projeto OpenCart Brasil é um software de código aberto licenciado sob a GPL v3.