Comment créer une API de service Web de module Prestashop?

Ce blog explique comment créer et utiliser l'API Prestashop Webservices. Prestashop dispose d'un outil de services Web par défaut permettant d'accéder au magasin à partir d'applications distantes.

Pré-requis

  1. Votre magasin Prestashop devrait avoir "module réécriture" activé pour apache.
  2. Il est préférable d’utiliser SSL (https 🙂 pour les appels de service Web, car il évite les problèmes de sécurité de type "homme au milieu".
  3. Vérifiez que les cinq méthodes GET, POST, PUT, DELETE et HEAD sont prises en charge sur le serveur.

Comment configurer les services Web dans Prestashop?

1. Connectez-vous au Back-office Prestashop. 2. Aller vers

paramètres avancés

3. Il sera redirigé vers la page de services Web contenant la liste des services Web disponibles et le formulaire de configuration permettant de configurer le service. 4. Le formulaire de configuration comporte les champs suivants:

paramétrage

a) Activer le service Web de Prestashop: Activez le paramètre pour utiliser le service Web dans le Prestashop Store.

b) Activer le mode CGI pour PHP: Activez le paramètre pour utiliser PHP en tant que script CGI au lieu du module Apache. 5. Cliquez sur le bouton Enregistrer pour enregistrer la configuration. Vous pouvez maintenant utiliser les services Web dans votre boutique Prestashop.

Comment ajouter / mettre à jour des services Web dans le Prestashop?

1. Connectez-vous au 2 Back-office de Prestashop. Accédez à Options de menu Paramètres avancés -> Services Web pour ouvrir la page Services Web. 3. Il sera redirigé vers la page de services Web contenant une liste des services Web disponibles.

page de service Web

4.

add-webservice-key

une clé: Ceci est une clé unique. Vous pouvez le saisir manuellement ou cliquer sur le bouton Générer pour générer une clé aléatoire pour le service Web.

b) Description de la clé: Vous pouvez fournir la description de la clé pour une meilleure compréhension.

c) Statut: Activez la clé pour fournir une autorisation d'accès aux données à l'aide de la clé.

d) permission: Donnez la permission d’accéder aux données en utilisant la clé donnée. Vous pouvez vérifier l’autorisation spécifique permettant d’accorder l’accès aux données, telles que Ajouter, Modifier, Supprimer ou Afficher. Ici, nous avons vérifié l’autorisation de pays et devise. 5. Cliquez sur le bouton Enregistrer pour ajouter la clé aux services Web.

Comment accéder au Web Service?

Une fois que vous avez créé la clé pour le service Web et que celle-ci est correctement configurée, vous devez taper l'URL suivante dans votre navigateur: https: // {chemin racine de la boutique} / api / Il vous demandera un nom d'utilisateur et un mot de passe pour accéder à la ressource.

Connectez-vous

a) Nom d'utilisateur: Entrez la clé du service Web générée à l'étape ci-dessus. Par exemple, MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW

b) Mot de passe: Il devrait être vide car aucun mot de passe n'est requis. Une fois connecté, vous accédez à la liste des ressources et à toutes les options CRUD autorisées que vous avez été configurées dans votre boutique Prestashop.

fichier xml

Vous êtes maintenant connecté au service Web Prestashop.

a) Pour obtenir la liste des entités pour une ressource particulière:

https://shop_root_url/api/resouce

Exemple: https://www.knowband.com/api/customers pour obtenir une liste de tous les clients.

b) Pour obtenir un client spécifique par ID:

https://shop_root_url/api/customers/1

Par exemple: Pour obtenir les détails du client portant l’ID 10

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

Comment créer une API Webservice pour Prestashop Module pour Prestashop 1.7?

Nous allons vous montrer comment créer un module pour aller chercher des clients. Pour cela, nous allons enregistrer un hook addWebserviceResources de ServiceRequest pour les ressources au lieu de remplacer la fonction getResources () de la classe ServiceRequest dans Prestashop 1.7. 1. Enregistrez le hook addWebserviceResources dans le module.

