Como criar a API de serviço da Web do módulo Prestashop?

Este blog é sobre como criar e usar a API Prestashop Webservices. O Prestashop possui a ferramenta padrão de Serviços da Web disponível que permite acessar a loja a partir de aplicativos remotos.

Pré-requisitos

  1. Sua loja Prestashop deve ter “module rewrite” habilitado para o apache.
  2. É preferível usar SSL (https:) para chamadas de serviço da web, pois evita os problemas de segurança do tipo “man in the middle”.
  3. Verifique se os cinco métodos GET, POST, PUT, DELETE e HEAD são suportados no servidor.

Como configurar Web Services no Prestashop?

1. Faça login no Back-office do Prestashop. 2. Navegue até as opções do menu Parâmetros Avançados -> Serviços da Web para abrir a página de Serviços da Web.

parâmetros avançados

 

3. Ele irá redirecionar para a página Web Services com a listagem de Web Services disponíveis e o formulário de configuração para configurar o serviço. 4. O formulário Configuração possui os seguintes campos:

• Configuração

a) Habilite o serviço web do Prestashop: Habilite a configuração para usar o serviço da Web na Loja Prestashop.

b) Habilite o modo CGI para PHP: Habilite a configuração para usar PHP como script CGI em vez do módulo Apache. 5. Clique no botão Salvar para salvar a configuração. Agora, você pode usar os Web Services em sua Loja Prestashop.

Como adicionar/atualizar Web Services no Prestashop?

1. Faça o login no Prestashop Back-office 2. Navegue até Advance Parameters -> Web Services opções de menu para abrir a página Web Services. 3. Ele irá redirecionar para a página de Web Services com uma lista de Web Services disponíveis.

página de serviço da web

4.�Clique no botão “Adicionar nova chave de serviço da web” para adicionar uma nova chave de serviço da web para acessar apenas determinados recursos da loja Prestashop.

 

add-webservice-key

uma chave: Esta é uma chave única. Você pode inseri-lo manualmente ou clicar no botão Gerar para gerar uma chave aleatória para o serviço da web.

b) Descrição da chave: Você pode fornecer a descrição da chave para melhor compreensão.

c) Situação: Habilite a chave para fornecer uma concessão para acessar os dados usando a chave.

d) Permissão: Forneça a permissão para acessar os dados usando uma determinada chave. Você pode verificar a permissão específica para conceder acesso aos dados como Adicionar, Editar, excluir ou visualizar. Aqui, verificamos a permissão para Países e Moeda. 5. Clique no botão Salvar para adicionar a chave aos serviços da web.

Como acessar o Web Service?

Depois de ter criado a chave para o serviço da web e configurado corretamente, você precisa acessar a seguinte URL em seu navegador: https://{store root path}/api/ Ele solicitará nome de usuário e senha para acessar o recurso.

Registe-in

a) Nome de usuário: Digite a chave do serviço web que é gerado na etapa acima. Por exemplo MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW

b) Senha: Deve ficar em branco, pois não é necessária senha. Após o login, você acessará a lista de recursos e todas as opções CRUD permitidas que você configurou em sua Loja Prestashop.

arquivo xml

Agora você está conectado com sucesso ao serviço web Prestashop.

a) Para obter a lista de entidades para determinado recurso:

https://shop_root_url/api/resouce

Exemplo: https://www.knowband.com/api/customers para obter uma lista de todos os clientes.

b) Para OBTER um cliente específico por ID:

https://shop_root_url/api/customers/1

Por exemplo: para obter os detalhes do cliente com ID 10

https://www.knowband.com/api/customers/10

Como criar a API de serviço Web do módulo Prestashop para Prestashop 1.7?

Mostraremos como criar um módulo para buscar clientes. Para isso, registraremos um gancho addWebserviceResources de ServiceRequest para os recursos em vez de substituir a função getResources() da classe ServiceRequest no Prestashop 1.7. 1. Registre o gancho addWebserviceResources no módulo.

public function install() { parent::install(); $this->registerHook('addWebserviceResources'); retorne verdadeiro; }

