Intégration · E-commerce

Connecter PrestaShop à votre logiciel métier : Webservice, Admin API et modules

PrestaShop se relie à un logiciel métier par deux interfaces : le Webservice historique, protégé par une clé de 32 caractères avec des droits ressource par ressource, et l'Admin API de PrestaShop 9, fondée sur OAuth2. Pour réagir à une nouvelle commande, la voie documentée est un petit module branché sur les hooks de PrestaShop, ou à défaut une interrogation régulière de l'API.

L'essentiel

  • Le Webservice PrestaShop s'active dans Paramètres avancés, Webservice, avec une clé de 32 caractères dont les droits se règlent ressource par ressource.
  • Depuis PrestaShop 8.1, le Webservice peut répondre en JSON mais ne lit pas le JSON en entrée : les créations et modifications s'envoient en XML.
  • PrestaShop 9 ajoute une Admin API en OAuth2, avec des jetons limités par portées, que l'équipe PrestaShop destine à remplacer à terme le Webservice.
  • Les hooks actionValidateOrder et actionOrderStatusPostUpdate permettent à un module de transmettre chaque nouvelle commande et chaque changement de statut au logiciel métier.

Webservice ou Admin API : par quelle porte entrer dans PrestaShop ?

Une boutique PrestaShop offre deux interfaces de programmation, et le choix dépend d'abord de sa version : une boutique en PrestaShop 8 n'a que le Webservice, une boutique en PrestaShop 9 dispose des deux.

CritèreWebservice (PrestaShop 8 et 9)Admin API (version 9)
ActivationParamètres avancés, Webservice, option d'activation sur OuiActivée par défaut dans PrestaShop 9 selon la documentation
AuthentificationClé de 32 caractères, envoyée comme identifiant HTTP Basic sans mot de passeClient API OAuth2 ; jeton obtenu en client credentials, transmis dans l'en-tête Authorization
DroitsCochés ressource par ressource (lecture, ajout, modification, suppression)Portées comme product_read ou product_write ; un appel hors portée reçoit une erreur 403
FormatsXML ; sortie JSON possible, pas d'entrée JSONJSON
AdresseDossier /api/ de la boutiqueChemins /admin-api/, description OpenAPI dans /admin-api/docs.json
Sécurité du transportClé dans un en-tête Authorization, méthode recommandée par la documentationHTTPS obligatoire en production, assouplissement possible en mode debug

Le blog technique de PrestaShop a présenté l'Admin API, pendant la préparation de la version 9, comme destinée à remplacer à terme le Webservice, jugé daté, sans calendrier de retrait. La documentation de l'Admin API annonce encore une documentation développeur plus complète. En 2026, une intégration sur une boutique en version 9 peut donc combiner les deux : l'Admin API pour les ressources qu'elle couvre, le Webservice pour le reste.

Quelles données de la boutique le Webservice met-il à disposition ?