fonction publique install () {parent :: install (); $ this-> registerHook ('addWebserviceResources'); retourne vrai; }

2. Ajoutez un écouteur de hook pour définir la classe et la description. Définissez specific_management sur true si vous souhaitez utiliser WebserviceSpecificManagement au lieu du fichier ObjectModel.

fonction publique hookAddWebserviceResources () {return array ('kbcustomer' => array ('description' => 'Connecteur personnalisé Knowband', 'specific_management' => true,), 'kbaddress' => array ('description' => 'Knowband Adresse personnalisée ',' class '=>' kbaddress ')); }

3. Créez un fichier de classe WebserviceSpecificManagement en tant que WebserviceSpecificManagementCLASSNAME qui implémente WebserviceSpecificManagementInterface, par exemple – WebserviceSpecificManagementKbCustomer, similaire à /classes/webservice/WebserviceSpecificManManManagementImages.php. Vous devez inclure les fonctions définies dans la classe WebserviceSpecificManagementImages.php. Ceux-ci sont:

  • setObjectOutput
  • setWsObject
  • getWsObject
  • getObjectOutput
  • setUrlSegment
  • getUrlSegment
  • Obtenir du contenu
  • gérer (où les données sont traitées)

1. Ajoutez maintenant la clé ayant la ressource kbcustomer dans le service Web du back-office. 2. Maintenant, visitez le https://{youstore.com}/api/kbcustomer pour voir la réponse en XML. Dans l'exemple ci-dessous, nous affichons la liste de tous les clients disponibles dans le magasin. Ajoutez include_once (_PS_MODULE_DIR _. 'YOURMODULENAME / classes / WebserviceSpecificManagementKbCustomer.php'); dans votre fichier de module.

La classe WebserviceSpecificManagementKbcustomer implémente WebserviceSpecificManagementInterface {/ ** @var WebserviceOutputBuilder * / protected $ objOutput; protected $ output; / ** @var WebserviceRequest * / protected $ wsObject; fonction publique setUrlSegment ($ segments) {$ this-> urlSegment = $ segments; return $ this; } fonction publique getUrlSegment () {return $ this-> urlSegment; } fonction publique getWsObject () {return $ this-> wsObject; } fonction publique getObjectOutput () {return $ this-> objOutput; } / ** * Cela doit être une chaîne contenant des valeurs spécifiques, conformément à l'attente de WebserviceRequest. * * @return string * / public function getContent () {return $ this-> objOutput-> getObjectRender () -> overrideContent ($ this-> sortie); } fonction publique setWsObject (WebserviceRequestCore $ obj) {$ this-> wsObject = $ obj; return $ this; } / ** * @param WebserviceOutputBuilderCore $ obj * @return WebserviceSpecificManagementInterface * / fonction publique setObjectOutput (WebserviceOutputBuilderCore $ obj) {$ this-> objOutput = $ obj; return $ this; } fonction publique manage () {$ objects_products = array (); $ objects_products ['empty'] = nouveau client (); $ customer_list = Customer :: getCustomers (); foreach ($ liste_clients en tant que $ liste) {$ objets_produits [] = nouveau client ($ list ['id_customer']); } $ this -> _ resourceConfiguration = $ objets_produits ['vide'] -> getWebserviceParameters (); $ this-> output. = $ this-> objOutput-> getContent ($ products_products, null, $ this-> wsObject-> fieldsToDisplay, $ this-> wsObject-> profondeur, WebserviceOutputBuilder :: VIEW_LIST, false); }}

La capture d'écran ci-dessous vous fournit le visuel de la sortie:

sortie

Si vous souhaitez que la sortie soit au format JSON, ajoutez & output_format = JSON à la fin de l'URL. Par exemple: https://{yourstore.com}/api/kbcustomer&output_format=JSON

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