2. Adicione um listener de gancho para definir a classe e a descrição. Defina specific_management como true se desejar usar WebserviceSpecificManagement em vez do arquivo ObjectModel.

public function hookAddWebserviceResources() { return array( 'kbcustomer' => array( 'description' => 'Knowband Custom Customer', 'specific_management' => true, ), 'kbaddress' => array( 'description' => 'Knowband Endereço personalizado', 'class' => 'kbaddress' ) ); }

3. Crie o arquivo de classe WebserviceSpecificManagement como WebserviceSpecificManagementCLASSNAME que implementa WebserviceSpecificManagementInterface Por exemplo – WebserviceSpecificManagementKbCustomer que é semelhante a /classes/webservice/WebserviceSpecificManagementImages.php. Você deve incluir as funções que são definidas na classe WebserviceSpecificManagementImages.php. Estes são:

  • setObjectOutput
  • setWsObject
  • getWsObject
  • getObjectOutput
  • setUrlSegment
  • getUrlSegment
  • obter conteudo
  • gerenciar (onde os dados são processados)

1. Agora adicione a chave com o recurso kbcustomer no web service no back-office. 2. Agora, visite o https://{youstore.com}/api/kbcustomer para ver a resposta em XML. No exemplo abaixo, exibimos a listagem de todos os clientes disponíveis na loja. Adicione include_once(_PS_MODULE_DIR_.’YOURMODULENAME/classes/WebserviceSpecificManagementKbCustomer.php’); em seu arquivo de módulo.

class WebserviceSpecificManagementKbcustomer implementa WebserviceSpecificManagementInterface { /** @var WebserviceOutputBuilder */ protected $objOutput; saída $ protegida; /** @var WebserviceRequest */ protected $wsObject; public function setUrlSegment($segments) { $this->urlSegment = $segments; retorne $isto; } public function getUrlSegment() { return $this->urlSegment; } public function getWsObject() { return $this->wsObject; } public function getObjectOutput() { return $this->objOutput; } /** * Deve retornar uma string com valores específicos como o WebserviceRequest espera. * * @return string */ public function getContent() { return $this->objOutput->getObjectRender()->overrideContent($this->output); } public function setWsObject(WebserviceRequestCore $obj) { $this->wsObject = $obj; retorne $isto; } /** * @param WebserviceOutputBuilderCore $obj * @return WebserviceSpecificManagementInterface */ public function setObjectOutput(WebserviceOutputBuilderCore $obj) { $this->objOutput = $obj; retorne $isto; } public function manage() { $objects_products = array(); $objects_products['vazio'] = new Cliente(); $customer_list = Cliente::getClientes(); foreach ($customer_list as $list) { $objects_products[] = new Customer($list['id_customer']); } $this->_resourceConfiguration = $objects_products['empty']->getWebserviceParameters(); $this->output .= $this->objOutput->getContent($objects_products, null, $this->wsObject->fieldsToDisplay, $this->wsObject->depth, WebserviceOutputBuilder::VIEW_LIST, false); } }

A captura de tela abaixo fornece o visual da saída:

saída

Se você quiser a saída no formato JSON, acrescente &output_format=JSON no final da URL. Por exemplo: https://{yourstore.com}/api/kbcustomer&output_format=JSON

Saída: {“customers”:[{“id”:1},{“id”:2},{“id”:3},{“id”:4},{“id”:5},{“id”:6},{“id”:7},{“id”:8},{“id”:9},{“id”:10},{“id”:11},{“id”:12},{“id”:13},{“id”:14},{“id”:15},{“id”:16},{“id”:17},{“id”:18},{“id”:19},{“id”:20},{“id”:21}]}

Joe Parker

We boast of the best in the industry plugins for eCommerce systems and has years of experience working with eCommerce websites. We provide best plugins for platforms like - Magento, Prestashop, OpenCart and Shopify . We also provide custom module development and customization services for the website and modules..

Leave a Reply

Your email address will not be published. Required fields are marked *