Comment créer l’API de service Web du 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 qui permet d’accéder au magasin à partir d’applications distantes.

Pré-requis

  1. Votre boutique Prestashop doit avoir la “réécriture de module” activée pour apache.
  2. Il est préférable d’utiliser SSL (https:) pour les appels de services Web, car cela évite les problèmes de sécurité de type “man in the middle”.
  3. Vérifiez que les cinq méthodes GET, POST, PUT, DELETE et HEAD sont prises en charge sur le serveur.

Comment configurer les Web Services dans le Prestashop ?

1. Connectez-vous au Back-office Prestashop. 2. Accédez à Paramètres avancés -> Options de menu Services Web pour ouvrir la page Services Web.

paramètres d'avance

 

3. Il redirigera vers la page des services Web contenant la liste des services Web disponibles et le formulaire de configuration pour configurer le service. 4. Le formulaire de configuration contient les champs suivants :

paramétrage

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

b) Activer le mode CGI pour PHP: activez le paramètre pour utiliser PHP comme script CGI au lieu du module Apache. 5. Cliquez sur le bouton Enregistrer pour enregistrer la configuration. Maintenant, vous pouvez utiliser les services Web dans votre boutique Prestashop.

Comment ajouter/Mettre à jour des Web Services dans Prestashop ?

1. Connectez-vous au back-office Prestashop 2. Accédez aux options du menu Paramètres avancés -> Services Web pour ouvrir la page Services Web. 3. Il redirigera vers la page des services Web contenant une liste des services Web disponibles.

page de service Web

4. Cliquez sur le bouton “Ajouter une nouvelle clé de service Web” pour ajouter une nouvelle clé de service Web afin d’accéder uniquement à certaines ressources de la boutique Prestashop.

 

add-webservice-key

une clé: Il s’agit d’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) Touche Description: Vous pouvez fournir la description concernant 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) Autorisation: Fournissez l’autorisation d’accéder aux données à l’aide de la certaine clé. Vous pouvez vérifier l’autorisation spécifique d’accorder l’accès aux données comme Ajouter, Modifier, supprimer ou afficher. Ici, nous avons vérifié l’autorisation pour les pays et la 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 correctement configuré, vous devez cliquer sur l’URL suivante dans votre navigateur : https://{store root path}/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 qui est généré à l’étape ci-dessus. Par exemple MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW

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

fichier-xml

Vous êtes maintenant connecté avec succès au service Web Prestashop.

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

https://shop_root_url/api/resouce

Mise en situation : 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 ayant l’ID 10

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

Comment créer l’API Webservice du module Prestashop pour Prestashop 1.7 ?

Nous allons vous montrer comment créer un module pour récupérer des clients. Pour cela, nous enregistrerons un crochet addWebserviceResources de ServiceRequest pour les ressources au lieu de remplacer la fonction getResources() de ServiceRequest Class dans Prestashop 1.7. 1. Enregistrez le crochet addWebserviceResources dans le module.

fonction publique install() { parent ::install(); $this->registerHook('addWebserviceResources'); retourner 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.

public function hookAddWebserviceResources() { return array( 'kbcustomer' => array( 'description' => 'Knowband Custom Customer', 'specific_management' => true, ), 'kbaddress' => array( 'description' => 'Knowband Adresse personnalisée', 'class' => 'kbaddress' ) ); }

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

  • setObjectOutput
  • setWsObject
  • getWsObject
  • getObjectOutput
  • setUrlSegmentsetUrlSegment
  • 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.

class WebserviceSpecificManagementKbcustomer implements WebserviceSpecificManagementInterface { /** @var WebserviceOutputBuilder */ protected $objOutput; $sortie protégée ; /** @var WebserviceRequest */ protected $wsObject ; public function setUrlSegment($segments) { $this->urlSegment = $segments; retourne $ceci ; } public function getUrlSegment() { return $this->urlSegment ; } public function getWsObject() { return $this->wsObject ; } public function getObjectOutput() { return $this->objOutput ; } /** * Ceci doit renvoyer une chaîne avec des valeurs spécifiques comme WebserviceRequest l'attend. * * @return string */ public function getContent() { return $this->objOutput->getObjectRender()->overrideContent($this->output); } public function setWsObject(WebserviceRequestCore $obj) { $this->wsObject = $obj; retourne $ceci ; } /** * @param WebserviceOutputBuilderCore $obj * @return WebserviceSpecificManagementInterface */ public function setObjectOutput(WebserviceOutputBuilderCore $obj) { $this->objOutput = $obj; retourne $ceci ; } public function manage() { $objects_products = array(); $objects_products['empty'] = nouveau Client(); $liste_clients = Client ::getCustomers(); 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); } }

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

sortie

Si vous voulez la sortie 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 *