Modules Shop › Installation et configuration du webservice clé Prestashop®

Modules, addons et widgets pour booster votre e-business sur wordpress et prestashop.

Ce site utilise des cookies pour assurer une future reconnaissance de votre compte et pour votre confort de navigation. En poursuivant votre navigation, vous en acceptez l'utilisation.
01 Mar

Installation et configuration du webservice clé Prestashop®

publié 1 mars 2012 fichier sous prestashop®

Pour information ce tutoriel est destiné à celui qui ouvre et souhaite partager sa boutique prestashop (revendeur, grossiste, drop shipper…).

Dans un premier temps nous allons créer un accès au service web.

Réécriture d’URL

Avant de commencer il est essentiel que votre configuration permette la réécriture d’url (URL Rewriting) :

Préférences > SEO & URLs > Configuration des URL > URL simplifiée

Activer le webservice

Pour activer la fonctionnalité webservice, vous devez activer la réecriture d’URL
Ensuite, rendez-vous dans :

Panneau d’administration prestashop 1.4 > Outils > Service web
ou
Panneau d’administration prestashop 1.5 ou 1.6  >Paramètres avancés > Service web

Dans un premier temps sélectionnez « Activer le service web » et cliquez sur enregistrer afin d’activer le service.

 

Suivant le structure de votre serveur, activez le mode CGI mais assurez-vous que PHP n’est pas configuré en tant que module Apache sur votre serveur.
Génération d’un fichier .htaccess (seulement pour les v 1.4) :

Si votre prestashop est en 1.4 et afin que le service web puisse fonctionner, vous devez générer/régénérer un fichier .htaccess.
Toujours dans le Back Office, rendez vous dans l’onglet Outils/Générateurs.

 

Autorisation et droits d’accès

Une fois activé, le webservice reste fermé à l’ensemble des utilisateurs
Vous devez maintenant générer un clé d’accès au webservice et y affecter un certains nombre de droits
Service web test 1.6.0
Pour cela, rendez-vous dans :

Panneau d’administration > Outils > Service web > Nouveau
Cliquez ensuite sur Générer une clé
Cela vous générera une clé d’authentification

C’est grâce à cette clé d’authentification qu’il sera possible d’accéder au service web.
Ensuite vous pouvez créer des droits pour chacunes des ressources auxquels vous souhaitez accéder.

ServicewebAjoutertest

Dans la liste des permissions, le bouton de gauche vous permet de définir l’ensemble des droits pour une
ressource donnée. Sélectionnez les ressources que vous devez manipuler depuis votre application,
– Appuyez sur Enregistrer
Note sur la Clé d’authentification :
Afin que la clé ne puisse être devinée, veuillez utilisez le bouton « Générer ».
Si vous definissez vous même la clé assurez vous qu’elle soit suffisement sécurisé et
que ces droit sont limités.

Adaptation de l’ouverture d’autorisations (version texte de la copie d’écran ci dessus)

Choisissez au minimum les colonnes  «Voir (GET) et Aperçu(HEAD)» parmi les cases : addresses, carriers, carts, categories, combinations, configurations, content_management_system, countries, currencies, customer_messages, customer_threads, customers, deliveries, employees, groups, guests, image_types, images, languages, manufacturers, order_details, order_discounts, order_histories, order_states, orders, price_ranges, product_feature_values, product_features, product_option_values, product_options, products, search, states, stock_movement_reasons, stock_movements, stores, suppliers, tags, taxes, translated_configurations, weight_ranges, zones,

et cocher au minimum les valeurs suivantes : «categories», «combinations», «image_types», «images», «manufacturers», «product_feature_values», «product_features», «product_option_values», «product_options», «products», «suppliers», «tags».

Solutions si problème :

Patcher Prestashop suite au bug PSCFI-1187

Sur certaines versions antèrieure à la 1.5, un bug du dispatcher à été rencontrée, il faut alors modifier (en FTP) le fichier :

webservice/dispatcher.php

et remplacer

$result = $class_name::getInstance()->fetch($key, $method, $_GET['url'], $params, $bad_class_name, $input_xml);

par

$class_instance = call_user_func(array($class_name,'getInstance'));

$result = $class_instance->fetch($key, $method, $_GET['url'], $params, $bad_class_name, $input_xml);

si PHP tourne sur le CGI plutot qu’en module APACHE

 

if(strpos(@php_sapi_name(), 'CGI')){
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
}

 

et sur certaines configurations restrictives

il faut remplacer

if (isset($_SERVER['PHP_AUTH_USER']))
$key = $_SERVER['PHP_AUTH_USER'];
elseif (isset($_GET['ws_key']))
$key = $_GET['ws_key'];

par

if (isset($_SERVER['PHP_AUTH_USER']))
$key = $_SERVER['PHP_AUTH_USER'];
elseif (isset($_SERVER['HTTP_AUTHORIZATION']))
list($key,) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
elseif (isset($_GET['ws_key']))
$key = $_GET['ws_key'];

 

Adaptation du fichier .htaccess

Dans certains cas, le htaccess peut rencontrer un problème de génération, dans ce cas il faut controler voir modifier (en FTP) ce fichier situé à la racine de votre boutique
controler la présence de

RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]

et dans certains cas, ajouter juste avant la balise </IfModule> (balise de fermeture « IfModule ») cette ligne :

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

 

Communiquer votre clé

Vous êtes grossiste, et vous souhaitez permettre à vos clients d’utiliser le module Synchro Drop Shipping veuillez fournir à celui-ci

1) la clé de compte service web (ex : T67WY05CRA03IRRCL1VD36DV2TF8PMW0 )

2) l’url de votre boutique (ex :  www.prestashop.fr, sans http:// et sans le slash final)

 

 

Tester l’accès au service web avec le navigateur

Afin de tester si vous avez correctement configuré votre accès au service web, vous allez accéder à la
page http://Ma clé d’authentification@maboutique.com/api/ où « Ma clé
d’authentification » est à remplacé par votre clé, vous y accéderez de préférence avec Mozilla Firefox.
Note :
Une autre méthode est d’accéder directement à la page suivante :
http://maboutique.com/api/

ou

http://maboutique.com/webservice/dispatcher.php?url=api/
Celle ci devrait vous demander un identifiant ainsi qu’un mot de passe, l’identifiant à
rentrer est la clé d’authentification et il n’y a pas de mot de passe.
Vous accédez alors à la liste des ressources que vous avez configuré dans votre back office avec
l’ensemble des permissions accordées.
À l’aide de « XLink », vous allez pouvoir accéder à vos différentes ressources.
Qu’est-ce que « XLink » ?
Xlink permet d’associer un fichier XML à un autre fichier XML via un lien.
Dans la balise customers, vous devriez obtenir ces attributs :

<customers xlink:href= »http://maboutique.com/api/customers » get= »true »
put= »true » post= »true » delete= »true » head= »true »>
les attributs get, put, post et delete ont comme valeur « true » (vrai), ce qui signifie que vous avez bien
configuré la ressource « customers » et qu’elle est accessible.

Vous pouvez desormais utiliser le « XLink » qui pointe sur l’URL « http://maboutique.com/api/customers »
et vous y rendre.
Une fois la liste des clients affichée via « http://exemple.com/boutique/api/customers », vous pourrez
accéder aux XLink correspondant à chacun des clients.
Exemple :
le fichier XML situé dans « http://maboutique.com/api/customers/1 » dont on retrouve le lien dans
l’ensemble des clients (cf : lien précédent) vous donnera les propriétés du client ayant pour ID 1.
Ainsi vous naviguez dans le service web pour accéder à toutes les ressources en XML.