API REST para OpenCart 2.1 ou superior, 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):
- PHP-CRUD-API: Script PHP que adiciona uma API REST com acesso direto ao Banco de dados (Single file PHP script that adds a REST API).
Caso deseje doar um valor para contribuir com este trabalho continuo e sempre gratuito, clique no botão abaixo:
- PHP 5.3 ou superior.
- Biblioteca PDO habilitada no PHP.
- OpenCart 2.1 ou superior.
- Acesse o link: https://github.com/opencartbrasil/opencart-rest-api/releases.
- Localize a versão mais atual e compatível com sua versão do OpenCart, e faça o download do arquivo "opencart-rest-api.ocmod.zip".
- Na administração da loja acesse o menu Extensions->Extension Installer (Extensões->Instalador).
- Na página do instalador, clique no botão Upload e selecione o arquivo 'opencart-rest-api.ocmod.zip' (que você baixou deste repositório), e aguarde a conclusão da instalação automática.
- Acesse a administração de sua loja, e vá no menu Configurações->Gerenciar Usuários->API (System->Users->API).
- Clique no botão "Novo" (Add New), no campo "Nome da API" (API Name) coloque "API REST", logo abaixo, clique no botão "Gerar" (Generate) para criar sua "Chave da API", no campo "Situação" (Status) selecione a opção "Habilitar" (Enabled), e clique no botão "Salvar" (Save).
Restringir o acesso a API por IP cadastrado através da administração da loja OpenCart (Restrict access IP):
- 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).
Edite o arquivo "config_api.php", e localize a linha:
define('RESTRICT_IP', false);
Altere para:
define('RESTRICT_IP', true);
E salve as alterações no arquivo.
Edite o arquivo "config_api.php", e localize a linha:
define('SESSION_LOG', false);
Altere para:
define('SESSION_LOG', true);
E 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.
Importante: Este erro costuma aparecer a partir da versão 5.6 do PHP.
- Faça um Fork do projeto e edite os arquivos que desejar.
- Faça um Pull para que suas sugestões de melhorias sejam avaliadas e aceitas, caso aprovadas.
- Abra uma Inssue com sua dúvida ou sugestão.
[GNU General Public License version 3 (GPLv3)](https://github.com/opencartbrasil/opencart-rest-api /blob/master/LICENSE)