¿Cómo crear la API del servicio web del módulo Prestashop?

Este blog trata sobre cómo crear y utilizar la API de servicios web de Prestashop. Prestashop tiene disponible una herramienta de servicios web predeterminada que permite acceder a la tienda desde aplicaciones remotas.

Requisitos previos

  1. Su tienda Prestashop debe tener habilitada la “reescritura de módulos” para apache.
  2. Es preferible utilizar SSL (https:) para las llamadas de servicios web, ya que evita los problemas de seguridad del tipo “man in the middle”.
  3. Verifique que los cinco métodos GET, POST, PUT, DELETE y HEAD sean compatibles con el servidor.

¿Cómo configurar los Servicios Web en el Prestashop?

1. Inicie sesión en el Back-office de Prestashop. 2. Vaya a Parámetros avanzados -> Opciones de menú de servicios web para abrir la página de servicios web.

parámetros avanzados

 

3. Redireccionará a la página de Servicios Web que tiene el listado de Servicios Web disponibles y el formulario de configuración para configurar el servicio. 4. El formulario de Configuración tiene los siguientes campos:

configuración

a) Habilitar el servicio web de Prestashop: habilite la configuración para usar el servicio web en la Tienda Prestashop.

b) Habilitar el modo CGI para PHP: habilite la configuración para usar PHP como secuencia de comandos CGI en lugar del módulo Apache. 5. Haga clic en el botón Guardar para guardar la configuración. Ahora, puede utilizar los servicios web en su tienda Prestashop.

¿Cómo agregar/Actualizar Servicios Web en Prestashop?

1. Inicie sesión en el back-office de Prestashop. 2. Vaya a Parámetros avanzados -> Opciones de menú de Servicios web para abrir la página de Servicios web. 3. Se redirigirá a la página de Servicios web que tiene una lista de los Servicios web disponibles.

página de servicio web

4.�Haga clic en el botón “Agregar nueva clave de servicio web” para agregar una nueva clave de servicio web para acceder solo a ciertos recursos de la tienda Prestashop.

 

agregar clave de servicio web

una llave: Esta es una clave única. Puede ingresarlo manualmente o hacer clic en el botón Generar para generar una clave aleatoria para el servicio web.

b) Clave Descripción: Puede proporcionar la descripción con respecto a la clave para una mejor comprensión.

c) Estado: habilite la clave para proporcionar una concesión para acceder a los datos usando la clave.

d) Permiso: Proporcione el permiso para acceder a los datos usando la clave determinada. Puede verificar el permiso específico para otorgar acceso a los datos como Agregar, Editar, eliminar o ver. Aquí, hemos verificado el permiso para Países y Moneda. 5. Haga clic en el botón Guardar para agregar la clave a los servicios web.

¿Cómo acceder al Servicio Web?

Una vez que haya creado la clave para el servicio web y configurado correctamente, debe presionar la siguiente URL en su navegador: https://{store root path}/api/ Se le solicitará el nombre de usuario y la contraseña para acceder al recurso.

Regístrese

a) Nombre de usuario: Introduzca la clave del servicio web que se genera en el paso anterior. Por ejemplo MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW

b) Contraseña: Debe estar en blanco ya que no se requiere contraseña. Después de iniciar sesión, accederá a la lista de los recursos y todas las opciones CRUD permitidas que ha configurado en su Tienda Prestashop.

archivo xml

Ahora está conectado con éxito al servicio web de Prestashop.

a) Para OBTENER la lista de entidades para un recurso en particular:

https://shop_root_url/api/resouce

Ejemplo: https://www.knowband.com/api/customers para obtener una lista de todos los clientes.

b) Para OBTENER un cliente específico por ID:

https://shop_root_url/api/customers/1

Por ejemplo: para obtener los detalles del cliente con ID 10

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

¿Cómo crear la API de servicio web del módulo Prestashop para Prestashop 1.7?

Le mostraremos cómo crear un módulo para buscar clientes. Para esto, registraremos un gancho addWebserviceResources de ServiceRequest para los recursos en lugar de anular la función getResources() de ServiceRequest Class en Prestashop 1.7. 1. Registre el gancho addWebserviceResources en el módulo.

función pública install() { padre::install(); $this->registerHook('addWebserviceResources'); devolver verdadero; }

2. Agregue un oyente de enlace para definir la clase y la descripción. Establezca specific_management en true si desea utilizar WebserviceSpecificManagement en lugar del archivo ObjectModel.

public function hookAddWebserviceResources() { return array( 'kbcustomer' => array( 'description' => 'Knowband Custom Customer', 'specific_management' => true, ), 'kbaddress' => array( 'description' => 'Knowband Dirección personalizada', 'clase' => 'kbaddress' ) ); }

3. Cree el archivo de clase WebserviceSpecificManagement como WebserviceSpecificManagementCLASSNAME que implementa WebserviceSpecificManagementInterface, por ejemplo, WebserviceSpecificManagementKbCustomer, que es similar a /classes/webservice/WebserviceSpecificManagementImages.php. Debe incluir las funciones que se definen en la clase WebserviceSpecificManagementImages.php. Estos son:

  • establecerObjetoSalida
  • establecerWsObject
  • obtenerWsObject
  • getObjectOutput
  • establecer segmento de URL
  • obtener segmento de URL
  • obtener el contenido
  • administrar (donde se procesan los datos)

1. Ahora agregue la clave que tiene el recurso kbcustomer en el servicio web en el back-office. 2. Ahora, visita la https://{youstore.com}/api/kbcustomer para ver la respuesta en XML. En el siguiente ejemplo, mostramos la lista de todos los clientes disponibles en la tienda. Agregue include_once(_PS_MODULE_DIR_.’YOURMODULENAME/classes/WebserviceSpecificManagementKbCustomer.php’); en su archivo de módulo.

class WebserviceSpecificManagementKbcustomer implements WebserviceSpecificManagementInterface { /** @var WebserviceOutputBuilder */ protected $objOutput; $salida protegida; /** @var WebserviceRequest */ protected $wsObject; public function setUrlSegment($segmentos) { $this->urlSegment = $segmentos; devolver $esto; } public function getUrlSegment() { return $this->urlSegment; } public function getWsObject() { return $this->wsObject; } public function getObjectOutput() { return $this->objOutput; } /** * Esto debe devolver una cadena con valores específicos como espera WebserviceRequest. * * @return string */ public function getContent() { return $this->objOutput->getObjectRender()->overrideContent($this->output); } public function setWsObject(WebserviceRequestCore $obj) { $this->wsObject = $obj; devolver $esto; } /** * @param WebserviceOutputBuilderCore $obj * @return WebserviceSpecificManagementInterface */ public function setObjectOutput(WebserviceOutputBuilderCore $obj) { $this->objOutput = $obj; devolver $esto; } public function manage() { $objects_products = array(); $objetos_productos['vacío'] = nuevo Cliente(); $lista_clientes = Cliente::obtenerClientes(); foreach ($lista_de_clientes as $lista) { $objetos_productos[] = nuevo Cliente($lista['id_cliente']); } $this->_resourceConfiguration = $objects_products['empty']->getWebserviceParameters(); $this->output .= $this->objOutput->getContent($objects_products, null, $this->wsObject->fieldsToDisplay, $this->wsObject-> depth, WebserviceOutputBuilder::VIEW_LIST, false); } }

La siguiente captura de pantalla le proporciona la imagen de la salida:

salida

Si desea la salida en formato JSON, agregue &output_format=JSON al final de la URL. Por ejemplo: https://{yourstore.com}/api/kbcustomer&output_format=JSON

Salida: {“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 *