La référence du Webservice de PrestaShop 8 recense près de 80 points d'entrée. Ceux qu'un logiciel métier utilise le plus se regroupent ainsi :

  • Catalogue : products, combinations (les déclinaisons, par exemple taille ou coloris), categories, manufacturers, product_features, images.
  • Prix et fiscalité : specific_prices, specific_price_rules, groups, taxes, tax_rules.
  • Stock : stock_availables (la quantité disponible à la vente) et stock_movements.
  • Clients : customers, addresses, customer_threads pour les échanges avec le service client.
  • Commandes : orders, order_details, order_histories (l'historique des statuts), order_states, order_carriers, order_invoices, order_payments, order_slip (les avoirs).
  • Multiboutique : shops, shop_groups, shop_urls.

Les listes se filtrent dans l'adresse même de la requête : display=full ou une liste de champs pour choisir ce qui revient, filter[champ] pour restreindre, sort pour trier, limit pour paginer. La documentation précise qu'un tri sur une date exige d'ajouter date=1. En mode multiboutique, la clé précise aussi les boutiques accessibles.

Comment être prévenu d'une commande PrestaShop dès sa validation ?

Dans les documentations consultées, ni le Webservice ni l'Admin API ne proposent d'abonnement à des événements à la manière des webhooks d'autres plateformes. Deux méthodes restent ouvertes.

Un module émetteur. PrestaShop exécute des hooks aux étapes importantes, et un module peut s'y brancher. Le hook actionValidateOrder, rangé parmi les hooks de nouvelles commandes, reçoit le panier, la commande, le client, la devise et le statut. Le hook actionOrderStatusPostUpdate est appelé après chaque changement de statut, avec l'ancien statut, le nouveau et l'identifiant de commande. Le module envoie alors un message signé au service d'intégration, qui le traite à son rythme sans ralentir le tunnel de commande.

Une interrogation planifiée. Le service d'intégration demande à intervalle régulier les commandes récentes, triées par date, et les compare à celles déjà traitées. Rien n'est installé dans la boutique, mais le délai dépend de la fréquence, et chaque passage sollicite le serveur.

Le montage robuste associe les deux : le module pour la rapidité, l'interrogation pour rattraper un message perdu pendant une coupure. Le principe est détaillé dans notre définition du webhook.

Quatre situations de PME où l'on relie PrestaShop au logiciel métier

  1. Le fabricant de meubles et ses déclinaisons. Chaque modèle de table existe en trois essences et quatre longueurs. Le logiciel de production fait foi : il crée le produit et ses combinations avec la référence fabricant de chaque déclinaison, puis met à jour stock_availables à chaque fin d'ordre de fabrication.
  2. Le distributeur et ses revendeurs. Un distributeur de matériel de motoculture tient ses conditions commerciales dans son ERP. Chaque revendeur validé devient un client PrestaShop rattaché à un groupe dédié, et les remises négociées deviennent des prix spécifiques : les tarifs en ligne sont ceux de l'ERP, sans ressaisie.
  3. Le statut qui déclenche l'expédition. Paiement accepté : le hook de changement de statut prévient l'entrepôt. Colis parti : l'outil de préparation ajoute le statut « expédié » dans order_histories et complète les informations de transport de la commande (order_carriers). L'étiquette vient de l'intégration transporteur, par exemple Chronopost.
  4. L'avoir jusqu'à la comptabilité. Le service lit factures (order_invoices) et avoirs (order_slip) et les transmet à l'outil comptable ou à la plateforme de facture électronique, sujet de notre page sur la facture électronique dans un logiciel métier.

Les pièges propres à PrestaShop

  • Le format d'écriture : selon la documentation PrestaShop, depuis la version 8.1, le Webservice produit du JSON (paramètre output_format=JSON) mais ne lit pas le JSON en entrée. Créations et modifications passent par XML, ce qui alourdit le code et les tests.
  • Le serveur : sous Apache, le Webservice dépend de mod_rewrite et d'un VirtualHost en AllowOverride All. Un changement d'hébergeur mal préparé suffit à couper l'API.
  • Les modules tiers : la liste des statuts de commande se lit par la ressource order_states avant la mise en service, puis à nouveau après chaque installation d'un module de paiement ou de livraison, pour que la table de correspondance des statuts reste juste.
  • Les clés trop larges : la documentation invite à une grande prudence sur les droits d'une clé et sur les personnes à qui on la confie. Une clé par flux, avec le minimum de droits, se révoque sans tout casser.
  • Les doublons : un même acheteur peut exister en invité puis en client inscrit. Le service rapproche par adresse e-mail avant de créer une fiche dans le logiciel métier.
  • Les données personnelles : on ne transmet que les champs utiles et on fixe une durée de conservation aux journaux, selon les principes de notre guide RGPD et logiciel métier.

Module du marché, export planifié ou développement sur mesure ?

Votre situationRéponse la plus raisonnable
Logiciel de gestion répandu, flux standard (commandes, stock)Le module de l'éditeur ou de la place de marché de modules PrestaShop, testé sur une copie de la boutique
Besoin ponctuel, comme un export comptable mensuelUn export de fichier planifié, sans développement
Logiciel métier spécifique ou ancienUn service d'intégration sur mesure
Prix par client, stock multi-dépôts, plusieurs boutiquesUn service sur mesure et un module émetteur dans PrestaShop
Boutique en fin de vie, migration déjà envisagéeNe pas investir dans l'intégration : étudier d'abord les alternatives à PrestaShop

Comment YMHB Web construit et maintient l'intégration

  1. Cadrage : version de PrestaShop, modules installés, statuts de commande réellement utilisés, source de vérité de chaque donnée. Le chiffrage vient ensuite, jamais avant.
  2. Choix de l'interface : Webservice, Admin API ou les deux, selon la version et les ressources nécessaires, avec l'accès à PrestaShop isolé dans un module dédié du service pour basculer plus tard d'une interface à l'autre.
  3. Construction flux par flux sur une copie de la boutique, avec des commandes de test couvrant les cas limites : paiement refusé, commande modifiée, retour partiel.
  4. Mise en service avec une période de double contrôle, où l'ancien et le nouveau circuit tournent en parallèle.
  5. Maintenance : chaque mise à jour de PrestaShop ou d'un module passe d'abord sur la copie.

Les clés et l'hébergement sont au nom du client, le code du service lui appartient au paiement intégral, et la documentation décrit chaque flux et la procédure de reprise. L'offre complète figure sur notre page API et intégrations entre vos logiciels.

Questions fréquentes

Comment activer l'API de PrestaShop ?

Dans l'administration PrestaShop, ouvrez Paramètres avancés, puis Webservice, et activez le service web. Ajoutez ensuite une clé : PrestaShop peut la générer, ou vous en saisissez une de 32 caractères, puis vous cochez les droits ressource par ressource. Sur PrestaShop 9, l'Admin API se règle à part, dans Paramètres avancés, Admin API, où l'on crée un client OAuth2.

PrestaShop propose-t-il des webhooks ?

La documentation développeur consultée ne décrit pas de webhooks natifs dans le Webservice ni dans l'Admin API de PrestaShop. Pour pousser une commande vers un logiciel métier dès sa validation, on installe un petit module branché sur les hooks actionValidateOrder et actionOrderStatusPostUpdate, ou l'on interroge l'API à intervalle régulier. Des modules du marché ajoutent aussi cette fonction.

Peut-on envoyer du JSON au Webservice PrestaShop ?

Non, pas en écriture. Selon la documentation PrestaShop, depuis la version 8.1, le Webservice peut renvoyer ses réponses en JSON, par le paramètre output_format=JSON ou l'en-tête Output-Format, mais il ne sait pas lire du JSON en entrée. Les créations et mises à jour s'envoient donc en XML. L'Admin API de PrestaShop 9 travaille en JSON.

Le Webservice PrestaShop va-t-il disparaître ?

L'équipe PrestaShop présente l'Admin API, arrivée avec PrestaShop 9, comme destinée à remplacer à terme le Webservice, sans calendrier de retrait publié. Une intégration construite en 2026 sur le Webservice reste utilisable, mais il est prudent d'isoler l'accès à PrestaShop dans un module dédié du service d'intégration, pour changer d'interface plus tard sans tout réécrire.

Une intégration PrestaShop ralentit-elle la boutique ?

Une intégration PrestaShop peut ralentir la boutique si elle interroge l'API trop souvent ou recharge tout le catalogue en pleine journée, car le Webservice tourne sur le même serveur que le site. Les bonnes pratiques : demander seulement les champs utiles avec le paramètre display, filtrer sur les éléments récents, planifier les mises à jour massives la nuit et préférer un module émetteur à une interrogation très fréquente.

À lire aussi

Sources

  1. PrestaShop DevDocs 9, Webservice : Getting Started
  2. PrestaShop DevDocs 9, Creating access to the Webservice
  3. PrestaShop DevDocs 8, Webservice reference (liste des ressources)
  4. PrestaShop DevDocs 9, Webservice : Additional list parameters
  5. PrestaShop DevDocs 9, How to use the Admin API
  6. PrestaShop Project, Meet the PrestaShop 9 API (2024)
  7. PrestaShop DevDocs 9, Hook actionValidateOrder
  8. PrestaShop DevDocs 9, Hook actionOrderStatusPostUpdate
  9. PrestaShop DevDocs 9, Admin API : Internal authorization server (création d'un client API, client_credentials)

Prêt à démarrer ?

Décrivez-nous votre situation, pas une liste de fonctionnalités.

Réponse sous un jour ouvré, en général par téléphone. Si un outil du marché suffit, nous vous le dirons.

Premier échange sans engagementCadrage avant chiffrage

AppelerDécrire mon problème