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
- Su tienda Prestashop debe tener habilitada la “reescritura de módulo” para Apache.
- Es preferible utilizar SSL (https:) para llamadas a servicios web, ya que evita problemas de seguridad del tipo “intermediario”.
- Compruebe que los cinco métodos GET, POST, PUT, DELETE y HEAD sean compatibles con el servidor.
Para garantizar la seguridad y eficiencia de sus servicios web Prestashop, es esencial utilizar SSL (HTTPS) para todas las llamadas de servicios web. Esto evita ataques de “intermediario”, salvaguardando sus datos durante la transmisión. Además, verificar que su servidor admita los métodos HTTP GET, POST, PUT, DELETE y HEAD es fundamental para un funcionamiento perfecto. Al configurar estos ajustes, optimizas el rendimiento y la seguridad de tu tienda, garantizando un acceso y una gestión fiables de tus recursos de Prestashop a través de la API.
¿Cómo configurar Servicios Web en Prestashop?
1. Inicie sesión en el Back-office de Prestashop. 2. Navegue hasta Parámetros avanzados -> Opciones del menú Servicios web para abrir la página Servicios web.
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:
a) Habilitar el servicio web de Prestashop: Habilite la configuración para utilizar el servicio web en la Tienda Prestashop.
b) Habilitar el modo CGI para PHP: Habilite la configuración para usar PHP como script CGI en lugar del módulo Apache. 5. Haga clic en el botón Guardar para guardar la configuración. Ahora puedes utilizar los Servicios Web en tu Tienda Prestashop.
¿Cómo agregar/Actualizar Servicios Web en Prestashop?
1. Inicie sesión en el back-office de Prestashop. 2. Navegue hasta Parámetros avanzados -> Opciones del menú Servicios web para abrir la página Servicios web. 3. Redireccionará a la página de Servicios Web que tiene una lista de Servicios Web disponibles.
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.
una llave: Esta es una clave única. Puedes ingresarla manualmente o hacer clic en el botón Generar para generar una clave aleatoria para el servicio web Prestashop.
b) Descripción clave: Puede proporcionar la descripción de la clave para una mejor comprensión.
c) Estado: habilite la clave para proporcionar una concesión para acceder a los datos mediante la clave.
d) Permiso: proporcione el permiso para acceder a los datos utilizando una 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 la haya configurado correctamente, deberá acceder a la siguiente URL en su navegador: https://{ruta raíz de la tienda}/api/. Le solicitará el nombre de usuario y la contraseña para acceder al recurso.
a) Nombre de usuario: Ingrese 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 recursos y todas las opciones CRUD permitidas que haya configurado en su Tienda Prestashop.
Ahora está conectado correctamente al servicio web 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 el detalle del cliente con ID 10
https://www.knowband.com/api/customers/10
Recomendar reloj:
¿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 captar clientes. Para esto, registraremos un enlace addWebserviceResources de ServiceRequest para los recursos en lugar de anular la función getResources() de la clase ServiceRequest en Prestashop 1.7. La creación de API de servicios web personalizados en Prestashop 1.7 implica el uso de la clase WebserviceSpecificManagement. Esto le permite definir funcionalidades específicas y gestionar el procesamiento de datos. Por ejemplo, implementar la clase WebserviceSpecificManagementKbCustomer le permite manejar los datos de los clientes de manera eficiente. Por lo tanto, este enfoque proporciona una solución flexible y sólida para ampliar las capacidades de Prestashop, permitiendo interacciones personalizadas con los datos de su tienda. Al aprovechar estas opciones de personalización avanzadas, puede crear soluciones de comercio electrónico más dinámicas y receptivas que satisfagan necesidades comerciales únicas. 1. Registre el enlace addWebserviceResources en el módulo.
función pública instalar() { padre::instalar(); $this->registerHook('addWebserviceResources'); devolver verdadero; }
2. Agregue un detector de gancho para definir la clase y la descripción. Establezca Specific_management en verdadero si desea utilizar WebserviceSpecificManagement en lugar del archivo ObjectModel.
función pública hookAddWebserviceResources() { return array( 'kbcustomer' => array( 'descripción' => 'Cliente personalizado de Knowband', 'specific_management' => true, ), 'kbaddress' => array( 'descripción' => 'Knowband Dirección personalizada', 'clase' => 'kbaddress' ) ); }
3. Cree un 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 están definidas en la clase WebserviceSpecificManagementImages.php. Estos son:
- establecerSalidaObjeto
- establecerWsObjeto
- obtenerObjetoWs
- obtener salida de objeto
- establecerSegmentoUrl
- obtenerSegmentoUrl
- obtener el contenido
- gestionar (donde se procesan los datos)
1. Ahora agregue la clave que tiene el recurso kbcustomer en el servicio web del back-office. 2. Ahora, visita el 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 el archivo de su módulo.
clase WebserviceSpecificManagementKbcustomer implementa WebserviceSpecificManagementInterface { /** @var WebserviceOutputBuilder */ protected $objOutput; salida $ protegida; /** @var WebserviceRequest */ protected $wsObject; función pública setUrlSegment($segmentos) { $this->urlSegment = $segmentos; devolver $esto; } función pública getUrlSegment() { return $this->urlSegment; } función pública getWsObject() { return $this->wsObject; } función pública getObjectOutput() { return $this->objOutput; } /** * Esto debe devolver una cadena con valores específicos como lo espera WebserviceRequest. * * @return string */ public function getContent() { return $this->objOutput->getObjectRender()->overrideContent($this->output); } función pública setWsObject(WebserviceRequestCore $obj) { $this->wsObject = $obj; devolver $esto; } /** * @param WebserviceOutputBuilderCore $obj * @return WebserviceSpecificManagementInterface */ public function setObjectOutput(WebserviceOutputBuilderCore $obj) { $this->objOutput = $obj; devolver $esto; } función pública administrar() { $objetos_productos = matriz(); $objects_products['empty'] = nuevo Cliente(); $lista_clientes = Cliente::getClientes(); foreach ($lista_cliente como $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->profundidad, WebserviceOutputBuilder::VIEW_LIST, false); } }
La siguiente captura de pantalla le proporciona una imagen del resultado:
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}]}
¡Al final!
Con más de 13 años de experiencia técnica, Knowband ofrece servicios integrales de desarrollo web y de aplicaciones utilizando las últimas tecnologías, incluidos varios marcos PHP y React. Ofrecemos más de 100 extensiones listas para usar para plataformas de comercio electrónico populares como Prestashop, Opencart, WooCommerce y Magento 2. Si tiene alguna consulta, no dude en comunicarse con nosotros en support@knowband.com. Knowband también es un socio Premium de Prestashop y un vendedor superior que ofrece más de 100 módulos de Prestashop para satisfacer todas sus necesidades de comercio electrónico. Consulta nuestros más populares Módulo Supercheckout de una página para Prestashop aquí.